在C ++中奇怪的for循环语法

时间:2019-03-18 06:30:00

标签: c++ algorithm for-loop syntax

我正在阅读Geeksforgeeks上的counting sort算法。我已经了解了算法,但是在以下for loop语法中遇到了问题。

for(int i=0; arr[i]; i++) {
 ++count[arr[i]];
 }

在这里,arr[]是一个char数组,而count[]是一个integer数组。

我尝试使用以下代码,但是它什么也没做:-

 for(int i =0; "c";i++){
    cout<<i;
}

请帮助我理解这种for loop

1 个答案:

答案 0 :(得分:5)

arr[i]得出一个字符。如果为空字符,则循环将终止。您可以将其视为

for(int i=0; arr[i] != '\0'; i++) {}

在C ++中,除0以外的其他任何值均取值为true'\0'编码为0,因此,当arr[i]的值变为false时将得出'\0'

n4659-§5.3 / 3:

  

[...]空字符(分别为空宽字符),其值为0 [...]