c - 关于 "int"flavors 操作的疑问

标签 c linux gcc gcc-warning

我对“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/

相关文章:

C 编程和 OpenCV(如何从文件中读取图像并将其加载以在 openCv 中进行进一步处理)

c - 在 C 中将 int 移位 32 次

c - 基于 Unix 的 shell 在退出时关于子进程的默认行为?

linux - readelf 命令中 mips 标志的含义?

c - 父 c 中 wait() 的目的

c - 如何在 C 中以有效的方式替换字符串

c++ - Eclipse CDT 控制台输出未显示在带有路径的调试中,也未显示在没有路径的运行中

gcc - 了解新的 gcc 序言

c++ - 专门化非模板类的模板化构造函数

c - 从文件中读取位并将其存储到 C 中的 char 数组中