题目是: int a=3,b,c;
b=(a++)+(a++)+(a++);
c=(++a)+(++a)+(++a);
a、b、c的最终结果是多少?
解答:此道题目考察的是自增自减运算符的灵活运用。
作用是使变量的值增加1或是减少1,例如:
++i , --i;(在使用i之前,先使i的值加(减)1)
i++ , i--;(在使用i之后,先使i的值加(减)1)
对于++i,和i++,来看都是相当于i=i+1;不同之处在于是使用前加1还是使用后加1,分析一下赋值语句:
i的原值等于3:
1:j=++i; (i的值先变成4,再赋值给j,这样i和j的值都是4)
2: j=i++;(先将i的值3赋值给j,j的值就是3,然后i的值再加1,变成4,此时i=4,j=3)
又例如:i=3;
printf("%d",++i); 输出结果为4。
若改为:printf("%d",i++); 输出结果就是3.(输出完了之后i的值变成来4)
注意:自增自减运算符只能用于变量,不能用于常量或是表达式;结合方向是自右至左。
(第一道题目答案是:a=9,b=12,c=24)