【问题标题】:Setting a byte equal to an int and cout [duplicate]将字节设置为等于 int 和 cout [重复]
【发布时间】:2014-06-09 23:52:01
【问题描述】:

所以我知道 C++ 将一个字节定义为 typedef unsigned char。但是我不能完全理解为什么,在设置一个等于 int 的字节变量后,它会变成一个笑脸..

#include <iostream>
#include <Windows.h>
using namespace std;

int main(){
    int x = 1;
    byte y = x;
    cout << y;
}

我确信这有一个简单的解释,但我似乎找不到它。 unicode OR UTF8 的第一个字符是设置笑脸吗?

【问题讨论】:

  • 是什么阻止您查找 Unicode 或 UTF8?
  • byte 甚至不是您显示的标题中的有效类型。假设它是几乎每个人都定义的 (unsigned char),您最好了解该类型的 std::ostream 插入运算符是如何工作的。
  • char(1) 是根据 ascii 表(不是可打印字符)的 SOH(标题开始)。
  • 完全忘记了 ASCII。我知道了,非常感谢。

标签: c++ byte


【解决方案1】:

您必须使用 Windows。代码为1 的字符是命令窗口使用的Code Page 437 中的笑脸。代码点 0 到 31 与 Unicode 中的可打印字符不对应。

是的,byte 通常定义为unsigned char。当您将char 变量(有符号或无符号)发送到cout 时,它会输出一个字符而不是数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    相关资源
    最近更新 更多