30/09/2018, 19:56

Đố 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

... viết 21:59 ngày 30/09/2018

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

Ideone.com

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

17XGOD viết 21:58 ngày 30/09/2018

e chọn đúng rồi

Nagato viết 22:07 ngày 30/09/2018

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

17XGOD viết 22:04 ngày 30/09/2018

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

... viết 22:03 ngày 30/09/2018

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)
The Pr Ince viết 21:59 ngày 30/09/2018

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

... viết 22:01 ngày 30/09/2018

Bạn thử

cout << sizeof(int) << endl;

xem nó ra cái gì

Bài liên quan
0