一克拉的钻石多大:C语言符号++ --的问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/05 18:39:47
提问:
void main(){
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
} i<--8
i<--i+1
i<--i-1
i<--i+1
i<--i-1
i<--i+1
i<--i-1 int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
i的初值为8
第2行i加1后输出故为9;
第3行减1后输出故为8;
第4行输出i为8之后再加1(为9);
第5行输出i为9之后再减1(为8) ;
第6行输出-8之后再加1(为9);
第7行输出-9之后再减1(为8)

问题:1.第3行输出为什么是8而不是7的?
2.第5行输出为什么是8而不是7的?
3.第6行输出为什么是9而不是-7的?
4.第7行输出为什么是-9.再减1怎么变成 了正8?

其实这个很简单啊,怎么老是有人弄不明白?

++i :先将i加1,再对i进行操作
i++ :先对i进行操作,再将i加1

其实就是要你建立起这样一个观念:一个变量在内存中的值和上次调用它时的值为两个值,编程序时要随时记住变量在内存中当前是什么值,而不要老是记住上次调用时的值,因为在程序执行过程中它已经改变了。

第三行你这样写是8没错,++i是先加1后输出值,--i是先减1后输出,i++是此次值不变当输出完后加1,i--是此次值不变染色输出完后减1。
你的第一行输出printf("%d\n",++i);i的初始值为8,所以此行输出结果是9,i的值也是9;
printf("%d\n",--i);此时输出的是8,i的值也是8;
printf("%d\n",i++);这一句你使用了i++它的作用是输出当前值之后加做加1,这样你得到的输出就是8,然后i的值改成了7,也就是你说的输出是8而不是7的问题。

这里你使用的i++,++i它们在执行中是有区别的,
i++是先完成当前操作后,再做加1
++i是先做加1后,再执行当前操作。
i--,--i原理同++i,--i
如果不能体会,你可以在使用这两个方法时,加上两条printf输出i的值,用于观察i的值的变化方式。

1.第3行输出为什么是8而不是7的?因为第二行已经是9了,--i就变成9-1,自然是8

以下情况是一样的,这里改变的都是i的值

++i :先将i加1,再对i进行操作
i++ :先对i进行操作,再将i加1