0
#include <stdio.h>
int main()
{
char c = 255;
if (c > 128)
{
printf("This is unsigned number %d\n", c);
}
else
{
printf("This is signed number %d\n", c);
}
}
在这种情况下,当我们初始化具有范围从-127到128的带符号字符时会发生什么?它没有环绕,因为它是未定义的行为,但真正发生了什么?C中的类型转换混淆
我得到-1的结果,但如何和为什么?
你在问未定义行为会发生什么?真的吗? –
这不是未定义的行为,而是定义了实现。所以这取决于你的编译器。 –
@JensGustedt将char传递给%d,好吗? –