c++ - 在 C 中类型转换为 unsigned

标签 c++ c casting

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/

相关文章:

java - 将列表中的对象转换为子类

c++ - 创建构造函数时没有合适的默认构造函数可用

c++ - 测试依赖于另一个类的静态函数的类

c++ - 使用 <charT> 比较单个字符

c++ - 如何在 cocos2d-x 2.1.4 中复制 Sprite 的 Sprite

vb.net - 将对象转换为具有可为空日期的 Object()

c - k&r 中的 getint 模糊定义,其中 ungetch 的奇怪行为

c - 如何使用C从文件中读取二维数组?

c - 错误 : unknown type name 'intptr_t'

将指针转换为连接