请写出下列代码的输出内容:
#include <stdio.h> int main() { int a, b, c, d; a = 10; b = a++; c = ++a; d = 10 * a++; printf("b,c,d:%d,%d,%d", b, c, d); return 0; }
a = 10 ; b = a ++ ; // b = 10 , a = 11 c = ++a ; // a = 12 ,c = 12 d = 10 * a ++ ; // d = 120 , a = 13
int i=0,j; j = ++i; // j=1, i=1 :前置版本得到递增之后的值 j = i++; // j=1, i=2 : 后置版本得到递增之前的值d=10*a++; 在运算符优先级里,后置版本优先级要大于前置版本,也大于解引用(*,即 *pt++等价于*(pt++)),也大于四则运算符,所以这一句等价于: d = 10 * (a++); a此时已是12,故d = 10 * 12 = 120,然后a变为13.