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

书上给的答案是(a=b)>c,可是讲到优先级那里,却说比较运算符的优先级高于赋值运算符,这不是很矛盾吗?
哪位好心的专业的帮忙解决下。

a=b>c是先比较后赋值,而(a=b)>c是先赋值后比较
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-20
先比较,再赋值。
在Microsoft Visual C++ 6.0下试了试:

void main(void)
{
int a, b, c, d;

a = 5;
b = 4;
c = 7;

a = b > c;
printf("a = %d\n", a);

a = 2;
d = 1 ? (a = b > c) : 3;
printf("a = %d\n", a);
}

结果是
a = 0
a = 0本回答被网友采纳
第2个回答  2014-01-20
肯定是先比较,你也可以上机调试一下

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

C语言的问题:a=b>c;是什么意思
首先不能按数学的思维来思考这道题目,在C语言中>(大于)的优先级高于=(赋值),所以先看b>c这个,如果b>c为真,也就是b真正大于a的时候,那么b>c这个式子的值为1,然后把1赋值给a,也就是a=1了。如果b>c为假,也就是说实际上b并不大于c,那么b>c就为0,然后把0赋值给a,也就是a=...

c语言中如何理解a== b> c?
1、如果b>c为假,则把0赋值给a。2、如果b>c为真,则把1赋值给a,

c语言关系运算符和赋值运算符谁的优先级高?
等价于a=(b>c)关系运算的优先级高于赋值运算。

初学C语言,请大家帮我看看这个问题,输出结果不对啊
结果是正确的,有几个要点:1 、像类似 a=b=c 的赋值语句是从右侧往左进行的,即先c赋值给b,b再赋值给a 2 、== 表示判断时候相等,不是赋值 3 、printf函数格式化参数的判别顺序是从右向左 结合上面几点,打印结果说明如下:(1) 最右边的d 是因为你的printf的最后一个格式化串写错了(你...

c语言中,逻辑运算和赋值运算哪个优先级高?
b = c; a = b;优先级最低的是逗号运算符,这比较容易理解,因为当一条语句由多个表达式组成时,逗号在这里相当于分号的功能。在混合优先级判断中,赋值运算符是比较棘手的。考虑下面的例子,它执行的功能是拷贝一个文件:while (c=getc(in) != EOF)<加个括号> putc(c,out);“while”语句中...

C语言中,语句 a=b=c 的赋值顺序是怎样的?
从右到左赋值,先将c的值给b,然后在将b的值给a

C语言中A=B<<C是怎么一个运算顺序??
B左移C位,然后结果赋给A 例如:B为二进制数00000001 C为3 则,通过A=B<<C运算,A为二进制数00001000

c语言为什么a> b> c的赋值为0
在C语言中,表达式 a > b > c 并不会按照直观的方式进行比较和赋值。这是因为C语言中的比较操作符 > 是从左向右结合的,但并不意味着这个表达式按照直观的方式进行多次比较。让我们来分析这个表达式的求值过程:首先,表达式 a > b 被计算。如果 a 大于 b,则结果为1(真),否则结果为0(假...

c语言,位符合赋值运算子, =,&=,^=!=, 分别什么含义啊?
a+=b其实就是a=a+b,只不过你说的是逻辑运算子,道理是一样的. <<是左移,>>是右移,&是与,|是或,^是异或,都是针对2进位制运算的. C语言中算术运算子和赋值运算子哪个优先顺序高? 算术运算子高! 表示式优先顺序()(小括号) [](阵列下标) .(结构成员) ->(指标型结构成员)↑最高!(逻辑非) .(位...

相似回答