странный для синтаксиса цикла в C ++ - PullRequest
2 голосов
/ 18 марта 2019

Я читаю counting sort алгоритм на Geeksforgeeks .Я понял алгоритм, но у меня проблема в следующем синтаксисе 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 Ответ

5 голосов
/ 18 марта 2019

arr[i] оценивается как символ.Если это нулевой символ, цикл завершается.Вы можете думать об этом как

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

В C ++ любое значение, отличное от 0, оценивается как true.'\0' кодируется как 0 и, следовательно, arr[i] будет иметь значение false, когда его значение станет '\0'.

n4659-§ 5.3 / 3:

[...] нулевой символ (соответственно, нулевой широкий символ), значение которого 0 [...]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...