c - 在C中的for循环中使用分号而不使用任何命令
问题描述
这些代码做同样的工作。我不明白为什么
for ( ; *s1 = *s2; s1++, s2++ ) { ;}
for ( ; *s1 = *s2; s1++, s2++ ) {*s1=*s2;}
解决方案
循环的第二个子句将评估赋值的值,然后使用该值来确定是否继续循环,因此两个循环都将复制s2
到s1
until *s1 == 0
。如果s1
和s2
是相同类型的指针,那么当*s2 == 0
. 如果它们不是同一类型,那么这是很可能不正确的棘手代码。
第二个循环包含一个完全冗余的主体,因为它只是重复循环的第二个子句已经完成的事情。
推荐阅读
- batch-file - 打开批处理时执行命令
- python - python - 如何在python中使用逻辑(“或”)和for循环对DataFrame进行切片?
- forum - 如何从外部过滤 vBulletin 论坛
- python - 如何检测隐藏按钮?
- docker - apt安装在Dockefile中
- html - 浮动属性对两个不同的容器有不同的作用
- regex - 如何使用正则表达式从给定文本中捕获第二个匹配项
- c# - 如何获取与 Dynamics 365 c# 中的实体或字段名称相同的所有语言的视图名称?
- c# - 如何使用 c# 禁用组合框的自动填充?
- reactjs - 如何设置计数器来计算每个帖子的查看次数