
i=5,p=(i++)+(i++)+(++i)怎么理解,输出P和i,求高手解释
4个回答
展开全部
首先关于前++ 和 后++ ,你一定会知道的。
关键就在于 + 号的运算顺序.
还有++是对一块内存进行的操作.
好入正题:
第一个+号时 执行 (i++) + (i++)
此式说明两个 i++ 要在完成 加法运算符后进行 i++
就解释了 (i++) + (i++) 等同于 5 + 5
加过之后 i 的值变为 7 (经过两次++)
10 + (++i) 这就很简单了
10 + 8 = 18 嘛
要是不懂的话
可以继续问我
关键就在于 + 号的运算顺序.
还有++是对一块内存进行的操作.
好入正题:
第一个+号时 执行 (i++) + (i++)
此式说明两个 i++ 要在完成 加法运算符后进行 i++
就解释了 (i++) + (i++) 等同于 5 + 5
加过之后 i 的值变为 7 (经过两次++)
10 + (++i) 这就很简单了
10 + 8 = 18 嘛
要是不懂的话
可以继续问我
更多追问追答
追问
很感谢你的回答,能否继续询问下还有一个程序是j=5;q=(++j)+(++j)+(++j),能解释下么非常感谢,我知道的是j=8,但是q的值不知道怎么算,自己得出的是q=6+7+8,是这样么?因为++j是先执行j+1,再取J我这样的理解对么?
追答
嗯 不知道我这么说你能不能理解
首先 + 号是双目运算符
(++i) + (++i) 在运算加号前i的值就已经加过两次了
++i 前后操作的是同一块内存 确实第一次++i i=6 第二次 ++i i=7 但你注意前后的 ++i 所更改的是同一块内存, 也就是说在进行加法运算的时侯 内存中 i 的值已经变成 7 了
(++i ) + (++i) == 7 + 7
后面的你应该就知道了
展开全部
p=5+6+8 第一个(i++)中是这样理解 先调用i后i再自增1 所以第一次调用完后 i=6
第二个(i++)调用的时候 i=6 调用完 i=7 (++i)是i先自增然后在调用 所以调用的时候i为8;
所以答案 你就知道了
第二个(i++)调用的时候 i=6 调用完 i=7 (++i)是i先自增然后在调用 所以调用的时候i为8;
所以答案 你就知道了
追问
这样得出的应该是p=19,i=8,但是我看到的答案是p=18,i=8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p等于16 i等于8
是这样的p=5+5+6,是从右向左算的
是这样的p=5+5+6,是从右向左算的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
引用张春吉001的回答:
首先关于前++ 和 后++ ,你一定会知道的。
关键就在于 + 号的运算顺序.
还有++是对一块内存进行的操作.
好入正题:
第一个+号时 执行 (i++) + (i++)
此式说明两个 i++ 要在完成 加法运算符后进行 i++
就解释了 (i++) + (i++) 等同于 5 + 5
加过之后 i 的值变为 7 (经过两次++)
10 + (++i) 这就很简单了
10 + 8 = 18 嘛
要是不懂的话
可以继续问我
首先关于前++ 和 后++ ,你一定会知道的。
关键就在于 + 号的运算顺序.
还有++是对一块内存进行的操作.
好入正题:
第一个+号时 执行 (i++) + (i++)
此式说明两个 i++ 要在完成 加法运算符后进行 i++
就解释了 (i++) + (i++) 等同于 5 + 5
加过之后 i 的值变为 7 (经过两次++)
10 + (++i) 这就很简单了
10 + 8 = 18 嘛
要是不懂的话
可以继续问我
展开全部
答案,是自右向左算,所以是 8 7 6 ,不是6 7 8。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询