关于C++中的前++和后++运算符

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:54:44
main()
{
int a=3;
int b=a++*a++;
int c=++a*++a;

printf("%d %d %d",a,b,c);
}

在我的机器上结果是 7 9 49
告诉我在你们机器上的结果
或者理解的给我解释下
a++返回3,此时a=4,然后又a++,返回4,此时a=5;
这样的话就应该是b=3*4才对呀
++a返回6,此时a=6,然后又++a,返回7,此时a=7;
这样的话就应该是c=6*7才对呀

这个题我机器上和你的运算结果是一样的,
我认为对于这种题没有必要死抠.
而且,在实际应用中,一定要尽量避免这种语句的应用.

a++是先运算后自加
++a是先自加后运算

b=a++*a++(a++是先运算后自加)
所以依然是3*3=9,但算完后a的值已经是5了..
c=++a*++a(++a是先自加后运算)
所以此时先算a=7,再算c=7*7=49

第一个a++,a变成4,第二个a++,a变成5,++a使a又变成6,后一个++a使a变成7,所以a是7;
因为++比*优先级高,所以b=3*3(注意,运行完后a重复两次a++)所以现在a是5;所以b是9;
因为++比*优先级高,所以先运行两次++a,所以a是7,所以c是49;就这样。

a++返回3,此时a=4,然后又a++,返回4,此时a=5;
这样的话就应该是b=3*4才对呀
/******************************
下一次用时加1是在下一行, 不是这行用

int c=++a*++a;
这样不是更好能正明了

++a*++a 先加1,在加1才成7 所以就知道不是某一个a是7,而上在这一行的a都是7 先在一个++a变6,然后在做一个变7

用到第一个a时是7,第二个的时候被第一个覆盖了所以还是7

x++是先运算后自加, ++x是先自加后运算。