i++和++i的区别

文章的楼主连左值都可以运算,还若无其事得当作可以编译,在那讲解,若无其事就算了,可以当做没有发现编译问题,但是那讲解也太误导人了吧?然后我跟帖的楼下还出现一个“石破天”,以教导式的口吻,在那讲解,不知道的人岂不是就信了吗?真真一群害人之马,当然我只是指其中几位,很多跟帖的朋友,我自认还是不如的。

就为了这个影响广泛的害人帖子(在csdn上弹框出来,影响能不小吗?),我也来探讨一下i++,我是菜鸟,我不会用教导式口吻来讲解。

首先说文章楼主提到的

<div bg_java"="" style="color: rgb(51, 51, 51); font-family: verdana, sans-serif; font-size: 13px; width: 685px; line-height: 25px;">
if((i++=j++)!=4){}

看到这句代码我真想喷,因为这让我对自己产生了不自信,还去编译了一下,果然是错误的,左边怎么能够进行运算呢?楼主真强大...为什么昨天没有写文章,没有情绪激动,因

为我知道C++风格也是这样赋值,不知道能不能编译过去,但是今天看到跟帖的朋友说,VC98过不去,DEV-C++也过不去,我才感到真有一种被耍的感觉。“左值能运算吗?What the hell!"这一句,只是骂我自己怀疑自己,没有对其他任何人。

假设,楼主是手误,咱们来一个正确的能编译的代码讨论一下:

temp=j;//先赋
j=j+1;//后加
i=temp;

再来一个i = ++j:这一句应该被拆分为:

/*这个是原式,尊重版权,但是误导人*/
inti=10;
i=i+++i++;//20--这里应该会是21,notebyjacob
i=++i+++i;//44--这里应该会是45,notebyjacob

首先咱们把这都拆开来理解:

/*第二个i=++i+++i;*/
i=i+1;
temp1=i;
i=i+1;
temp2=i;
i=temp1+temp2;


这样的例子,应该算是比较复杂的吧?如果需要,还可以来一个更加复杂的,不过不再详细解释,大家可以拿来推敲一下:

<div bg_java"="" style="color: rgb(51, 51, 51); font-family: verdana, sans-serif; font-size: 13px; width: 685px; line-height: 25px;">
intj=0,k=0,h=0;
k=k+++k+++k+++++k;//k==7
j=++j+j+++j+++j++;//j==7;
h=++h+++h;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值