【发布时间】:2015-11-12 20:43:06
【问题描述】:
我有以下 C 代码,我必须理解为什么结果是一个相当大的正数:
int k;
unsigned int l;
float f;
f=4; l = 1; k = -2;
printf("\n %f", (unsigned int)l+k+f);
结果是一个非常大的数字(大约 40 亿,最大为 32 位整数),所以我怀疑它与有符号负整数(二进制补码)的表示有关,如果我们看它看起来相当大未签名。
但是我不太明白为什么它会以这种方式运行,以及浮动与这种行为有什么关系(如果我删除它,它就会停止这样做)。有人可以解释它是如何做到的吗?将导致此结果的数字相加时会发生什么过程?
【问题讨论】:
-
查找与
printf相关的类型强制 -
OP:阅读一本关于 C 的好书。SO 不是一个一站式商店,因为你懒惰自己做研究并找出答案阅读 C 标准,又名n1570
标签: c