tigeroye 发表于 2011-2-19 19:38:01

课后题的问题

#include <stdio.h>

void main()

{
        int a = 2, b = 4, c = 6, x, y;
        y = (x = a + b), (b + c);
        printf("y = %d,x = %d", y, x);
}

结果怎么是
y = 6 想= 6

不是说
y= 表达式1,表达式2,表达式3取最后一个值吗?

a247171525 发表于 2011-2-19 21:18:49

是因为赋值运算符= 的优先次序大于逗号运算符的级别。   
所以 y = (x = a + b), (b + c);
会先赋值的。   你可以改为y =( (x = a + b), (b + c));这样就会先算逗号运算符再算赋值运算符了。

tigeroye 发表于 2011-2-19 21:51:48

哦 谢谢啊 呵呵 新手的傻傻问题

a247171525 发表于 2011-2-19 23:00:17

呵呵我也是新手   才开始学   在今天之前我也没弄明白过这个问题,今天看视频时,看到小甲鱼老师在视频中有出现运算符优先级表。再一看到你的题目,就突然感到茅塞顿开,想明白了。

578786647 发表于 2011-2-21 01:56:58

甲鱼兄啊,你的问题有人给你反映出来喽~~~{:3_61:}

小甲鱼 发表于 2011-2-21 12:47:07

甲鱼兄啊,你的问题有人给你反映出来喽~~~
578786647 发表于 2011-2-21 01:56 http://fishc.com/dz/images/common/back.gif


    嘻嘻,是啊~我的错~

追梦1航海 发表于 2014-3-14 21:34:58

哈哈,不错不错,总结一下,本来是多个表达式赋值,只考虑最右边的一个,八国,还要先考虑等号比逗号优先级别高哦,!!!!!

ilboyvm 发表于 2014-10-26 00:24:02

是因为赋值运算符= 的优先次序大于逗号运算符的级别。
页: [1]
查看完整版本: 课后题的问题