【问题标题】:What are the side effects and return type in ternary operator in c++? [duplicate]c++中三元运算符的副作用和返回类型是什么? [复制]
【发布时间】:2023-03-21 09:23:01
【问题描述】:
#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 上发现了这个。但是我不明白副作用和返回类型的概念,在那里解释的方式,请任何人都可以用简单的方式清除这个概念吗?

【问题讨论】:

  • 三元运算符没有副作用(除非你自己把它们放在那里)所以不用担心这个问题。

标签: c++


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 2011-04-03
    • 2020-12-07
    • 2010-10-25
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    相关资源
    最近更新 更多