我使用Eclipse CDT - 在Windows 7上跨G ++编者(MinGW的/ MSYS),这是我的代码:的int64_t溢出问题
int64_t y = 1024 * 1024 * 1024 * 4;
std::cout << "type id: " << typeid(y).name() << "; value: " << y << "; size of y: " << sizeof(y) << std::endl;
(IDE会警告: “整数溢出”。)
输出是:
"type id: x; value: 0; size of y: 8"
我不明白,为什么Y的大小为8个字节,但值为0
感谢您的帮助。
'1024'类型为'int',它可以是也可以不是32位,可以是也可以不是4个字节。 –
在“Eclipse CDT,Cross G ++ Complier”中,“int”的大小没有“可能或不可能”,并且它总是一些不变的数字,最可能是4个字节。但是,是的,C++标准没有指定“int”的大小,由编译器决定。 –
一个小点:外括号是不必要的:'int64_t y =(int64_t)1024 * 1024 * 1024 * 4;' –