我对“int”类型(unsigned int、long int、long long int)有以下疑问。
当我们在 int 和它的 flavors 之间做一些操作(*,/,+,-)时(假设是 long int) 在 32 位系统和 64 位系统中,“int”发生隐式类型转换
例如:-
整数 x ; 长整型 y = 2000;
x = y ; (较高的分配给较低的一个数据截断可能发生) 我期待编译器为此发出警告,但我没有收到任何此类警告。 这是因为这里的“x”发生了隐式类型转换。 我正在使用带有 -Wall 选项的 gcc。 32 位和 64 位的行为是否会发生变化。
谢谢 阿皮特
最佳答案
-Wall
不会激活所有可能的警告。 -Wextra
启用其他警告。无论如何,你所做的是一个完全“合法”的操作,并且由于编译器在编译时不能总是知道可能被“截断”的数据的值,所以它不会发出警告是可以的:程序员应该已经知道事实上,“大”整数不能适合“小”整数,所以这通常取决于程序员。如果您认为您的程序是在没有意识到这一点的情况下编写的,请添加 -Wconversion
。
关于c - 关于 "int"flavors 操作的疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3234479/