int main()
{
printf("Hello World\n");
int x = -10;
unsigned y = 25;
float z = x*y;
printf("x=%d,y=%u,z=%f\n",x,y,z);
return 0;
}
当我运行上述代码时,我得到了以下输出结果:
我的问题是: 对于第二个printf语句,我本来希望得到的结果是你好世界
x=-10,y=25,z=4294967046.000000
z=(float) ( (unsigned)(-10)*25 ) = (float) (4294967286 x 25) = (float) 107374182150
,那么我错在哪里了呢?
unsigned
是 int、float 还是遵循什么数据类型? - TechGeek49unsigned
限定符 变成了unsigned int
类型。详见 C11 6.7.2。 - paxdiablounsigned int
更合适? - TechGeek49unsigned int
,但是在类型说明符和类型之间存在一些脱节。 - paxdiablo