while(*p++ = *q++ != ‘0’)

yht8708 2011-09-13 09:41:26
(实际='0'并不需要,只是问一下)上面这个式子运算顺序是不是先检测*q是否等于0,然后把*q赋给*p,然后while再检测*p的值是否为0?
在编strcat()时,加上这个=‘0’结果就不正确。
...全文
335 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
szqh97 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yang122610 的回复:]

0 ,'0' ,'\0',null ,“0”要整清楚哦、、、
[/Quote]
++ 应该是'\0'd
yht8708 2011-09-14
  • 打赏
  • 举报
回复
是的,我是想知道这样的话 是先把*q值赋给*p 然后while再取检查*p的值是否为0是吗


[Quote=引用 7 楼 anyidan 的回复:]
while(*p++ = *q++);

标准库中的用法
[/Quote]
cpprogrammer 2011-09-14
  • 打赏
  • 举报
回复
说实话,千万不要这样用。最好把i++或是++i单独写一行,如果非要在while()中包含自增或是自减,
语句应该尽量简洁。
今天刚好看了《 c primer plus》相关的内容,该书作者也是这样建议的,我也觉得他的建议是正确的,
虽然我的编程经验还很少。
上面举了几个例子,说明了不同编译器对类似语句的解释不同,使用须谨慎!
muku9527 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 matrixcl 的回复:]
while(*p++ = *q++ != '\0')
等价
while(*p++ = (*q++ != '\0'))

这个肯定不是你想要的。
[/Quote]

支持,建议LZ家个括号
wyfwx 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yht8708 的回复:]
是的,我是想知道这样的话 是先把*q值赋给*p 然后while再取检查*p的值是否为0是吗



引用 7 楼 anyidan 的回复:
while(*p++ = *q++);

标准库中的用法
[/Quote]
yes
wyfwx 2011-09-14
  • 打赏
  • 举报
回复
直接用 0x0 也可以
matrixcl 2011-09-13
  • 打赏
  • 举报
回复
while(*p++ = *q++ != '\0')
等价
while(*p++ = (*q++ != '\0'))

这个肯定不是你想要的。
AnYidan 2011-09-13
  • 打赏
  • 举报
回复
while(*p++ = *q++);

标准库中的用法
快乐的小菜鸟 2011-09-13
  • 打赏
  • 举报
回复
他们都说这么多了 菜鸟表示 while的用法还是很吸引人的
动感超哥 2011-09-13
  • 打赏
  • 举报
回复
0 ,'0' ,'\0',null ,“0”要整清楚哦、、、
月光的护城河 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lvjing_csdn 的回复:]
=运算符是右结合性,这个式子是先把字符'0'赋值给*q,然后把*q的值赋值给*p,赋值完之后p、q各自加一次。whil循环测试的内容是*p,即'0',测试条件成立。
[/Quote]

不对吧,我觉得楼主说的是对的,“!=”的优先级在这里面最高。。

”在编strcat()时,加上这个=‘0’结果就不正确“
'0'和'\0',不是一回事
luciferisnotsatan 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lvjing_csdn 的回复:]

楼主注意'0'和'\0',不是一回事。如果你不加=‘0’,当*q==’\0‘时while测试条件就不成立了,就退出了循环。
[/Quote]
++

代码里,应该是 '\0'吧
lvjing_CSDN 2011-09-13
  • 打赏
  • 举报
回复
楼主注意'0'和'\0',不是一回事。如果你不加=‘0’,当*q==’\0‘时while测试条件就不成立了,就退出了循环。
lvjing_CSDN 2011-09-13
  • 打赏
  • 举报
回复
=运算符是右结合性,这个式子是先把字符'0'赋值给*q,然后把*q的值赋值给*p,赋值完之后p、q各自加一次。whil循环测试的内容是*p,即'0',测试条件成立。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧