use*_*636 3 c++ integer inputstream character
char input1;
std::cout << "input1 : ";
std::cin >> input1;
int input2;
std::cout << "input2 : ";
std::cin >> input2;
std::cout << input1 << std::endl;
std::cout << input2 << std::endl;
return 0;
Run Code Online (Sandbox Code Playgroud)
我在input1写了'a',在input2写了'a'.
Ouput is like this.
input1 : a
input2 : a
a
-858993460
Run Code Online (Sandbox Code Playgroud)
我好奇......'一个'章程在十九月份是97.为什么打印-858993460?'a'不会自动转换为97?为什么?
rig*_*old 18
a,作为字符串,不能通过int以下规则转换为a std::cin.试想一下:a是不是在基地10有效的整数std::cin将无法转换字符串 "a"成int.
它打印的原因-858993460是因为int它没有被初始化,所以它可以打印任何东西,或者什么也不打印,或者做任何它想要的东西(查找未定义的行为).
尝试这样的事情:
char input2_chr;
std::cin >> input2_chr;
int input2 = input2_chr;
Run Code Online (Sandbox Code Playgroud)
我认为输入完全失败了,你看到的值是未定义行为的结果(input2从未被写入).
如果您尝试读取整数,则字符"a"无效,因此>>操作员不会接受该字符.
您似乎在某种程度上期望输入应该将字符转换为该字符的ASCII代码,以便为您提供所请求的整数类型的结果.语言不支持这种推理.
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |