关于#c语言#的问题:不懂为啥++i和我预想结果不一样 然后 y=(x=a+b),(b+c)不应该是(b+c)赋值到y吗 为啥结果是6

不懂为啥++i和我预想结果不一样 然后 y=(x=a+b),(b+c)不应该是(b+c)赋值到y吗 为啥结果是6

img

img

img

y=(x=a+b),(b+c)是逗号表达式,y=(x=a+b)是一个表达式,(b+c)是一个表达式,所以y的值跟x的值一样,是6

至于++m和i++这里,不同的编译器处理方式不一样。
一般来说,++在变量前面的时候,先计算++,++在变量后面的时候先计算其它部分,最后再计算++。
这里的 p =(i++)+(i++)+(i++);正常来说,应该是先计算p=i+i+i=15,然后i++三次,所以最后p的值是15,在visual studio下是这个结果。
但是在部分编译器中,不是严格遵守这个规则,devc是从左往右扫描,所以就是边计算边++,结果就是5+6+7=18

q=(++m)+(++m)+(++m)这里,正常的计算顺序是,先执行三次m++,m的值变成8,然后再执行q=m+m+m=24,在visual studio下是这个结果。
但是在DEVC下,执行过程是,先执行前面的两次(++m),m的值变成7,然后执行7+7=14,然后在执行最后一个++m,m的值变成8,最后14+8=22


感兴趣的话,看看下面的文章吧: