Đố vui về C/C++

Chọn kết quả in ra cho đoạn code dưới đây:

#include <iostream>
using namespace std;

int main() {
	
	if(sizeof(int) > -1)	{
		cout << "True" << endl;
	}
	else	{
		cout << "False" << endl;
	}
	
	return 0;
}
  • True
  • False

0 voters

3 Likes

À quên, mọi người chọn xong thì vào xem đáp án tại đây.

2 Likes

e chọn đúng rồi :smile:

2 Likes

tại sao lại như vậy ad

1 Like

nó ghi ở dưới input is empty kìa bạn

Vì sizeof là hàm trả về giá trị kiểu unsigned int, mà unsigned int thì không có giá trị âm.

sizeof(int) = 4; (100 trong nhị phân)
còn -1 khi chuyển về nhị phân thì toàn là số 1

Thế nên -1 > 4 (nhị phân)

Muốn kết quả trả về đúng thì nên ép kiểu

if( (int)sizeof(int) > -1)
14 Likes

Em nghĩ đơn giản lắm, sizeof(int) biến int gì đó chưa khai báo, mà theo em nhớ thì cứ lỗi là hàm trả về giá trị -1 nên không thể nào > -1 được. Nên false :smiley:

Bạn thử

cout << sizeof(int) << endl;

xem nó ra cái gì

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