为什么printf和cout为此无符号int提供了不同的输出
Why does printf and cout gives different output for this unsigned int?
当我使用两种方式打印 b 的值时,我应该在控制台上的输出相同,但不是。
unsigned int b = -1000;
std::cout << b << std::endl;
printf("%dn",b);
输出:
cout: 4294966296
printf: -1000
b 的正确值应围绕 0-> 4294967296 。 COUT的输出正确。但是,我不明白为什么 printf 保持错误的值?
任何人都可以向我解释吗?
您正在告诉printf
使用%d
格式指定器打印签名 int值。技术上不确定的行为,但是大多数实现将将未签名的值转换回等于签名的值以打印。
您要%u
打印无符号值。
printf("%dn",b);
由于%d
标志而打印一个签名的号码。如果您想要一个无符号号码,请使用%u
:
printf("%un",b);
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- std::cout输出int时出现编译错误
- C++ 中文件输入输出中的长长 v/s int
- 我从int x[3]得到的一个非常奇怪的输出;
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 在MSDOS编译器上,用大于最大值的值初始化int时输出混乱
- 有没有一种简单的方法可以将矢量 int 集转换为字符串输出?
- 基本 int 数组提供意外输出
- 为什么printf和cout为此无符号int提供了不同的输出
- Int 输出与给定值不对应
- 为什么没有"int"类型声明时输出不同?
- 当用户输入int变量的字符串时,输出
- 如何使用字符获取多个输入,使用 int 获取多个输出?C++
- unsigned int/signed int/long-long:无法解释的输出
- 矢量<int>的赋值和输出向量
- 程序的输出,在 C++ 中,&int 到 char* 转换
- 将 64 位 int 作为输出传递到 32 位内联 asm
- 无法输出 int 作为 sizeof() 的结果
- c++输入char类型,输出int类型
- C/ c++程序将输出(int)返回给其他程序