c语言中的自增++和自减--问题

发布时间:2024-06-26 13:46 发布:上海旅游网

问题描述:

看了好多baidu知道,说的好深奥,有米有简单点的解释的,最好是通俗易懂
i++所使用或者说i++参与的运算是什么?可以用式子写出来?

问题解答:

a=i++;相当于a=i;i=i+1;

a=++i;相当于i=i+1;a=i;

只为了方便理解,并不是等价的,因为运算效率不同。

i++

保存i的值作为结果,然后给i + 1。

++i
单纯给i + 1。

i原来是1的话 i++的结果是1 但是i本身会变成2

++i 结果是2 i本身也会变成2

C++中避免组合使用自加自减,规范有漏洞。

这个啊,以前我也分得不清,特别是让你算p++ ++p之类的啊就头痛,但后来发现只要把运算符的优先级搞清楚了就简单了

比如
int a=5;
那么a++还是等于5 而a的值却是6了,慢慢来,优先级!!!!!

我可以再线和你交谈的

++i和i++就是不同的
++i是在使用i之前把i的值先加1;
而i++是在使用i之后把i的值加1

--i和i--和上面的差不多的
--i是在使用i之前把i的值先减1,
而i--是在使用i之后把i的值减1

我举一个例子吧
#include<stdio.h>
void main()
{
int i=3;
printf("%d",++i);

}
运行结果就是4

若改为
#include<stdio.h>
void main()
{
int i=3;
printf("%d",i++);

}
则输出结果是3

懂了吗
--i 和i-- 一样的。

最简单的记忆原则是:
i++ : i先参与运算,运算完成后,i自身加1
++i : i先自身加1,然后再参与运算

eg1:
int i = 2;
int j = i++;
程序执行完后:i是3 j是2
eg2:
int i = 2;
int j = ++i;
程序执行完后:i是3 j是3

至于更为复杂的各种其他形式,都可参照以上两条原则,只不过要再考虑表达式从左到右还是从右至左执行等等,左结合右结合等知识在书本上都可以找到,至于 i+++++j 这样变态的表示方法只是笔试面试时候才会有,平时软件开发是不会用的,开发过程中,代码是要给别人看的,越简单明了越好,不然领导会骂人的,顺便说一下 i+++++j 是不正确的表示,程序员意图可能是:(i++) + (++j) 这也符合编译器的语法分析和词法分析,但是最终是编译通不过的,有兴趣可以看看编译原理。

EASY!
void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
如按照从右至左的顺序求值。例5.2的运行结果应为:
8
7
7
8
如对printf语句中的++i,--i,i++,i--从左至右求值,结果应为:
9
8
8
9

热点新闻