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

标签 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 上发现了这个。但我不明白副作用的概念和返回类型的解释方式,请任何人都可以用简单的方式阐明这个概念吗?

最佳答案

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

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

关于c++ - c++中三元运算符的副作用和返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53557226/

相关文章:

c++ - 在 C++ 中评估数学表达式的最佳方法是什么?

c++ - 使用标准 C++ 复制大型二进制文件

c++ - 类型转换模板

c++ - 为什么看起来像将int分配给int *时此分配是正确的?

c++ - 如何重写它以使其符合 C++ 标准

c++ - 1 个头文件,3 个 CPP 文件。通用函数放在哪里?

c++ - 如何使用cout将文本右对齐?

c++ - 什么时候对原始整数的右值引用是短期的还是长期的?

c++ - A*星算法帮助c++

java - 在 Mac OSX 上为 OpenCV 编译 Android JNI