++i 与 i++ 到底有什么不同? i++ 和 ++i 解析!
2017-01-03 18:37
597 查看
一、
i++; 使用完毕后再自加,遇到分号结束" ; "
++i; 先对 i 自加,然后再使用它
i = 2;
num = (i++) + (i++) + (i++) + (i++);
输出 num = 8,i = 6;
num = (++i) + (++i) + (++i) + (++i);
3 4 5 6
输出 num = 18,i = 6;
i = (i++) + (++i) + (i++) + (++i)
i = 3 + 3 + 3 + 4 + 1 + 1 = 15;
i = (++i) + (i++) + (++i) + (++i)
i = 3 + 3 + 4 + 5 + 1 = 16;
i = i * ((i++) + (++i))
i = 3 * (3 + 3 ) + 1 = 19;
二、
int main()
{
int i = 2;
func(i++;++i);
return 0;
}
void func(int a,int b)
{
printf("a = %d\n",a);
printf("b = %d\n",b);
}
输出 a = 3
b = 4
解释: 函数传参是从右边开始传参的,++i 被替换成变量, i++被替换成数值,分号,逗号和函数的小括号都是i++的结束标志。
i++; 使用完毕后再自加,遇到分号结束" ; "
++i; 先对 i 自加,然后再使用它
i = 2;
num = (i++) + (i++) + (i++) + (i++);
输出 num = 8,i = 6;
num = (++i) + (++i) + (++i) + (++i);
3 4 5 6
输出 num = 18,i = 6;
i = (i++) + (++i) + (i++) + (++i)
i = 3 + 3 + 3 + 4 + 1 + 1 = 15;
i = (++i) + (i++) + (++i) + (++i)
i = 3 + 3 + 4 + 5 + 1 = 16;
i = i * ((i++) + (++i))
i = 3 * (3 + 3 ) + 1 = 19;
二、
int main()
{
int i = 2;
func(i++;++i);
return 0;
}
void func(int a,int b)
{
printf("a = %d\n",a);
printf("b = %d\n",b);
}
输出 a = 3
b = 4
解释: 函数传参是从右边开始传参的,++i 被替换成变量, i++被替换成数值,分号,逗号和函数的小括号都是i++的结束标志。
相关文章推荐
- 互联网CDN和电信的CDN到底有什么不同
- 使用STL和MFC到底有什么不同?
- 《软件架构设计.第二版解析软件架构概念》阅读笔记——到底什么是软件架构?
- 【全解析】屏幕尺寸,分辨率,像素,PPI之间到底什么关系?for 屏幕适配
- 解析域名的时候不同的项目代表什么含义?主机记录、记录类型、线路类型、记录值、MX优先级、TTL
- 技术解析:到底什么是 O/R Mapper
- Impala源码解析 - 了解Impala Catalog加载过程和到底加载了什么
- 我的Android进阶之旅------>(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系?
- Caffe到底训练出了个什么东西:caffemodel解析
- 仔细思考一个接口的不同实现得到的类和一个类的不同对象使用起来到底有什么区别?
- WPF和Silverlight到底有什么不同?
- 绝对路径在不同环境下 到底是相对于什么的绝对
- Java的Generics和c++的Template到底有什么不同?
- 从程序设计角度看B/S C/S到底有什么不同
- java中的class 与Class , A.class 与 A.getClass() 到底有什么 不同
- 不同种类的整型比较,到底发生了什么?
- 从程序设计角度看B/S C/S到底有什么不同???
- Java的Generics和c++的Template到底有什么不同?
- 阿尔法围棋与深蓝到底有什么不同
- Impala源码解析 - 了解Impala Catalog加载过程和到底加载了什么