gpt4 book ai didi

c++ - 为什么固定宽度的整数打印出字符而不是整数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:59 26 4
gpt4 key购买 nike

给定以下代码。

#include <cstdint>
#include <iostream>
#include <limits>

int main()
{
int8_t x = 5;
std::cout << x << '\n';

int y = 5;
std::cout << y;

std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();

return 0;
}

我的输出是 三叶草5。如果定宽整数是整数,为什么要输出其数字的 ASCII 字符符号?

编辑:刚刚发现这种行为只发生在 8 位定宽整数上?这是编译器行为吗?

最佳答案

好吧,从某种意义上说,它们是整数,您可以用它们进行 8 位整数运算。

但显然在您的系统上,int8_t实现为 typedefsigned char .这是完全合法的,因为 signed char s 也是整数,但自 operator<< 以来给出了意想不到的结果对于 signed char s 打印它们的字符符号而不是它们的数值。如果有人试图打印 signed char,其他任何事情都会很奇怪.

如果您想查看 int8_t 的数值, 只是转换到 int打印前。

关于c++ - 为什么固定宽度的整数打印出字符而不是整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com