K++ 和 -K++ 只是数值符号有区别,++操作在这里是一样的。
不过++操作有个特别的地方需要注意,放在变量前后的效果是有点不同,特别用在表达式里面的时候。
k++ 和 ++k 不一样,看下面的例子:
int i=4;
printf("\ni=%d\n", i);
printf("\n4-i++=%d\n", 4-i++);
printf("\ni=%d\n", i);
i=4;
printf("\ni=%d\n", i);
printf("\n4-++i=%d", 4-++i);
printf("\ni=%d\n", i);
i=4;
printf("\ni=%d\n", i);
printf("\n-i++=%d\n", -i++);
printf("\ni=%d\n", i);
i=4;
printf("\ni=%d\n", i);
printf("\n-++i=%d\n", -++i);
printf("\ni=%d\n", i);
-------------------------------------------------------------------
输出结果是:
i=4
4-i++=0
i=5
-------------------
i=4
4-++i=-1
i=5
-------------------
i=4
-i++=-4
i=5
-------------------
i=4
-++i=-5
i=5
也就是说,当用在表达式里面的时候,++在前和在后的运算次序是不一样的,
++在前则先对变量+1,然后再参与表达式的运算;++在后则先参与表达式运算,然后才对变量+1。
对于初学者,或者专家也好,不建议使用太复杂的表达式,代码的可读性也非常重要。
复杂的表达式并不会生成更快的编译代码,反而会使别人或自己看不懂代码表达的意思,
想想一年或几年后,你自己再来看这些代码还看得明白吗?
这么给你解释吧。前置递增++k这个表达式执行两步,将k自加一,然后返回的结果是改变后的k。
而后置的k++第一步是自加一,但是第二步返回的结果是改变之前的k的拷贝值。
可以。前置++和后置++的区别在于返回值和自增的顺序,在该程序中,k++只起自增作用,不涉及到顺序问题,所以可以改