在C语言中a>b>c 这样的表达式正确吗?

 我来答
道清逸森君
2020-05-13 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:587万
展开全部
c
肯定错的因为如果&&前面a是0则因为短路操作后面将不执行b也就不可能是1
d
道理一样如果||前面b是1则因为逻辑操作的短路原因a不会被执行
a
假设++操作的执行时机(取决于编译器定义的临界点,这方面c标准没有规定,看各大厂家实现)是完成逗号表达式以后,
则a和b都是0,
否则如果是赋值完成以后,则第一步a是0,x变成1,第2步b是0,a变成1,
跟题目要求不一致.
最后如果++操作是在赋值完成前,则a是1,b是2,
三种情况都不符合条件,所以不管什么编译器,a都是错的.

最后剩下b
由于c语言标准未规定临界点位置,因此如果++操作在赋值之后逗号之前则b是正确的.

也就是4个答案里acd在任何情况都是错的,
而b在某些编译器可能是对的某些编译器可能是错的.
檀伟彦禄晏
2019-04-02 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:822万
展开全部
语法上没有问题,但结果并不是进行三个值得大小比较。按照运算符优先级,会先把a>b进行计算,得到结果是一个bool值即0或者1,程序会再把这个结果值(0或者1)与c进行比较,即0>c或者1>c。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式