for (i = 0; i < (strlen(a) - strlen(b)+1); i++){……}
这时候很奇怪的是引发异常了 循环还在一直进行
而当我把程序改为
int m=0;
for (i = 0; i < (m=strlen(a) - strlen(b)+1); i++){……}
循环就在适当的时候终止了 这是为什么?
strlen()返回的类型是size_t,也就是无符号整型;可能和这个有关,第二个你是把它转换成了int类型的
比较奇怪,为啥这样写代码呢?
1. 每次都计算循环条件,非常不利于性能.因为strlen函数返回数值都是常数,所以最好这样做:
int m = strlen(a) - strlen(b)+1//确保了a和b的长度哪个长了吗?
thanks
每次循环都会重新计算(strlen(a) - strlen(b)+1)影响代码性能,在进入循环前,计算出来赋给一个变量