鱼C论坛

 找回密码
 立即注册
查看: 3316|回复: 10

这个语句是怎么运行的

[复制链接]
发表于 2016-6-18 21:28:39 | 显示全部楼层 |阅读模式

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

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

x
……
while (n-- && (*target2++ = *target1++) != '\0')
                ;
……


谢谢各位鱼油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-18 21:40:55 | 显示全部楼层
首先判断n是否为零,不为零自动减一,然后判断后面的,具体后面怎么判断,我也不是很懂,,只能指点到这里了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-18 22:15:11 | 显示全部楼层
前来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-19 21:28:25 | 显示全部楼层
依据“运算符优先级”就容易得多了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-20 15:19:48 | 显示全部楼层

  1. for(;;)
  2. {
  3.         *target2 = *target1;

  4.         if((n && *target2) == 0)
  5.         {
  6.                 *target1++;
  7.                 *target2++;
  8.                 n--;       
  9.                 break;
  10.         }
  11.         *target1++;
  12.         *target2++;
  13.         n--;
  14.         .....
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-20 19:57:19 | 显示全部楼层
应该是这样:
  1. while(1){
  2.     if(n != 0){
  3.         *terget1 = *terget2;
  4.         if(*terget1 != '\0'){
  5.            /*code*/
  6.         }
  7.         terget1++;
  8.         terget2++;
  9.     }
  10.     n--;
  11. }



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

使用道具 举报

发表于 2016-6-21 00:43:42 | 显示全部楼层
看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-22 16:09:46 | 显示全部楼层
buqingchu
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-23 08:39:15 | 显示全部楼层
“*target2++ =”应该是不对的:target2++是target2所标记的增加1后的值,也就是一个常量。常量是不能被赋值的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-23 11:01:46 | 显示全部楼层
mingcxx 发表于 2016-6-23 08:39
“*target2++ =”应该是不对的:target2++是target2所标记的增加1后的值,也就是一个常量。常量是不能被赋 ...

这个的意思是*(target+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-25 11:42:44 | 显示全部楼层
本帖最后由 mingcxx 于 2016-6-26 13:16 编辑
qq1242009750 发表于 2016-6-23 11:01
这个的意思是*(target+1)


不好意思,没看清那么两个target就是字符指针。代码就是这么运行的:如果n>0则减小1,继续执行,将target1指向的字符复制到target2,然后这两个字符指针增加一指向下一字符空间,如果复制到target2的字符不是空字符'\',进入循环。直到n>0为假,则整个与&&表达式为假,不执行 (*target2++ = *target1++) != '\0')这部分,直接退出(复制了前n个字符到target2);或者复制到target2的字符为空字符时也退出(复制了整个字符串到target2)
代码功能:就是将target1的字符串拷贝到target2,最多拷贝n个字符。也就是字符串函数strcpyn()的自定义写法。
再交流!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 14:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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