对于
n=3;
y=n++ + n++;
最后n的结果肯定是5,但是y的结果会因为编译器优化的不同而产生不同的结果,因为编译器对先执行前面的n++与后面的n++,还是同时执行,有自己的方案,可能是y=3+3,也可能是y=3+4
对于
y=(4 + x++) + (6 + x++);
c语言对于x的递增,只能保证在序列点';'之前对x进行递增,c并未指明是在对子表达式(4 + x++) 求值之后递增x,还是对所有表达式求值之后再递增x,因此要尽量避免编写类似的语句。
对于
n=3;
y=n++ + n++;
最后n的结果肯定是5,但是y的结果会因为编译器优化的不同而产生不同的结果,因为编译器对先执行前面的n++与后面的n++,还是同时执行,有自己的方案,可能是y=3+3,也可能是y=3+4
对于
y=(4 + x++) + (6 + x++);
c语言对于x的递增,只能保证在序列点';'之前对x进行递增,c并未指明是在对子表达式(4 + x++) 求值之后递增x,还是对所有表达式求值之后再递增x,因此要尽量避免编写类似的语句。