对i++和++i的理解
来源:互联网 发布:英国网络运营商 编辑:程序博客网 时间:2024/06/03 15:59
i++ 先使用后增加
++i 先增加后使用
实际上这我们需要对这两句话做点补充 先使用等到语句结束时候再增加 对++i同样是这样 我们最熟悉的结束标志莫过于“;”了
不过还有其他两种 “,’” 与 函数的括号
举几个简单的例子;
简单的定义一个变量
i = 2;
num = (i++)+(i++)+(i++)+(i++); 这时候 num = i + i+ i +i =8; 语句结束 i = i+1+1+1+1=6
num = (++i)+(++i)+(++i)+(++i); 这时候 num = 19 首先计算 (++i) +(++i) 先做两次自增运算 即 i+1+1=4 第三个++i 时候i =5 第四个为6 遇到;开始使用i值
= 4+4+5+6=19;
i = i * ((i ++)+(++i)) ; i = 19 ;先计算括号内的++i 这时候 i = 3 开始运算 3*(3+3) 结束时 再执行i++的自增 即3*(3+3)+1 =19
i=(i++)+(++i)+(i++)+(++i); i =15 (3+3+3+4+2)=15
i =(++i ) + (i++) + (++i) +(i++); i=(3+3+4+4+2)=16
那么在遇到函数调用时候也是这样吗
假设函数fun(++i,i++) 令a = ++i;b= i ++ 我们需要知道函数调用时 传参从右边开始 所以先看 i++ 这时候b=2,继续往右看,遇到“,”所以还是自增 这时候 i=3
开始执行++i ,先自增 i=4,再往右为函数括号 开始使用 所以 a = 4
如果说把i++看做是常数 ++i为变量i的话 能帮助我们更好的理解
比如 func(++i,i++,++i,i++.++i)第一步 为3 第二步 3.第三步 5 第四步 5 第五步7 这时候把++i看做变量 那么 func(i,5,i,3,i)实际上呢就是(7,5,7,3,7)
有兴趣的话 可以自己写一个函数 用gcc编译 看下结果是否正确。
- 对i++和++i的理解
- ++i 和 i++ 的理解
- 理解 i++ 和++i
- ++i和i++ (自己的理解)
- 我所理解的i++和++i
- 我所理解的i++和++i
- 对window.setTimeout("sTimer(" + i + ")", i * 1000)的理解
- ++i,i++,--i和i--的区分
- 对I/O阻塞、非阻塞;同步I/O、异步I/O的理解
- java中i++和++i的深层理解
- i++和++i ,i--和--i的使用方法和作用
- BANK_BASE(i)的理解
- i++的理解
- 关于 i++ 和 ++i i-- 和 --i 的那些事儿
- i++和++i, i--和--i的区别
- i++和++i的区别
- i++和++i的问题
- i++ 和 ++i 的问题
- C++保留标识符
- 2016_icpc_dalian_onsite
- 使用JDBC操作Mysql数据库
- 第6天
- ELK技术栈实践(一)
- 对i++和++i的理解
- windows配置MySql服务
- 专业名词------专业!
- Android Fragment使用问题集结
- Caused by: java.util.EmptyStackException
- CAN、I2C、SPI总线简介
- Arduino Uno资料简介
- spring mvc 请求转发和重定向
- tabcell居中