C语言,请问这里的while((*q++=*p++)!='\0') 不用加分号么? 还有它 和w 10

C语言,请问这里的while((*q++=*p++)!='\0')不用加分号么?还有它和while(*q++=*p++)以及while(*p!='\0')*q++=*p+... C语言,请问这里的while((*q++=*p++)!='\0') 不用加分号么?
还有它 和while(*q++=*p++)
以及 while(*p!='\0') *q++=*p++;都等价么?
展开
 我来答
White_MouseYBZ
2017-10-04 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:7155万
展开全部
  1. 要不要分号要具体看while()后面有没有“体”,不能一概而论。从这里的情况看()不应该有“体”,所以()后得有分号。

  2. 在while(*q++=*p++)后加一个分号写成while(*q++=*p++);,二者就是等价的。

  3. 与while(*p!='\0') *q++=*p++;是不等价的:前二者把'\0'拷进了q所指的数组,且使q和p都指向了'\0'后面的一个元素,而while(*p!='\0') *q++=*p++;并没有把'\0'拷贝进去,使q和p都指向了'\0'。

张未来T6
推荐于2018-08-13 · TA获得超过484个赞
知道小有建树答主
回答量:261
采纳率:100%
帮助的人:56.4万
展开全部
不用加分号的,while里面的是一个循环判断语句,也就是一个布尔表达式,不需要加分号,另外你说的内几个表达式都是不等价的,比如int a = 3; ++a和a++是不一样的,在一个语句中,++a是先自加,再参与计算,a++是先将a参与计算,语句结束后再将a自加。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

推荐于2017-10-04 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:2亿
展开全部
这里的while((*q++=*p++)!='\0')是漏了分号,应该是while((*q++=*p++)!='\0');
下面的也是这样,漏了分号。
while((*q++=*p++)!='\0') ;它和while(*q++=*p++);等价。
比 while(*p!='\0') *q++=*p++;的最后会多复制一个'\0'。
更多追问追答
追问
那我要是写成while(*p!='\0') *q++=*p++;就不要q--这句的吧?(它是现判断再赋值)

还有,while((*q++=*p++)!='\0')是先赋值再判断是吧,所以最后一步把'\0'也赋进去了才判断的?
追答
要是写成while(*p!='\0') *q++=*p++;就不要q--这句的。

还有,while((*q++=*p++)!='\0')是先赋值再判断是吧,所以最后一步把'\0'也赋进去了才判断的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式