【问题标题】:Assign a value to char/unsigned char为 char/unsigned char 赋值
【发布时间】:2019-10-21 19:57:00
【问题描述】:

如何为 char/unsigned char 赋值?我试着用这段代码来做

#include <iostream>

int main() {
    char a;
    unsigned char b;
    std::cout << "Enter a and b: " << std::endl;
    std::cin >> a >> b;
    std::cout << a << ":" << b << std::endl;
}

但它只打印变量 a 的前两个字符(我知道 char 可以是一个字节值,但我不知道为什么它不想接受我的数字并将其拆分如果大于 9)

【问题讨论】:

  • 请提供示例输入以及您期望的输出与您得到的输出。
  • 代码工作正常here。你能更好地描述你想要什么以及为什么不是吗?
  • 你输入了什么,程序打印了什么,你期望什么?如果我输入 97,我会得到 9:7。
  • 变量a的前两个字符是什么意思?变量a 只能容纳一个字符。这个“我的号码”是什么,为什么你期望char 类型的变量“接受”它,不管这意味着什么?
  • 如果我输入例如“12”我得到“1:2”并且找不到原因。输入应该是下一行的“12”和“-40”,预期的输出应该是“12:-40”。对不起,我没有说我想要什么

标签: c++


【解决方案1】:

我知道 char 可以是一个字节值,但我不知道为什么它不想接受我的数字并在它大于 9 时将其拆分

这里好像有误会。

char 可以保存一个字节,但是当你使用时

std::cin >> a;

只有一个字符被读入a,而不是代表一个字节的整数值。

如果您的输入是95,则只有数字'9',而不是整数值95,被读入a


如果aint 类型的变量,

std::cin >> a;

会将95 读入a。当然,那么就不需要了

std::cin >> a >> b;

这将期望a 的输入和b 的输入由一个或多个空格字符分隔。

您可以通过简单的赋值或显式转换将int 转换为char

int i;
char a;
std::cin >> i;  // Provide 95 as input.
a = i;          // a is now the character that corresponds to 95 in the
                // encoding used in your platform.

【讨论】:

  • 也许提到 if a 的类型为 int,那么值 95 已存储在变量中(以及为什么/有什么区别)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 2013-09-23
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多