社区
C语言
帖子详情
++i+(++i)
wibnmo
2010-11-23 04:45:02
int i = 3;
int j = sizeof(++i+(++i));
i 和 j的值为什么打印出来是3 4?
希望说详细些,谢谢啦.
...全文
250
11
打赏
收藏
++i+(++i)
int i = 3; int j = sizeof(++i+(++i)); i 和 j的值为什么打印出来是3 4? 希望说详细些,谢谢啦.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
清香白莲
2010-11-23
打赏
举报
回复
明白了吗????
清香白莲
2010-11-23
打赏
举报
回复
sizeof中的表达式仅仅表示一个某个类型的数而已,不会影响i的值,而sizeof就会求出类型的字节数。
清香白莲
2010-11-23
打赏
举报
回复
sizeof是求字节数的,而后面的数是一个int型的,所以是4;
i值为3,因为后面的值是在sizeof中的,不会改变i的值,如果没有sizeof,则i的值改变。
liutengfeigo
2010-11-23
打赏
举报
回复
[Quote=引用 6 楼 wibnmo 的回复:]
关键是i搞不懂为什么是3.
[/Quote]
都说了你那个括号内不进行求值啊,也就是那话是空话。等于没写
wibnmo
2010-11-23
打赏
举报
回复
关键是i搞不懂为什么是3.
FreddyHu
2010-11-23
打赏
举报
回复
你Sizeof理解错了,你在计算一个int类行
相当于:int j = sizeof(int);
所以 就是3,4
無_1024
2010-11-23
打赏
举报
回复
而sizeof只会对i的类型进行判断不会进行计算
無_1024
2010-11-23
打赏
举报
回复
j永远是4 sizeof球的是类型的长度 也就是i的类型
liutengfeigo
2010-11-23
打赏
举报
回复
好像我说错了,不是编译器不会进行求值。
反正是不会进行求值。
我记得是飞雪告诉我们的。
liutengfeigo
2010-11-23
打赏
举报
回复
sizeof(++i+(++i));//这个括号内编译器不会不进行求值的
++
i+i
++
偶然看到一个朋友的QQ验证问题:int i=0;i+=
++
i+i
++
;
++
i+i
++
=? 在不同的环境里面运行结果竟然不一样,leetcode的结果是13,VS里是10,eclipse是6,然后上网查了一下,可能跟C
++
和Java对于自增操作的不同处理有关,在Java中,对于i=i
++
,JVM会先把i的初值(即为0)拷贝到临时变量区,然后对i值+1,此时i值是1,然后返回临时变量区的值并赋值给i
Java
++
i 与 i
++
底层原理
本文详细解析了Java字节码中局部变量表和操作数栈的工作原理。通过具体示例演示了i
++
和
++
i操作的字节码执行差异:i
++
先取值后自增,
++
i先自增后取值。重点分析了复合表达式i
++
+i
++
和i
++
++
+i的字节码执行过程,展示了操作数栈的动态变化。其中i
++
+i
++
结果为3(i=3),i
++
++
+i结果为8(i=5)。文章采用字节码指令逐步解析的方式,直观呈现了变量自增运算在JVM层面的实现机制。
i
++
与
++
i
i
++
为:先执行 赋值运算,之后自身执行+1运算。 即: int i = 3,a = 0 ; i
++
: 先赋值再运算;例如:a = i
++
; 先赋值 a = i ,再运算 i = i + 1 ;所以输出结果为 a ==3;
++
i : 先运算再赋值;例如:a = i
++
; 先运算 i = i + 1 ,再 赋值 a = i ;所以输出结果为 a ==4; 以 i
++
为例: 先开批一个临时存储区 将 i 的值复制到存储区 i 自身+1 临时存储区的值等待被调用(参与运算、输...
for循环中为什么使用
++
i而不是i
++
在之前看到别人的代码时,for循环里面一直用的是
++
i,而我用的i
++
,我一直以为是使用习惯问题,后来发现在刷算法题的时候,发现题解里面的for循环几乎都是
++
i,我才知道原来使用
++
i比i
++
的性能要好一些 i
++
和
++
i如何使用 i
++
和
++
i都是i的自增操作,区别是引用和自增的顺序不同,单独使用时效果相同 i
++
使用先引用i再自增,而
++
i是先自增再引用 int i = 1; System.out.println(i
++
); // 输出1 System.our.println(
++
i); // 输
【C语言】 i
++
; 与
++
i; 区分
一、i
++
和
++
i 运算 前缀
++
(
++
i): 在表达式中先自增,再将自增后的结果(i)进行运算。 后缀
++
(i
++
): 先将i的值进行运算,再表达式结束后自增。 在表达式之后,不论i
++
还是
++
i 都会完成自增;区别是 i
++
在表达式中用的是自增前的i值,
++
i在表达式中用的是自增后的i值。 二、
++
优先级 问:如果这个自增运算符, 在表...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章