标签: c math int undefined unsigned
我是否可以确认以下C代码为b:
unsigned a = 0; int b = a - 1;
答案 0 :(得分:6)
(§6.3.1.3/ 3):“......结果是实现定义的,或者引发实现定义的信号。”
在典型的二进制补码硬件上,我希望结果为-1。
请注意,结果是实现定义的,而不是未定义的。
答案 1 :(得分:0)
将无符号分配给 int 时会发生隐式类型转换。所以,它没有未定义的行为。
答案 2 :(得分:0)
它总是给出值
a=0,b=-1
仅当您想在在线c compiler