【发布时间】:2014-08-01 19:40:50
【问题描述】:
我正在尝试通过程序发送无符号字符,并且我希望能够通过标准输入(即 std::cin)获取数字。例如,当我输入 2 时,我希望它发送☻(无符号字符 2)。当我使用代码时:
std::cout << "Enter values: ";
{
unsigned char d;
unsigned char e = 2;
std::cin >> d;
WriteFile(file, &d, 1, &written, NULL);
std::cout << "d= " << d << "\n";
std::cout << "e= " << e;
}
我明白了
Enter values: 2
d=2
e=☻
谁能告诉我为什么 d 被错误地解释为 unsigned char 50 而 e 被正确解释为 unsigned char 2?
当然,在您解释之后,您可以解释如何获取用户输入并将其转换为我发送 2 而不是“2”。
【问题讨论】:
-
2是值为 2 的整数,而不是字符'2' -
这也与签名无关。
-
e非常正确地具有值2,而d确实也正确地具有值'2'。这些是完全不同的价值观。 -
重复的唯一原因是该问题也显示出完全不了解整数和字符文字之间的区别。
标签: c++ stdin unsigned-char