c++ - 为什么字符 'a' 没有自动转换为 97?

标签 c++ integer character inputstream

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;

我在输入 1 处写了 'a',在输入 2 处写了 'a'。

Ouput is like this.
input1 : a
input2 : a
a
-858993460

我很好奇...'a' 章程在 12 月是 97。为什么打印-858993460? 'a' 不会自动转换为 97?为什么?

最佳答案

a 作为字符串,不能按照 std::cin 规则转换为 int。考虑一下:a 不是以 10 为底的有效整数。std::cin 将无法转换 string "a"int

它打印 -858993460 的原因是因为 int 没有初始化,所以它可以打印任何东西,也可以不打印任何东西,或者做任何它想做的事情(查找未定义的行为).

尝试这样的事情:

char input2_chr;
std::cin >> input2_chr;
int input2 = input2_chr;

关于c++ - 为什么字符 'a' 没有自动转换为 97?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13362343/

相关文章:

c++ - 如何在C++中覆盖BlueprintNativeEvent函数?

c - 谜题: "[] is symmetric"?

c++ - 将 char 用于小整数 (C++)

java - Java Char 数组有什么用?

php - Wordpress 将 "&&"更改为 "&#038;&"

c - 在 C 中读取字符串时出现访问冲突错误

c++ - OpenCV 2.4 CascadeClassified detectMultiScale 参数

c++ - 为 vector<double> 类重载 *, +, -' 运算符

c++ - 插入卡在运行时的 unordered_map

为字符串 "008949679851"抛出 java.lang.NumberFormatException