我有以下C程序,我不理解这个程序的输出:
#include <stdio.h>
int main()
{
int a=8;
printf("%d\n", a++);
printf("%d\n", ++a);
printf("%d\n", a*a);
return 0;
}
第一个 printf 的值为 8 ,第二个 printf 的值为10 !!但是如何??
答案 0 :(得分:2)
a++
是后缀表示法,该值首先递增,但返回上一个值,然后将其传递到prinf
。++a
是前缀表示法,该值在传递到printf
之前首先递增。您的代码大致相当于:
int a = 8;
printf("%d\n", a);
a++;
a++;
printf("%d\n", a);
printf("%d\n", a*a);
return 0;
但它更接近于此(注意我使用,
运算符,它运算符计算每个子表达式,但只返回最终的子表达式):
int a = 8; int aTemp;
// a++
printf("%d\n", (aTemp = a, a = a + 1, aTemp) );
// ++a
printf("%d\n", (a = a + 1) );
答案 1 :(得分:1)
a ++将在当前语句中使用a(在这种情况下输出到屏幕),然后在语句后增加“a”。
++ a将在执行语句之前递增“a”。