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;"将通不过编译。