while(*p++=*q++) 和 while((*p++=*q++)!='
')的区别 while(*p++=*q++) 和 while((*p++=*q++)!='
')的区别
while(*p++=*q++) 和 while((*p++=*q++)!='\0')的区别
请教,比如在实现strcpy()的时候,对于字符串结束符很关键,但是我看到很多地方这两者是一个意思…
迷惑了…谢谢…
请教,比如在实现strcpy()的时候,对于字符串结束符很关键,但是我看到很多地方这两者是一个意思…
迷惑了…谢谢…
8 个解决方案
#1
这两个是一个意思。
'\0'转换成int就是0,0就是false。
明白了不?
'\0'转换成int就是0,0就是false。
明白了不?
#2
一个意思。后一个看上去清楚些
#3
(*p++=*q++)赋值表达式的值就是*q的值,*q 的值为'\0'的话就是0,也就是false
#4
上面的说的差不多了。不知道楼主是否理解。
重点:
1.赋值表达式的值为其左操作数的值,赋值表达式的类型为其左操作数的类型。
2.'\0'的值就是0;
结论:两种写法相同;
但我更喜欢:while((*p++=*q++) != '\0')
重点:
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()的时候,对于字符串结束符很关键,但是我看到很多地方这两者是一个意思…
迷惑了…谢谢…
请教,比如在实现strcpy()的时候,对于字符串结束符很关键,但是我看到很多地方这两者是一个意思…
迷惑了…谢谢…
8 个解决方案
#1
这两个是一个意思。
'\0'转换成int就是0,0就是false。
明白了不?
'\0'转换成int就是0,0就是false。
明白了不?
#2
一个意思。后一个看上去清楚些
#3
(*p++=*q++)赋值表达式的值就是*q的值,*q 的值为'\0'的话就是0,也就是false
#4
上面的说的差不多了。不知道楼主是否理解。
重点:
1.赋值表达式的值为其左操作数的值,赋值表达式的类型为其左操作数的类型。
2.'\0'的值就是0;
结论:两种写法相同;
但我更喜欢:while((*p++=*q++) != '\0')
重点:
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
非常感谢楼上各位,刚才看到东西使得脑子短路了,然后用手机发了这个帖子,哈哈。
还是谢谢了。。。
还是谢谢了。。。
')的区别