
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++;都等价么? 展开
还有它 和while(*q++=*p++)
以及 while(*p!='\0') *q++=*p++;都等价么? 展开
3个回答
展开全部
要不要分号要具体看while()后面有没有“体”,不能一概而论。从这里的情况看()不应该有“体”,所以()后得有分号。
在while(*q++=*p++)后加一个分号写成while(*q++=*p++);,二者就是等价的。
与while(*p!='\0') *q++=*p++;是不等价的:前二者把'\0'拷进了q所指的数组,且使q和p都指向了'\0'后面的一个元素,而while(*p!='\0') *q++=*p++;并没有把'\0'拷贝进去,使q和p都指向了'\0'。
展开全部
不用加分号的,while里面的是一个循环判断语句,也就是一个布尔表达式,不需要加分号,另外你说的内几个表达式都是不等价的,比如int a = 3; ++a和a++是不一样的,在一个语句中,++a是先自加,再参与计算,a++是先将a参与计算,语句结束后再将a自加。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里的while((*q++=*p++)!='\0')是漏了分号,应该是while((*q++=*p++)!='\0');
下面的也是这样,漏了分号。
while((*q++=*p++)!='\0') ;它和while(*q++=*p++);等价。
比 while(*p!='\0') *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'也赋进去了才判断的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询