qq1242009750 发表于 2016-7-18 14:02:34

问一个自增的问题

while (*target1++ != '\0' && *target2++ != '\0') //检测*taeget1和*target2是否结束
      {
                if (*target1 != *target2)
                {
                     break;
                }
                index++;

      }


while (*target1 != '\0' && *target2 != '\0') //检测*taeget1和*target2是否结束
      {
                if (*target1++ != *target2++)
                {
                     break;
                }
                index++;

      }


为什么都是在自增的情况下if里的自增和在while的自增不一样呢? 这两个自增都是用了后置的++啊??? 为什么呢??

Krant5 发表于 2016-7-18 18:19:59

很简单,第一次判断的时候如果你自加了,第一个字符就被你跳过了没有比较,所以只能在if比较中自加

qq1242009750 发表于 2016-7-18 22:05:37

Krant5 发表于 2016-7-18 18:19
很简单,第一次判断的时候如果你自加了,第一个字符就被你跳过了没有比较,所以只能在if比较中自加

可是我的++是放在后面的啊,按道理来说,应该执行一次在自增的呀

Krant5 发表于 2016-7-18 22:40:25

qq1242009750 发表于 2016-7-18 22:05
可是我的++是放在后面的啊,按道理来说,应该执行一次在自增的呀

是的,第一个字符还没比较就增加到第二个去了,然后进行IF比较第二个字符,是不是少比较了一个呢

qq1242009750 发表于 2016-7-19 19:37:02

Krant5 发表于 2016-7-18 22:40
是的,第一个字符还没比较就增加到第二个去了,然后进行IF比较第二个字符,是不是少比较了一个呢

是呀!!       那说好的 后置++ 是先执行后自增的说法去哪里了??我就是想知道这个问题。。

qq1242009750 发表于 2016-7-19 19:37:39

qq1242009750 发表于 2016-7-19 19:37
是呀!!       那说好的 后置++ 是先执行后自增的说法去哪里了??我就是想知道这个问题。。

求解谢谢

Krant5 发表于 2016-7-19 20:02:26

先执行了第一个字符是否为‘\0’的比较再增加再跳到if语句执行两个字符串的比较,你说是不是先执行后自增呢?你是我见过的人里面最有想象力的

qq1242009750 发表于 2016-7-21 22:07:55

Krant5 发表于 2016-7-19 20:02
先执行了第一个字符是否为‘\0’的比较再增加再跳到if语句执行两个字符串的比较,你说是不是先执行后自增呢 ...

明白了明白了谢谢。。。

陌雨 发表于 2016-7-21 22:15:12

while (*target1++ != '\0' && *target2++ != '\0') // 对比了是否为\0以后还要 要++ 这一句才执行完
      {                                                                     
                if (*target1 != *target2)//因为已经++ 所以现在这里对比的是 target1+1 和target2+1后的值
                {
                     break;
                }
                index++;

      }


while (*target1 != '\0' && *target2 != '\0') //这里没有++
      {
                if (*target1++ != *target2++)// 这里就是对比的target1和target2 对比以后再做了++
                {
                     break;
                }
                index++;

      }

qq1242009750 发表于 2016-7-22 10:37:16

陌雨 发表于 2016-7-21 22:15
while (*target1++ != '\0' && *target2++ != '\0') // 对比了是否为\0以后还要 要++ 这一句才执行完
   ...

明白了,谢谢大家
页: [1]
查看完整版本: 问一个自增的问题