三元运算符的意外结果
Unexpected result from ternary operator
我想了解三元运算符在 C++ 中的工作原理。
我希望看到两个打印语句的输出相同,但第二个打印语句输出 49。
这是为什么?
#include <iostream>
using namespace std;
int main()
{
int test = 0;
cout << "First character " << '1' << endl;
cout << "Second character " << (test ? 3 : '1') << endl;
return 0;
}
输出:
第一个字符 1
第二个字符 49
“1”已转换为表示“1”的 ASCII 码的整数。三元运算符应该有两个相同类型的值。不能有 3(整数)和 '1'(字符)。这就是转变发生的原因。如果隐式转换无法发生,则会产生编译器错误。
我想了解三元运算符在 C++ 中的工作原理。
我希望看到两个打印语句的输出相同,但第二个打印语句输出 49。
这是为什么?
#include <iostream>
using namespace std;
int main()
{
int test = 0;
cout << "First character " << '1' << endl;
cout << "Second character " << (test ? 3 : '1') << endl;
return 0;
}
输出:
第一个字符 1
第二个字符 49
“1”已转换为表示“1”的 ASCII 码的整数。三元运算符应该有两个相同类型的值。不能有 3(整数)和 '1'(字符)。这就是转变发生的原因。如果隐式转换无法发生,则会产生编译器错误。