问号表达式,问号表达式的求解顺序
C语言问号表达式
……?……:……
式A?B:C值为:若A为真,则B;若A为假,则C。
但有一点是值得注意的,那就是问号表达式的结合性,问号表达式是从右往左的运算方向
尤其是当问号表达式嵌套使用时得注意这个问题,例如
代码:
int a=1,b=2,c=3,d=4;
printf("%d",ab?a:cd?c:d);
正确结果是:1
因为先执行的是cd?c:d,会返回c,然后执行ab?a:c
因此得到的结果就是1(可以在编译器上实验一下)
C语言中“?”和“:”是什么意思????
“?”在C语言中表示疑问。
“:”在C语言中表示判断的结果选择。
【例子】
(ab)?
解释:判断表达式是否能够通过,如果能通过,那么说明才能进行之后的操作,如果不能通过,就选择后一种结果。
(ab)?y:n
解释:如果A大于B,那么选择Y的结果,如果A小于B,那么选择N的结果。
C语言中:x>y?x:y; 是什么意思?问号和冒号的作用是什么?
如果xy,就把x的值赋给z,否则把y的值付给z。
可以把z=xy? x : y理解为
if(xy){
z=x;
}else{
z=y;
}
扩展资料:
三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。
对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a ? b : c ? d : e将按a ? b : (c ? d : e)执行。
可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为条件是否成立,条件成立为结果1,否则为结果2。
c++语言中mn?m :n 是什么意思?
没有这种写法的,m、n之间有运算符。
例如:mn?m:n;
如果m小于n,则值为m,否则值为n
mn?m:n;
如果m大于n,则值为m,否则值为n
m*n?m:n;
m*n不等于0,则值为m,否则值为n
m||n?m:n;
m、n中至少又一个不为0,则值为m,两者都为0,则值为n
mn?m:n;
m、n都不为0,则值为m,否则值为n