C语言问题自加问题

发布时间:2024-04-25 12:21 发布:上海旅游网

问题描述:

i++和++i的区别
如果i=10
i++的植是多少,i的值是多少,之后再次引用时i的值是多少?
++i的值是多少,i的值是多少,之后再次引用时i的值是多少?

问题解答:

以下是三段话 请分开来看~

1。简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;

如果实在搞不明白++ --怎么回事,那也不是什么天塌下来的事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。
而且,这也是一种好的程序风格:++ -- 语句如非特殊需要,请单独一行使用。
i++ 是先赋值后加减,++i 是先加减后赋值。

2。关于增量运算的确有的时候很复杂。以++为例,我是这么理解的,++i表示先对i加1再调用增值后的i,而i++则是先调用(未增值的)i再对i增值。为了便于记忆,我就把这个规则记成“++(或--)在前就是先加(或减)再用,在后就是先用再加(减)”。(仔细体会一下,是不是很形象?)你按这个方法再去判断一下你的问题,看看是不是这样的?^_^
“-”既可以理解为负号运算符,也可以理解为减号运算符,但请注意:前者为单目运算符,而后者为双目运算符;因此在你的问题中,很明显倒数第1、2两个输出的“-”应是负号运算符,故输出原数的相反数。(当然同时还要注意到无论是负号运算符还是减号运算符,它们的级别都低于增量运算符,因此比如说执行第五个输出前,i的值为8,再执行第五个输出时,先算i++,结果是8,然后计算-(i++),结果是-8。)
再自己分析一下你的问题,是不是感觉很轻松了?

3。你应该这样理解,当--或++在前面的时候就先自增或减,当其在后面的时候,就应该先做其它的运算和操作,然后再自增或减。
int i=8;
printf("%d\n",++i);//输出9 先自增
printf("%d\n",--i);//上面为9, 先自减 输出8
printf("%d\n",i++);//先操作,上面为8 输出8,再自增为9
printf("%d\n",i--);//先操作,上面为9 故输出9,后自减为8
printf("%d\n",-i++);//先操作,上面为8,输出-8,后自增为9
printf("%d\n",-i--);//先操作,上面为9 故输出-9 后自减为8
printf("------\n");

哇塞!豆腐哥说了好多
其实i++和++i的区别就是先赋值再自增和先自增再赋值
1.int i=0,j=0;
printf("%d",i++);//先赋值再自增
j=i;
printf("%d",j);
结果0 1
2.int i=0,j=0;
printf("%d",++i);//先自增再赋值
j=i;
printf("%d",j);
结果1 1

热点新闻