社区
C语言
帖子详情
while(*p++ = *q++ != ‘0’)
yht8708
2011-09-13 09:41:26
(实际='0'并不需要,只是问一下)上面这个式子运算顺序是不是先检测*q是否等于0,然后把*q赋给*p,然后while再检测*p的值是否为0?
在编strcat()时,加上这个=‘0’结果就不正确。
...全文
452
14
打赏
收藏
while(*p++ = *q++ != ‘0’)
(实际='0'并不需要,只是问一下)上面这个式子运算顺序是不是先检测*q是否等于0,然后把*q赋给*p,然后while再检测*p的值是否为0? 在编strcat()时,加上这个=‘0’结果就不正确。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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',测试条件成立。
古怪的C
++
语法*p
++
=*q
++
本文详细解析了C语言中复杂指针操作的原理及应用,通过实例代码演示了如何利用后置自增操作实现字符串复制,并对比了传统循环结构与高效指针操作的异同。
while(*p
++
)的执行顺序
本文通过一个C语言示例,展示了如何使用while循环进行字符串的逐字符复制过程。从源字符串I love China. And I love Chinese food.中,通过指针操作,将每个字符逐一复制到目标字符串中,并在最后输出复制后的字符串。
strncpy函数自建和while(与指针等问题)
本文探讨了 C 语言中 strncpy 函数的工作原理,包括如何自定义实现该函数。通过分析代码和测试,解释了指针操作在函数中的作用,特别关注了 `while(*p1
++
!= '
C语言练习题(14) 有以下函数,该函数的功能是( )int fun(char *s) { char *t = s; while(*t
++
); return(t-s); }(非常详细的讲解)
文章讨论了计算字符串长度的函数、指针在数组和内存操作中的应用,以及解决MasterMind游戏中的猜数问题,涉及数组下标计算和优化算法
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章