关于编程语句i++与++i的区别用法
2016-04-23 22:45
169 查看
首先我们定义一个变量i,int i=5;
然后我们做执行printf(“%d”,i++);
我们会发现输出结果是5。
是为什么呢,我们要搞清楚printf(“%d”,i++);
这句话是做两件事:
1.输出i
2.i=i+1;
这里的顺序,是先输出i,再执行i=i+1;
然后我们初始化变量i,i=5;
然后我们做执行printf(“%d”,++i);
我们会发现输出结果是6。
其实printf(“%d”,++i);做的也是这两件事,
1.输出i
2.i=i+1;
只是先做i=i+1;然后输出i;
总结:++i;i++;的区别:
i++先做别的事,再自己加1;
++i先自己加1,再做别的事情;
形象的理解,你可以把++i比作自私的人,首先考虑自己的事;
i++是无私的,先为别人照想,这样方便记忆。
也可以参照函数:i++
[/code]
++i为
[/code]
总而言之,i++ 语句需要个临时变量,去存储返回自增前的值。
不要忽略这个变量的意义,了解过 C
等「低级」语言的朋友,可能会了解变量的内部机制。首先,申请(malloc)一段内存空间,然后将值塞(push,压栈)进去,最后不用了释放(free)。
然后我们做执行printf(“%d”,i++);
我们会发现输出结果是5。
是为什么呢,我们要搞清楚printf(“%d”,i++);
这句话是做两件事:
1.输出i
2.i=i+1;
这里的顺序,是先输出i,再执行i=i+1;
然后我们初始化变量i,i=5;
然后我们做执行printf(“%d”,++i);
我们会发现输出结果是6。
其实printf(“%d”,++i);做的也是这两件事,
1.输出i
2.i=i+1;
只是先做i=i+1;然后输出i;
总结:++i;i++;的区别:
i++先做别的事,再自己加1;
++i先自己加1,再做别的事情;
形象的理解,你可以把++i比作自私的人,首先考虑自己的事;
i++是无私的,先为别人照想,这样方便记忆。
也可以参照函数:i++
[code]function () { tmp = i; i = tmp + 1; return tmp; }
[/code]
++i为
[code]function () { i = i + 1; return i; }
[/code]
总而言之,i++ 语句需要个临时变量,去存储返回自增前的值。
不要忽略这个变量的意义,了解过 C
等「低级」语言的朋友,可能会了解变量的内部机制。首先,申请(malloc)一段内存空间,然后将值塞(push,压栈)进去,最后不用了释放(free)。
相关文章推荐
- C++静态多态性之函数重载
- C++中#error/assert/static_assert的区别及使用
- C++中#error/assert/static_assert的区别及使用
- 文章标题
- Spring配置文件异常:White spaces are required between publicId and systemId
- import com.sun.image.codec.jpeg.JPEGCodec不通过 Eclipse找不到包
- 优酷 Java笔试题(摘要)
- Java通用集合工具总结
- 第一章 JAVA入门(JAVA与C/C++那些事)
- ubuntu下编写并运行第一个c语言程序
- C#图像处理实践——图片不同提取
- PHP学习03----开发环境搭建
- C++ 中 static 和 extern关键字
- 20145305《Java程序设计》实验三
- 20145305 《Java程序设计》第8周学习总结
- 什么是Spring?它有哪些好处?
- java毕向东听课笔记24(集合框架-Set集合HashSet)
- 欢迎使用CSDN-markdown编辑器
- python iterator generator yield
- 使用RxJava优化Retrofit请求