21xrx.com
2024-11-08 22:49:45 Friday
登录
文章检索 我的文章 写文章
C++中问号表达式无效的问题
2023-07-05 08:53:24 深夜i     --     --
C++ 问号表达式 无效

C++中的问号表达式是一种条件表达式,有时也称为三元运算符。它的语法形式是:

condition ? expression1 : expression2

其中,condition是一个判断条件,如果它为真(非零),则表达式的值是expression1的值,否则表达式的值是expression2的值。

然而,在某些情况下,C++中的问号表达式可能会出现无效的情况。例如,考虑下面的代码:

int a = 1;

int b = 2;

int c = 3;

int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);

此代码使用了嵌套的问号表达式来求三个数中的最大值。然而,当a=b=c=3时,max的值将会是2,而不是3。这是因为a和b的大小相等,所以第一个问号表达式将会判断为假,因此直接返回了b与c中的较大值。

解决这个问题的方法是使用if语句来代替问号表达式:

int a = 1;

int b = 2;

int c = 3;

int max;

if (a > b) {

  if (a > c)

    max = a;

  else

    max = c;

}

else {

  if (b > c)

    max = b;

  else

    max = c;

}

虽然这个代码看起来有点冗长,但它能够保证正确地求出三个数的最大值。因此,在编写条件表达式时,需要仔细考虑条件的各种情况,以保证表达式的正确性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复