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 > 1 là so 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ố 0 và true 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?