问一个自增的问题
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比较中自加 Krant5 发表于 2016-7-18 18:19
很简单,第一次判断的时候如果你自加了,第一个字符就被你跳过了没有比较,所以只能在if比较中自加
可是我的++是放在后面的啊,按道理来说,应该执行一次在自增的呀 qq1242009750 发表于 2016-7-18 22:05
可是我的++是放在后面的啊,按道理来说,应该执行一次在自增的呀
是的,第一个字符还没比较就增加到第二个去了,然后进行IF比较第二个字符,是不是少比较了一个呢
Krant5 发表于 2016-7-18 22:40
是的,第一个字符还没比较就增加到第二个去了,然后进行IF比较第二个字符,是不是少比较了一个呢
是呀!! 那说好的 后置++ 是先执行后自增的说法去哪里了??我就是想知道这个问题。。 qq1242009750 发表于 2016-7-19 19:37
是呀!! 那说好的 后置++ 是先执行后自增的说法去哪里了??我就是想知道这个问题。。
求解谢谢 先执行了第一个字符是否为‘\0’的比较再增加再跳到if语句执行两个字符串的比较,你说是不是先执行后自增呢?你是我见过的人里面最有想象力的 Krant5 发表于 2016-7-19 20:02
先执行了第一个字符是否为‘\0’的比较再增加再跳到if语句执行两个字符串的比较,你说是不是先执行后自增呢 ...
明白了明白了谢谢。。。 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++;
} 陌雨 发表于 2016-7-21 22:15
while (*target1++ != '\0' && *target2++ != '\0') // 对比了是否为\0以后还要 要++ 这一句才执行完
...
明白了,谢谢大家
页:
[1]