Hàm có kiểu dữ liệu trả về là bool nhưng return là n>1

bool nt(int n){
 for(int i = 2; i <= sqrt(n); i++){
        if(n % i == 0)
        return false;
        }
        return n>1;

Các chuyên gia cho em hỏi tý, hàm nt() có kiểu trả về là bool, nhưng câu lệnh trả về là “return n> 1 tức là trả về dạng số tự nhiên => liệu có sai không nhỉ ?

Không bạn ơi,

return n > 1
tức là nếu giá trị của n > 1, thì biểu thức như thế này sẽ trả về true, ngược lại thì trả về giá trị false.

4 Likes

Đối vs kiểu bool thì có 2 kiểu trả về :
1.True hoặc False
2.=0 hoặc #0
Tham khảo kĩ tài liệu cơ bản !

2 Likes
  1. n > 1so sánh luận lý, sẽ luôn có kết quả là true (1) hoặc false (0).
  2. Cho dù kiểu kiểu số được trả về thì vẫn đúng, vì kiểu bool trong C/C++ (và một số ngôn ngữ khác) tương đương với kiểu số: số bằng 0 là false, số khác không là true.

Bản chất khi lưu trữ trong bộ nhớ thì giá trị false lưu thành số 0true sẽ lưu thành số 1.

#include <iostream>

bool f1(int n){
    // phép toán so sánh luận lý, trả về true khi n lớn hơn 1.
    return n > 1;
}
bool f2(int n){
    // trả về số, tự quy đổi sang kiểu luận lý, trả về true khi n khác 0
    return n;
}

int main(){
    std::cout << f1(0) << std::endl;
    std::cout << f2(12) << std::endl;
    return 0;
}
4 Likes

Cảm ơn các bạn nhiều

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?