c语言中 a=5 b=4 c=3 a>b>c是正确的吗 这个算试是从左往右开始的吗 假设是我的理解

c语言中 a=5 b=4 c=3 a>b>c是正确的吗 这个算试是从左往右开始的吗 假设是我的理解是a大于b为真 所以得1 1小于c 所以为0 这样理解对吗? 求大神帮忙 重赏

结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合 方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。比较运算也是左结合的,所以你的理解是正确的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-15

C语言中这样写是能够编译通过的,他的计算从左往右,相当于(a>b)>c,你的理解是正确的。

但在编程时不建议写这样的表达式,容易让人产生误解。

第2个回答  2015-09-15
C语言中>符号结合性是从左向右的,所以结果是0
第3个回答  2015-09-15
a>b>c结果必然为0,在C语言里面, a>b 成立,则这个值就为1 ,然后会得到 1 > c ,很显然,1并不大于c,所以最后执行出来的结果只能为0,如果想要这样的式子成立,需要这么写:
a > b && b > c
这样就行了。
不懂继续追问!
第4个回答  2015-09-15
虽然我不是大神,但是我的理解与你一致。

c语言中 a=5 b=4 c=3 a>b>c是正确的吗 这个算试是从左往右开始的吗 假...
比较运算也是左结合的,所以你的理解是正确的。

C语言a=5,b=4,c=3.if(a>b>c)=?
因a=5,b=4,故a>b为1,a>b>c即用a>b的结果与c比较,为1>c为0,即a>b>c为0,为假。

main(){ int a=5,b=4,c=3,d=2; if(a>b>c) printf(“%d
C语言中不能用 a > b > c 这样的表达式来判断a, b, c 之间的大小。正确的表达式应为: if (a > b && b > c)具体可以找一本C语言基础的书籍看看

c语言问题 a=3,b=5, c=a,a=b,b=c 结果是什么
从左往右算。写程序算一算就信了:include <stdio.h> include <stdlib.h> main(){ int a,b,c;a=3,b=5,c=a,a=b,b=c;printf("a=%d b=%d c=%d\\n",a,b,c);} 输出:a=5 b=3 c=3

c语言逻辑运算 if(a>b>c)错误
if (a > b > c)确实是错误的,原因在于:表达式a > b > c会依次从左到右进行计算,即相当于(a > b) > c 先计算 a > b,如果成立,会返回1, 否则会返回0; 之后再比较1 > c或者 0 > c这样就导致和你想要的结果不同 例如: a=4,b=3,c=2 则a > b返回1, 1 > c返回0,a...

c语言【设a=6,b=5,c=4,则a>b>c=0】是为什么…
a > b > c 从左到右求值。a > b 求值得到真值,一般就给一个1表示,然后再求 1 > c ,很显然 1 < 4,所以得到0值。所以 a > b > c == 0

C语言的问题 x=(a=3,c=5,b=4) 这是什么意思?X永远是等于最后面的数字...
是的,逗号运算,只取最后的结果。

int a=3,b=4,c=5;执行表达示,a++>&&c--&&++c后,a,b,c的值
例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c; 则执行结果就变成a = b = c = 5,不能达到预期的...

在C语言中a>b>c 这样的表达式正确吗?
语法上没有问题,但结果并不是进行三个值得大小比较。按照运算符优先级,会先把a>b进行计算,得到结果是一个bool值即0或者1,程序会再把这个结果值(0或者1)与c进行比较,即0>c或者1>c。

我在自学C语言的过程中遇到这么一个问题:a=b>c,是先赋值还是先比较...
a=b>c是先比较后赋值,而(a=b)>c是先赋值后比较

相似回答
大家正在搜