int a = -534;
unsigned int b = (unsigned int)a;
printf("%d, %d", a, b);
打印 -534, -534
为什么没有进行类型转换?
我预计它是 -534, 534
如果我修改代码为
int a = -534;
unsigned int b = (unsigned int)a;
if(a < b)
printf("%d, %d", a, b);
它不打印任何东西...毕竟 a
小于 b
??
最佳答案
因为您使用 %d
进行打印。使用 %u
表示未签名。由于 printf 是一个可变参数函数,它无法知道参数的类型,而必须依赖于格式说明符。因此,您所做的类型转换没有任何效果。
关于c++ - 在 C 中类型转换为 unsigned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2355592/