问号表达式,问号表达式的求解顺序

http://www.itjxue.com  2023-01-16 00:33  来源:未知  点击次数: 

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

(责任编辑:IT教学网)

更多

推荐Access文章