#c #for-loop #strlen
#c #for-цикл #strlen
Вопрос:
Я узнал об этом маленьком трюке, чтобы сделать этот код более длинным (не i < strlen )…
for (int i = 0; i < strlen(string1); i )
{
printf("%c", string1[i]);
}
… в этот более краткий код (обратите внимание на переменную n):
for (int i = 0, n = strlen(string1); i < n; i )
{
printf("%c", string1[i]);
}
мой вопрос в том, почему НЕ «size_t n = strlen(string1)»? Почему вы не указываете n тип данных?
Спасибо!
Комментарии:
1. Вы задали
n
тип данных, это anint
.2. Конечно! Я вижу, что происходит. Это ничем не отличается от высказывания «int a, b, c» и т. Д. Понятно. Большое вам спасибо!
3. Результатом вызова (не void) функции является выражение . Итак, сравнение сводится к
i < expression
BTW: выражение тоже имеет тип.4.
strlen()
ВОЗВРАТsize_t
. Преобразование результата вint
не очень хорошая идея.5. Лучше использовать
for (size_t i = 0; string1[i]; i )
который останавливается на нулевом символе .