当我使用两种方式打印 b 的值时,虽然它在控制台上应该是相同的输出,但它没有。
{{1}}
输出:
cout:{{1}}
printf:{{1}}
b 的正确值应该在 0 - >附近; 4294967296 。 cout的输出正确。但是,我不明白为什么 printf 保持错误的价值?
任何人都可以向我解释一下吗?
答案 0 :(得分:2)
您告诉printf
使用%d
格式说明符打印签名的 int值。技术上未定义的行为,但大多数实现会将无符号值转换回等效的带符号值进行打印。
您希望%u
打印无符号值。
答案 1 :(得分:1)
printf("%d\n",b);
标志, %d
会打印带符号的数字。如果您想要无符号数,请使用%u
:
printf("%u\n",b);