C:确认简单的算术输出

时间:2011-11-01 05:46:28

标签: c math int undefined unsigned

我是否可以确认以下C代码为b:

提供了未定义的结果
unsigned a = 0;
int b = a - 1;

3 个答案:

答案 0 :(得分:6)

(§6.3.1.3/ 3):“......结果是实现定义的,或者引发实现定义的信号。”

在典型的二进制补码硬件上,我希望结果为-1。

请注意,结果是实现定义的,而不是未定义的。

答案 1 :(得分:0)

无符号分配给 int 时会发生隐式类型转换。所以,它没有未定义的行为。

答案 2 :(得分:0)

它总是给出值

 a=0,b=-1  

仅当您想在在线c compiler

中查看时