有关C语言中 a--的问题。答案跟编译器不一样

右边是题目。左边是编译器做的。题目的答案是 4 。 但是CFREE出来的答案是5 . 究竟哪个对。为什么?!
最新回答
深秋叶落黄

2024-09-21 08:11:58

5。
首先你应该分清a++,与++a,--a的区别
标准C规定,表达式a++的右值等于a的右值; (a++的右值为原a的右值)
++a的右值等于a的右值加1后的值

a++与++a都是先执行 a+1,但前者的右值还不变,要等运行完此语句,a的值才变为原来的值加1,
后者是已经改变了a的值

程序分析,程序是顺序执行,先会判断if条件,判断完if条件之后a变为了6,再运行else中的,最后结果为 5

(答案不一定是正确的,说不定出题的老师没有自己上机调试,一时疏忽呢)
梦中你是主角

2024-09-21 14:51:04

a++>5是先比较a>5,然后在++所以这个输出结果应该是4
步信停云

2024-09-21 12:28:04

a++,++在后面,于是先比较a与5的大小,而后a=a+1;
--a,--在前面,于是先a=a-1,而后打印a。
finally a=5
我不会写诗

2024-09-21 15:39:51

5 因为a++执行完后a=6 --a 后a=5
追问
a++执行完后, a==6 ,那就是  a > 5吧。。 那为何还会执行 --a 呢。。
追答
不是 执行完if以后才是a=6,之前a还是等于5
a++是先取出a,再加1,++a先加1后取a,
可以采纳吗