闲来有些蛋疼,喜欢搞这些有的没的
i = 2;
①i = i++ + ++i;
结果输出6,从左到右算,i++之后i为3,后边++i之后,i为4
但i++取的是旧值2,所以2+4= 6
②i = ++i + i++;
结果为7,这就很容易困惑,其实只要记得++i的时候,i取得是最新的值,所以++i之后,i为3,后边i++之后i为4,但取旧值3,前边的++i取新值4,所以结果4+3 = 7
这么说你可能不信,接着看
③i = ++i + ++i;
结果为8,两个都是++i,都取新值,所以4+4 = 8
魔鬼继续
④i = ++i + ++i + ++i;
如果按照上边的思路,结果为15,可惜不是,首先这里两个+运算符,一个+运算符当作一个小整体,所以前边两个++i相加结果依旧为8,后边++i之后i为5,调用第二个+运算符,8+5 = 13
⑤i = i++ + ++i + ++i;呢
相信你已经明白了,没错,是11,第一个+号,结果如上,为6,第二个+号运算符则为6+5 = 11
把测试代码贴一下:
#include <stdio.h>
int main()
{
int i = 2;
i = i++ + ++i;
printf("1、i的值为:%d\n",i);
i = 2;
i = ++i + i++;
printf("2、i的值为:%d\n",i);
i = 2;
i = ++i + ++i;
printf("3、i的值为:%d\n",i);
i = 2;
i = ++i + ++i + ++i;
printf("4、i的值为:%d\n",i);
i = 2;
i = i++ + ++i + ++i;
printf("5、i的值为:%d\n",i);
}
先到这了,想到了再慢慢补充