阅读背景:

while(*p++=*q++) 和 while((*p++=*q++)!='\0')的区别

来源:互联网 
while(*p++=*q++) 和 while((*p++=*q++)!='
while(*p++=*q++) 和 while((*p++=*q++)!='\0')的区别
请教,比如在实现strcpy()的时候,对于字符串结束符很关键,但是我看到很多地方这两者是一个意思…
迷惑了…谢谢…

8 个解决方案

#1


这两个是一个意思。

'\0'转换成int就是0,0就是false。
明白了不?

#2


一个意思。后一个看上去清楚些

#3


(*p++=*q++)赋值表达式的值就是*q的值,*q 的值为'\0'的话就是0,也就是false

#4


上面的说的差不多了。不知道楼主是否理解。

重点:
1.赋值表达式的值为其左操作数的值,赋值表达式的类型为其左操作数的类型。
2.'\0'的值就是0;


while(*p++=*q++)   // *p++=*q++ 该表达式的值为*p的值。如果*p为'\0'(0的值就是'\0')则while语句结束。


结论:两种写法相同;

但我更喜欢:while((*p++=*q++) != '\0')


#5


该回复于2010-10-14 16:20:31被版主删除

#6


一样,但貌似while((*p++=*q++) != '\0')更清晰点

#7


恩,同意楼上各位达人!

#8


非常感谢楼上各位,刚才看到东西使得脑子短路了,然后用手机发了这个帖子,哈哈。
还是谢谢了。。。

')的区别 while(*p++=*q++) 和 while((*p++=*q++)!='
while(*p++=*q++) 和 while((*p++=*q++)!='\0')的区别
请教,比如在实现strcpy()的时候,对于字符串结束符很关键,但是我看到很多地方这两者是一个意思…
迷惑了…谢谢…

8 个解决方案

#1


这两个是一个意思。

'\0'转换成int就是0,0就是false。
明白了不?

#2


一个意思。后一个看上去清楚些

#3


(*p++=*q++)赋值表达式的值就是*q的值,*q 的值为'\0'的话就是0,也就是false

#4


上面的说的差不多了。不知道楼主是否理解。

重点:
1.赋值表达式的值为其左操作数的值,赋值表达式的类型为其左操作数的类型。
2.'\0'的值就是0;


while(*p++=*q++)   // *p++=*q++ 该表达式的值为*p的值。如果*p为'\0'(0的值就是'\0')则while语句结束。


结论:两种写法相同;

但我更喜欢:while((*p++=*q++) != '\0')


#5


该回复于2010-10-14 16:20:31被版主删除

#6


一样,但貌似while((*p++=*q++) != '\0')更清晰点

#7


恩,同意楼上各位达人!

#8


非常感谢楼上各位,刚才看到东西使得脑子短路了,然后用手机发了这个帖子,哈哈。
还是谢谢了。。。

')的区别



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: