c语言选择结构问题,求高手详细解答

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:09:50
若以定义:a=5,b=4,c=9;,以下语句执行结果是?为什么?
a++<=4&&b--<=2&&c++?print("**a=d%,b=%d,c=#d\n",a,b,c):("###a=d%,b=%d,c=#d\n",a,b,c)

这种题目没有任何意义,完全是试卷上的题目(还得是中国的试卷),
实际开发中,谁这么写一定会被骂得,
可读性太差,完全不符合编码规范

答案:
###a=6,b=4,c=10
你最后的那个打错了应该是%不是#。
这是个三目运算符 A?B:C 若A为真,则执行B,否则执行C.
a++=5,a=6 ; b--=4,b=3 ; c++=9.c=10;(同++a不同, 若以定义:a=5 则 ++a=6,a=6)本题中,三目运算符 A?B:C 中的A为假,所以执行C,上面是答案。

我的娘艾,没见过这么复杂的,像一楼说的一样,没意义!!!!!!!
中国培养出的都是这种学生,难怪盖茨这个高手出在美国,实际应用中没这中必要!!!!!!!

这样的语句没意思,记住运算顺序就行拉。运行一下看看吧,没有哪个程序员回写这种语句,真囧

考虑优先级问题~
如果你的语句正确,放到c语言环境中运行一下就可以了,这种题目一般不会用得到的~

这是由三目运算符组成的表达式,先计算a++<=4&&b--<=2&&c++,如果结果为真则执行print("**a=d%,b=%d,c=#d\n",a,b,c)为假执行)("###a=d%,b=%d,c=#d\n",a,b,c){这个地方应该少了printf)

a++<=4结果为0,a++<=4&&b--就是0(&&运算符前面为假后面不执行)

同理a++<=4&&b--<=2&&c++结果就为0
所以结果是:###a=6,b=4,c=9(c=#d\n",a,b,c这里应该是c=%d)