这个语句是怎么运行的
……while (n-- && (*target2++ = *target1++) != '\0')
;
……
谢谢各位鱼油 首先判断n是否为零,不为零自动减一,然后判断后面的,具体后面怎么判断,我也不是很懂,,只能指点到这里了。。 前来学习 依据“运算符优先级”就容易得多了。
for(;;)
{
*target2 = *target1;
if((n && *target2) == 0)
{
*target1++;
*target2++;
n--;
break;
}
*target1++;
*target2++;
n--;
.....
} 应该是这样:
while(1){
if(n != 0){
*terget1 = *terget2;
if(*terget1 != '\0'){
/*code*/
}
terget1++;
terget2++;
}
n--;
}
看下 buqingchu “*target2++ =”应该是不对的:target2++是target2所标记的增加1后的值,也就是一个常量。常量是不能被赋值的。 mingcxx 发表于 2016-6-23 08:39
“*target2++ =”应该是不对的:target2++是target2所标记的增加1后的值,也就是一个常量。常量是不能被赋 ...
这个的意思是*(target+1) 本帖最后由 mingcxx 于 2016-6-26 13:16 编辑
qq1242009750 发表于 2016-6-23 11:01
这个的意思是*(target+1)
不好意思,没看清{:10_257:}那么两个target就是字符指针。代码就是这么运行的:如果n>0则减小1,继续执行,将target1指向的字符复制到target2,然后这两个字符指针增加一指向下一字符空间,如果复制到target2的字符不是空字符'\',进入循环。直到n>0为假,则整个与&&表达式为假,不执行 (*target2++ = *target1++) != '\0')这部分,直接退出(复制了前n个字符到target2);或者复制到target2的字符为空字符时也退出(复制了整个字符串到target2)
代码功能:就是将target1的字符串拷贝到target2,最多拷贝n个字符。也就是字符串函数strcpyn()的自定义写法。
再交流!
页:
[1]