先看下边的一段代码
1 #include<stdio.h> 2 int main() 3 { 4 int i=3,j,k; 5 6 j=i++; 7 k=++i; 8 printf("i=%d,j=%d,k=%d\n",i,j,k); 9 printf("%d\n",-i++); 10 printf("%d,%d,%d,i,i++,i++); 11 return 0; 12 }
前两个输出函数应该比较简单,但是第三个输出函数输出的是:
8,7,6
不应该是6,7,8吗?
看了书上的解释,printf中,i,i++,i++的求值比较特殊,它是从右往左求值的。也就是先求最右边的i++,此时先引用的i的值为6,之后i的值变为7,然后是中间的i++,先引用i的值7,然后把i的值加1使之变为8,最后是左边的i,此时i的值是8.
时间: 2024-10-26 14:11:32