这些加加减减的很疑惑
为什么刚才在解析中说:无论是a++还是++a都等同于a=a+1,在表达式执行完毕后a的值都自增了1,无论是a--还是--a都等同于a=a-1,在表达式执行完毕后a的值都自减少1。
那么为什么下面举的这个例子第一个就和解析里面说的不一样啊,如果按照a++和++a都等同于a=a+1的话,那例题中第一个答案应该输出的是101才对啊,因为a=100,那么a++=a+1 把a=100代入进去算出来不就是101吗?为何例题输出的是100?
为什么刚才在解析中说:无论是a++还是++a都等同于a=a+1,在表达式执行完毕后a的值都自增了1,无论是a--还是--a都等同于a=a-1,在表达式执行完毕后a的值都自减少1。
那么为什么下面举的这个例子第一个就和解析里面说的不一样啊,如果按照a++和++a都等同于a=a+1的话,那例题中第一个答案应该输出的是101才对啊,因为a=100,那么a++=a+1 把a=100代入进去算出来不就是101吗?为何例题输出的是100?
2015-01-10
i++ 是先返回 i 的值,再 i = i + 1;
++i 是先 i = i + 1;再把 i 值返回。
以示例代码为例:
int x = 0; // x 值为 0 // 调用printf时,printf想要知道第二个参数的值,这第二个参数就是“++x” // 那么会先把x的值加上1(x为1),再把x的值(就是1)返回给printf用 printf("x=%d\n",++x); // 这一句printf同样想知道它的第二个参数的值,就是“x++” // 那么会先把x的值返回给printf用(值还是1),再把x的值加上1(这时i为2) printf("x=%d\n",x++); // 也就是说如果再次取x的值的话,就会得到2 printf("x=%d\n", x); // 这一句会输出2
举报