C语言问号表达式

发布网友 发布时间:2022-04-23 16:40

我来回答

5个回答

热心网友 时间:2022-05-02 08:25

……?……:……

式A?B:C值为:若A为真,则B;若A为假,则C。

但有一点是值得注意的,那就是问号表达式的结合性,问号表达式是从右往左的运算方向

尤其是当问号表达式嵌套使用时得注意这个问题,例如

代码:

int a=1,b=2,c=3,d=4;

printf("%d",a<b?a:c<d?c:d);

正确结果是:1

因为先执行的是c<d?c:d,会返回c,然后执行a<b?a:c

因此得到的结果就是1(可以在编译器上实验一下)

热心网友 时间:2022-05-02 09:43

你的意思就是如果M为真,也就是说M!=0,就执行a++,如果M为假,也就是说M==0,就执行a--。所以这个M就相当于判断M是否等于0;如果还看不懂的话,你可以去看下C语言书上的条件表达式的那章,很简单的,好好加油,祝你成功!~

热心网友 时间:2022-05-02 11:18

其中:a<b?a:b是一个“条件表达式”;而“c=

是赋值表达式,那么因为在C语言中,条件表达式的优先级排名13
高于赋值表达式的优先级14,因此这个语句的意思就是:当a小于b时,c=a;而当a大于或者等于b时,c=b;再翻译过来就是说这个语句执行完得到的效果就是c的值是取得a,b俩者当中较小的那个

热心网友 时间:2022-05-02 13:09

a/b?b没有写完整。
编译时是不合法的句子。
我猜想是三目运算符:
条件?真值:假值
a/b?b:a

热心网友 时间:2022-05-02 15:17

题目的意思是如果M为真,即M!=0,就执行a++,如果M为假,即M==0,就执行a--。所以这个M就相当于判断M是否等于0.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com