C 中如下多个条件表达式嵌套的语句怎么理解

2021-03-12 09:52:36 字数 2157 阅读 4138

1楼:匿名用户

c=a-b?a-3?b:b-a:a;

是说这一句吧?

这是一个条件运算符的语句;包含两个条件运算符和一个赋值运回算符。

从两个方面答来解释:运算符优先级,运算符结合性。

优先级:条件运算符高于赋值运算符,二者的结合性都是从右向左。

上面的语句相当于:c=a-b?(a-3?b:b-a):a;

即按照结合性,先计算右面的条件运算表达式;再按照优先级,赋值。

结果是3,4,1

2楼:☆答案在风中

c=(a-b)?(a-3?b:b-a):a;

******************************写成这样你就好理解了

先判断a-b 不为0 即c= 分号前面的(a-3?b:b-a)这里 a-3为0 所以表达式的版

值为b-a=1 所以()的值为1 那c的值就权是1了随意输出3 4 1

3楼:匿名用户

晕,这个表

bai达式好怪异.

a-3?b:b-a 先算这个du,如果a-3为真zhi,那么表达式的dao值版为b否则是b-a 因为a=3,b=4,所以

权a-3为假,b-a的值为1,所以这个表达式的值为1a-b?1:a 如果a-b为真,则表达式的值为1,否则为a的值.a-b得-1,为真,最后表达式的值为1。

c=1;

最后的输出结果为:3,4,1

4楼:csu_青苔

多重条件表达式计算顺序为自右往左。

在c++中,表达式可以嵌套是什么意思? 举个例子

5楼:倒霉熊

#include

void main( )

6楼:匿名用户

【表达式】:是

bai由数字du、算符、数字分

zhi组符号(括号)、自由变量和约dao束变量等以能求内得数值的容有意义排列方法所得的组合。

int a=3,b=4,c=0;

1、算术表达式:算术表达式是最常用的表达式,又称为数值表达式。它是通过算术运算符来进行运算的数学公式。如 a*b 为一个表达式,结果为12.

2、逻辑表达式   逻辑运算的结果只有两个:true(真)和false(假)。

如 a>b 为表达式,结果为false。

【语句】:表达式加上分号“;”组成语句。

【表达式嵌套】:简单理解就是表达式里有表达式。如,c=a+a*b 为一个表达式,但这个表达式里还有另一个表达式a*b。

条件运算符的嵌套

7楼:匿名用户

条件运算符的语法为:

(条件表达式)?(条件为真时的表达式):(条件为假时的表达式)

例如:x=a成一个表达式。它是c++中唯一一个3元运算符,它们之间用“?

”和“:”隔开。上例中,把a和b中较小的值赋给x。

该例是if...else语句的一个替代:

if(ay?"greater than":x==y?"equal to":"less than"

它等价于:

(x>y)?"greater than":((x==y)?"equal to":"less than")

当x>y时,值为"greater than",x==y时,值为"equal to",否则,值为"less than"。条件运算符的嵌套可读性不够好。

在一个条件运算符的表达式中,如果后面两个表达式的值类型相同,均为左值,则该条 件运算符表达式的值为左值表达式。例如:

int x=5;

long a,b;

(x?a:b)=1; //ok:因为a和b都是左值

(x?x:a)=2;//error:x和a不同类型。编译器将其解释为(1ong)x和a

(x==271:a)=3; //error:1非左值

"(x?a:b)=1"表示当x为0时,b=1,否则a=1。

这里的括号是必须的,否则将被看作x?a:(b=1)。

"(x?x:a)=2”中,尽管x是左值,a也是左值,但x与a不同类型,条件运算符要对其进行操作数的隐式转换,使之成为相同的类型。

任何被转换的变量都不是左值。

->在c中,条件运算符是不能作左值的,所以"(x?a:b)=1;"将通不过编译。