c - 让 int8_t num = -1。为什么 printf ("%u", num) 溢出到 T_MAX32 而不是 T_MAX8?

标签 c

int8_t 是一个 8 位有符号整数。因此,它的值在 [-128...127] 范围内的任何位置。

int8_t num = -1;
printf("%u",num);

输出:

4294967295

有人可以给我提示吗?

最佳答案

您的程序行为未定义。

%u 不能用作 int8_t 的格式说明符,因为它是有符号类型,而 %u 用于无符号类型。

改用 %d,并依靠 C 标准保证自动将 num 提升为 int 类型。

关于c - 让 int8_t num = -1。为什么 printf ("%u", num) 溢出到 T_MAX32 而不是 T_MAX8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137668/

相关文章:

c - 网络上是否有任何交互式工具可以理解通用代码库?

c - 用于转储队列统计信息的 Asterisk 模块

ios - 在iOS中使用C从项目目录获取文件路径

c - 为什么程序在递归地从数组添加到队列时崩溃?

c - 有没有一种方法可以跳转到由 C 中的变量定义的行?

c++ - 直接访问硬盘?

c++ - 打印最大的单精度 float

c - pthread,Windows 上的 pthread,pthread 故障,链接器错误,msvc 2008/2010 上的 pthread 链接器错误

c - 将 'libconfig' 构建为 32 位库

c++ - C++ 中的 strtok() 模拟