C ++中三元运算符的副作用和返回类型是什么?

时间:2018-11-30 12:04:11

标签: c++

#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

第二个字符1

但输出是

第一个字符1

第二个字符49

在阅读三元运算时,我在geeksforgeeks上发现了这一点。但我不了解副作用和返回类型的概念,请问有人能以简单的方式清除它吗?

1 个答案:

答案 0 :(得分:4)

the conditional (or ternary) operator的结果类型是两个分支的 common 类型。在您的情况下,它是int(因为char可以很容易地隐式转换为int,但并非总是相反)。如果没有任何常见类型,那就是错误。

您得到49,因为它恰好是系统为'1'(ASCII)编码的值。