设int a=5,b=4; 则表达式 (a=b++)? ++a:b++的值是5, 该做如何解释?麻烦高手解释一下!谢谢啦!!

作者&投稿:时迹 (若有异议请与网页底部的电邮联系)
设int a=5,b=6,表达式(++a==b--)?++a:b--的值是 5还是6?理由~

最後值为7,这是一个if语句,就是
int a=5,b=6;
if(++a==b--) ++a;
else --b;
++ar的规则是先运算,所以括号中左值++a=6,a=6;
==的优先级低过--,所以先计算b--
b--的规则是先赋值,所以括号中右值b--=6,b=5;
左值6==右值6,即条件为真,执行++a,因为a值已是6, 所以加1操作後,
结果为 7

结果为7。
条件表达式为:表达式1?表达式2:表达式3。先求解表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。
先判断++a==b--是否为真,++a表达的值为6,b--表达的值为6,两者相等,为真。则将表达式++a的值作为整个表达式的取值,因为在此之前a的值已经自增变成6,再进行++a表达式的值为7。

扩展资料:
1、优先级
条件运算符优先级高于赋值、逗号运算符,低于其他运算符
例如:
⑴ m<n ? x : a+3
等价于:(m<n) ?(x) :(a+3)
⑵ a++>=10 && b-->20 ? a : b
等价于:(a++>=10 && b-->20) ? a : b
2、结合性
条件运算符具有右结合性
当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。
例如:
w<x ? x+w : x<y ? x : y
与 w<x ? x+w : ( x<y ? x : y) 等价
与 (w<x ? x+w : x<y) ? x : y 不等价
参考资料:
百度百科-条件运算符

这个表达式先判断(a=b++)这个逻辑式是否成立,在执行该判断时a=5,b=4,故该逻辑式输出0,同时该逻辑式执行b++,故b=5.因为逻辑式输出0,故执行冒号后一条语句,在执行语句过程中b=5,执行完之后b=6,也就是说b++语句在逻辑式和输出过程中被分别执行了一次,而输出地是执行语句过程中的值,因此是5.
假如a=5,b=5,那么输出结果是6,它执行了++a这条语句。

首先定义整型变量,在表达式中进行判断,若a=b++成立,进行++a运算。若不成立,进行b++运算。该题目中的表达式不成立。所以进行b++运算,答案是5。
题目中的只是点就是对++的运算优先级考察,b++的通俗解释为先拿b的值代入表达式的中,然后进行自身加1运算,希望你以后多看书,C语言刚入门的童鞋一定对知识点掌握牢固,方可熟练运用。

条件? 结果1 : 结果2

问号运算符,如果条件为真,计算结果1,否则计算结果2。

条件a=b++ 先做赋值运算,a=4;再做逻辑运算,if (a为真) 。a>0,故a为真是正确的,所以计算结果1。++a的值就是5了。

注:楼上两位不要乱来,这是赋值的=,不是==。

(a=b++)? ++a:b++
先计算括号里的,把b赋给a后b+1,所以a=4,条件判断为真,计算++a, 计算完后a=5


南木林县17312434138: 设int a=5,b=4; 则表达式 (a=b++)? ++a:b++的值是5, 该做如何解释?麻烦高手解释一下!谢谢啦!! -
木友伤湿: 这个表达式先判断(a=b++)这个逻辑式是否成立,在执行该判断时a=5,b=4,故该逻辑式输出0,同时该逻辑式执行b++,故b=5.因为逻辑式输出0,故执行冒号后一条语句,在执行语句过程中b=5,执行完之后b=6,也就是说b++语句在逻辑式和输出过程中被分别执行了一次,而输出地是执行语句过程中的值,因此是5. 假如a=5,b=5,那么输出结果是6,它执行了++a这条语句.

南木林县17312434138: 若有“int a=5,b=4,c=2;”说明后,则表达式a>b>c的值为 -
木友伤湿: 1、按照运算符优先级,“==”的优先级大于“=”,所以先计算b==c的值,应为b=2,c=3,所以这个表达式的值为假,也就是值为0.然后将b==c的值赋给a,那么执行a=b==c之后,a=0; 2、第一个方式不正确,第二个左值不能为表达式,第三个正确,第四个左值不能为表达式

南木林县17312434138: 15.设 int a=5,b=4,c=3,d=2; 则以下条件表达式的值为( D ).a > b a :c > d c :d 15.设 int a=5,b=4,c=3,d=2; 则以下条件表达式的值为( D ). a > b a :c > d ... -
木友伤湿:[选项] A. 2 B. 3 C. 4 D. 5

南木林县17312434138: 当a=5,b=4,c=2时,表达式a>b!=c的值是 -
木友伤湿: 是1,不信你试试. a>b!=c即(a>b)!=c (a>b)为真所以其值是1,c为2,1!=2所以上述表达式为真,值为1#includeint main() { int a=5,b=4,c=2; printf("%d",a>b!=c); return 0; } 不信就把以上代码运行一遍,看看是1还是0

南木林县17312434138: int a=5,b=4,c=2;,则表达式a>b!=c的值为1?不知对不对!如果不对还请大师指教!谢谢! -
木友伤湿: 对的.关系运算符运算顺序是由左到右.a>b是对的,结果为1;1!=2也是对的,所以总体值是1

南木林县17312434138: int a=5,b=4,c=3,d; d=(a>b>c);这个是什么意思d的值是多少 -
木友伤湿: d=0 因为比较符 是左运算 所以(a>b>c)这里 先a>b 得 true 即1 然后1>c 得 false 即0 所以d=0

南木林县17312434138: 27、已知 int a = 5, b = 4; 则表达式 !a ++b运行后,变量a,b的值分...
木友伤湿: 先判断a>b,得到的是5>4结果为真,也就是用值1表示,然后判断(a>b)>c,也就是1>3,结果为假,用值0表示,最后把这个假赋值给y,所以y的值为0.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网