关于C语言中逗号表达式的运算问题
最近在看做些练习(唉,没办法,该死的知识竞赛),发现一些习题很是不解,遂又到论坛发贴求助了。
今天发现了逗号运算,不过好像谭浩强的书上没这种运算。例如(表达式1, 表达式2,表达式3,……表达式n),刚开始我认为最后结果只是最后一个表达式n的值,但现在遇到好几个疑惑了。
1、(a=3*5,a*4,a+5)),为什么输出结果不是65,而是20;有人说,第二个式子的值是60,但没有赋值给第三个表达式。这又是为什么呢?那么如果有多个表达式,那么最后的值等于最后的表达式的值吗?
2、a = (a = (3*5, a*4), a+15); printf("%d\n", a); 这两个语句的输出结果是175(为什么不是75?),而且把括号里的3*5改成4*5后结果也没变,而把括号的里的a*4改成a*5后结果却变成215,也就是说最里边的括号的第一个表达式不起作用,这是为什么?
3、a = ((a = 3*5, a*4), a+15);printf("%d\n", a); 这两个语句的输出结果是30,把a*4改成a*5结果也没变,这我知道。因为(a = 3*5, a*4)就是个简单的赋值语句,执行完后a = 15,再然后a的值就是30了。
上面的第三个问题算不上问题吧,只请各位大神把前面的几个问题的疑惑解答就好了,谢谢。