I++,I--,++I,--I,想这样的运算一直是比较难理解的,如果他加上与其他的运算结合起来的话,那就更让难一理解了,
首先要说明的是,结合的时候你要看看是哪个运算符的优先级高,++是个运算符,
基本的理解是:
i++ ++ 在后面,我称为后致运算,就是说先取出I的值做运算,然后I自己在加1,
++i ++ 在前面,我称为先致运算,就是说I自己先加1,然后在取I的值去做运算,
--I I--也这样理解,
对于这个题目:
#include "stdio.h"
main()
{int i,k;
i=3;
k=++i+(++i);
printf("k=%d,i=%d\n",k,i);
i=3;
k=i++ +(++i);
printf("k=%d,i=%d\n",k,i);
} 偶的编译器是:
k=10,i=5
k=8,i=5;
这样不难理解,你们的编译器会有怎么样的结果,我不知道,大家试试其他的便宜器,解释一下运算过程:
k=++i+(++i); 先()里的毫无疑问先运算,即I=4了,然后往前看,看到++I 先致运算,所以I先加I=5,然后再取值相加,即 5+5=10, 这个时候I=5,
k=i++ +(++i); 先()里的毫无疑问先运算,即I=4了,往前看看到了I++后致运算,即先取值4参加运算k=4+4=8,然后I自己在加1 所以I=5了
但是他们与其他的运算符结合起来就,要看你的编译器是怎么结合他们了,看你的 编译器是怎么安排他们的优先级,不是每个编译器运行的结果多是一样的。注意这样主要是理解,在实际中我想是不会有程序员写这样难理解的代码的