鱼C论坛

 找回密码
 立即注册
查看: 1854|回复: 9

问一个自增的问题

[复制链接]
发表于 2016-7-18 14:02:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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的自增不一样呢? 这两个自增都是用了后置的++啊??? 为什么呢??
if  .png
while  .png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-18 18:19:59 | 显示全部楼层
很简单,第一次判断的时候如果你自加了,第一个字符就被你跳过了没有比较,所以只能在if比较中自加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可是我的++是放在后面的啊,按道理来说,应该执行一次在自增的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是的,第一个字符还没比较就增加到第二个去了,然后进行IF比较第二个字符,是不是少比较了一个呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-19 19:37:02 | 显示全部楼层
Krant5 发表于 2016-7-18 22:40
是的,第一个字符还没比较就增加到第二个去了,然后进行IF比较第二个字符,是不是少比较了一个呢

是呀!!       那说好的 后置++ 是先执行后自增的说法去哪里了??  我就是想知道这个问题。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

求解  谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-19 20:02:26 | 显示全部楼层
先执行了第一个字符是否为‘\0’的比较再增加再跳到if语句执行两个字符串的比较,你说是不是先执行后自增呢?你是我见过的人里面最有想象力的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白了  明白了  谢谢  。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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++;

        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白了,谢谢大家
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 06:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表