是否有一个gcc标志来捕获整数截断?

Sea*_*her 5 c gcc floating-accuracy

gcc当我尝试将double值放入int变量时,是否有一个标志来表示警告/错误?目前,我有-Wall -Wextra -Werror设置,但我还是不明白,当我(例如)传递一个警告doubleint的参数,即使我失去了信息.

leg*_*s2k 8

您可以使用该-Wconversion选项.从GCC的手册(强调我的):

警告可能会改变值的隐式转换.这包括实数和整数之间的转换,如x为double时的abs(x); 有符号和无符号之间的转换,如无符号ui = -1; 和转换为较小的类型,如sqrtf(M_PI).不要警告显式转换,如abs((int)x)和ui =(unsigned)-1,或者如果转换没有像abs(2.0)那样改变值.可以使用-Wno-sign-conversion禁用有关有符号和无符号整数之间转换的警告.

这是状态提升GCC 4.8.2,而从GCC 4.9.0你也可以使用-Wfloat-conversion相同的.