C语言中 a=b==c怎么理解

假如 int a=1,b=2,c=3, a=b=c,a=b==c,a==(b=c),a==(b==c),它们的值是多少?应该怎么理解?

“=”是赋值符,把c的值赋给b赋给a,最后a、b、c的值都相等,“==”是判断符;

=赋值==等于运算说a=b=c,表达式运行a值赋给b、c运行完abc值相等;

a=b==c,复合表达式先a值赋给b与c比较相等则返0,否则返非零值;

运算b==c,若b与c相等,那么得出的值为1。

扩展资料

c语言中a=b--<=a||ab!=c的计算

左边:(a=b--)<=a;

计算b--的值,b--的值为2,得到这个值也就让b的值变成了1,赋值给a后a的值为2,(a=b--)的值也就是a的值为2,2<=2成立,所以左边为真;

右边:(a+b)!=c,a+b的值为3,c的值为3,所以右边为假真||假的结果为真;

b--使b的值变成了1;

a=b--的赋值使a的值变成了2;


温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-04-23
int a = 1, b = 2, c = 3;
a = b = c 意思是将 c 的值赋给 b,再赋给 a,a,b,c 都等于3。
a = b == c, = 的优先级低于 ==,会先判断 b == c 结果为假,就是0值,然后将0值赋给 a,也就是执行后,a = 0, b = 2, c = 3。
a == (b=c),会先讲 c 值赋给 b, 然后判断 a 是否等于 b,表达式得到一个0值(a不等于b),但该判断不会影响 a 的值,结果 a = 1, b = 3, c = 3。
a == (b == c) 会先判断 b是否等于c,结果为0,再判断 a 是否等于 0,结果也是0。但该判断不影响a,b,c的值。还是 a = 1, b = 2, c = 3.追问

那请问printf("%d",a=b==c);应该输出多少?

追答

输出0,实质上是输出 a 的值。赋值表达式最后会返回最后被赋值的那个值。

追问

不对哦,运行结果是3,就是这里想不通

追答

除非你 printf 之前还有其他语句造成改变了 a,b,c的值。

顺便说你用的啥编译器?

本回答被提问者采纳
第2个回答  2018-08-26
涉及到一个谁先把值赋给谁的区别。其他没啥区别。

C语言中 a=b==c怎么理解
“=”是赋值符,把c的值赋给b赋给a,最后a、b、c的值都相等,“==”是判断符;=赋值==等于运算说a=b=c,表达式运行a值赋给b、c运行完abc值相等;a=b==c,复合表达式先a值赋给b与c比较相等则返0,否则返非零值;运算b==c,若b与c相等,那么得出的值为1。

c语言表达式a== b== c是什么意思?
a = b == c:这是一个赋值和相等运算符的组合表达式。由于相等运算符(==)的优先级高于赋值运算符(=),所以首先计算b == c。如果b和c相等,则表达式的结果为1,否则为0。然后,将这个结果赋给a。假设b和c的值都为3,那么a的值将被设置为1。a == (b = c):这是一个赋值和相等运算...

C语言程序中a=b==c是什么意思
(a>b>c) 的 表达方式 在 c语言 中是错误的。但编译器 不显示 出错信息。正确的写法 是 (a>b && b>c ) 真=1,假=0,(a>b && b>c ) 条件成立得真,就是得1,d=1; 否则 d=0; 178rtrdux | 发布于2011-06-25 举报| 评论 2 0 首先因为==号比=的优先级高,所以先执行b==c,明显b等2,...

C语言程序中a=b==c是什么意思
首先因为“==”号比“=”的优先级高,所以先执行b==c,明显b等2,c等3两者不等,所以为0(逻辑运算,当b不等c时这个等式的值就为假即是0),再执行a=0,就把0值赋给了a。1、赋值语句本身也是一个表达式,也是有返回值的,它的返回值就是赋值给变量的值,比如b=1这个语句,会把1赋...

C语言中的a=b=c何解???
将c赋值给b,再将b赋值给a!也就是说——a b c中的值是一样的!将其分解就是楼上的:b=c;a=b;

C语言中.c=a; a=b; b=c;意思是a,b的值互换`这句什么意思。!
c=a; 先把a的值赋给c,就是把a的值保存在c那里,a=b; 再把b的值赋给a,b的值就到a那里去了,b=c; 再把c的值赋给b,就是把以前a的值(在c那里保存着)赋给b 这样a的值就到b那里去了,实现了值的互换

c 中a=b b=c c=a是什么意思
在C语言中,a=b b=c c=a这样的语句常被用于排序算法。比如冒泡排序法中,每相邻两个元素之间的大小比较,就需要临时变量来保存它们的值。若使用a=b b=c c=a,则不必再声明额外的变量,直接通过赋值语句来实现。这样可以大大简化排序算法的代码量,提高程序的效率。此外,a=b b=c c=a也可以...

C语言中,a=b=c,a=b==c,a==(b=c),a==(b==c)有什么区别
C语言和其他语言不同,在其他语言中,一般不区分 赋值操作符 与 等于 运算符,但是C语言很区分。= 是赋值 == 是等于运算 也就是说,a=b=c, 是一个表达式,运行到这里时,将a的值赋给b、c,运行完后abc的值相等;a=b==c,是一个复合表达式,先将a的值赋给b,然后与c比较,如果相等则返回...

"a=b==c"在c语言中表示什么意思
a=a+1;b=a;的意思 至于A++=A+A+1 好像写错了吧 是A+=A+A+1 优先级等于 A=A+(A+A+1)\/\/A+=B 是 A=A+B 的简化 != 不等于,是条件运算符,用来判断真假的。比如1!=2; 表达式的值就是假,也就是0;C语言很多式子都是简化的,这样虽然可以节省代码,却比较让人糊涂。

C语言a=b==c怎么运算的
其实就是运算符优先级问题 =运算符优先级很低,先进行b==c运算,判断b是否等于c,是,结果为1,不是,结果为0,后进行=的运算,把b==c的运算结果(1或0)赋给a,所以a结果是1或0 对于a=b=c;=是从右至左的运算符,所以先进行b=c,把c值赋给b,再进行a=b,把b的值赋给a。

相似回答