首页 > 解决方案 > 在C中的for循环中使用分号而不使用任何命令

问题描述

这些代码做同样的工作。我不明白为什么

for ( ; *s1 = *s2; s1++, s2++ ) { ;}
for ( ; *s1 = *s2; s1++, s2++ ) {*s1=*s2;} 

标签: c

解决方案


循环的第二个子句将评估赋值的值,然后使用该值来确定是否继续循环,因此两个循环都将复制s2s1until *s1 == 0。如果s1s2是相同类型的指针,那么当*s2 == 0. 如果它们不是同一类型,那么这是很可能不正确的棘手代码。

第二个循环包含一个完全冗余的主体,因为它只是重复循环的第二个子句已经完成的事情。


推荐阅读