今天发现了C/C++里面for的一个不常见到的用法,来水一篇文章。
今天看到一个技术交流群上面分享了下面这一段代码;
1 |
|
请注意这一行for(int i = s.size(); i--;){
乍一看循环根本不能跳出,使用g++编译,发现得到了正确的反向字符串。
我们使用char[]
代替string
,并跟踪i,发现i实现了递减,并且当(i--)
等于0时,循环跳出。
1 |
|
于是得出初步结论,for(A;B;C)
语句中,当C为空时,B在更新循环标记的同时起返回值作为循环结束的条件。其作用相当于下面代码中的judge_end
函数。
1 |
|