Str[i] 在 for 循环中自动进行布尔值检查
Str[i] auto boolean check in the for loop
printArrayWithoutLength(char str [])
{
for(int i=0;str[i];i++)
cout<< str[i]<< endl;
}
为什么上述方法有效?我没有对长度使用布尔检查。
在 C 中,任何不是直接布尔表达式的条件(即布尔表达式以外的其他类型,不涉及比较运算符 [ >
, <
, ==
, !=
等]( 将自动比较为不等于零,因此您可以将代码重写为:
for(int i=0;str[i] != 0;i++)
或
for(int i=0;str[i] != ' ';i++)
或
for(int i=0; 0 != str[i]; i++)
具有完全相同的结果和生成的完全相同的代码。只是或多或少地打字,根据对 C 或 C++ 的熟悉程度,您可能会发现阅读一个或多或少更容易。
当然,这仅适用于以 nul-字符(值为零的字符(结尾的传统 C 样式字符串。还有其他方法可以存储字符串,如果字符串实际上没有以零字符结尾,则此代码以任何形式自然不起作用。
>将str[i]
写为 for
的条件表达式等效于 str[i] != ' '
(字符串应以 null 结尾(。当str[i]
变得