为什么VC++6.0中 i=i++与i=++i结果相同
答案:4 悬赏:50 手机版
解决时间 2021-04-01 12:53
- 提问者网友:捧腹剧
- 2021-03-31 16:39
为什么VC++6.0中 i=i++与i=++i结果相同
最佳答案
- 五星知识达人网友:污到你湿
- 2021-03-31 17:30
两个情况是不同的问题。
i=++i; 在执行的时候就先+1了,结果增加了1;i=i++;赋值的时候没有+1,但赋值结束后i++,结果同样增加了1;这个不必纠结。
for语句中,第一个条件是在所有语句之前执行,因此你++i还是i++都是执行了之后才去做其它语句,结果当然一致;第三个条件,在每次循环结束后“单独”执行,和条件一是一个情况,不会和其它语句干扰。
需要注意的是,前置后置加法,只针对当前语句有顺序问题,如果你for语句的第二个条件变成:
n>i++
和
n>++i
效果就不一样了。
i=++i; 在执行的时候就先+1了,结果增加了1;i=i++;赋值的时候没有+1,但赋值结束后i++,结果同样增加了1;这个不必纠结。
for语句中,第一个条件是在所有语句之前执行,因此你++i还是i++都是执行了之后才去做其它语句,结果当然一致;第三个条件,在每次循环结束后“单独”执行,和条件一是一个情况,不会和其它语句干扰。
需要注意的是,前置后置加法,只针对当前语句有顺序问题,如果你for语句的第二个条件变成:
n>i++
和
n>++i
效果就不一样了。
全部回答
- 1楼网友:行路难
- 2021-03-31 20:58
如果一开始i为2,那么,
i=i++相当于:i = i(i等于2); i = i + 1(i等于3);
i=++i相当于:i = i + 1(i等于3); i = i(i等于3);
结果当然一样拉。追问那为何a=i++与a=++i就不一样呢?
i=i++相当于:i = i(i等于2); i = i + 1(i等于3);
i=++i相当于:i = i + 1(i等于3); i = i(i等于3);
结果当然一样拉。追问那为何a=i++与a=++i就不一样呢?
- 2楼网友:拜訪者
- 2021-03-31 20:17
1)i=i++是未定性行为,不同的编译器结果不同。
2)for(i++;i<=n;++i)中,各个分号都是一个顺序点,i++和++i效果一样。i++的效果在顺序点结束之前实现。这句就好比 a=i++;a=++i;行为清晰。
2)for(i++;i<=n;++i)中,各个分号都是一个顺序点,i++和++i效果一样。i++的效果在顺序点结束之前实现。这句就好比 a=i++;a=++i;行为清晰。
- 3楼网友:春色三分
- 2021-03-31 18:42
嗯。你自己不都解答了麽。。。
a=i++; 分解为 a=i; i++;
同理,i=i++; 分解为 i=i; i++;
a=++i; => ++i; a=i;
同理,i=++i; ++i; i=i;
for(i++;i<=n;++i)可以转化为:
i++;
while(i<=n)
{
// todo something
++i;
}
a=i++; 分解为 a=i; i++;
同理,i=i++; 分解为 i=i; i++;
a=++i; => ++i; a=i;
同理,i=++i; ++i; i=i;
for(i++;i<=n;++i)可以转化为:
i++;
while(i<=n)
{
// todo something
++i;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯