A char
- это C является целочисленным типом, как short
, int
, long
и long long
(и многие другие типы):
Он определяется как наименьшая адресуемая единица на машине, на которой вы компилируете, и обычно составляет 8 битов, что означает, что он может содержать значения от -128 до 127. А беззнаковый символ может содержать значения от 0 до 255.
В приведенном выше примере он работает как итератор, поскольку он все время останавливается до 50
и может содержать значения до 127. В то время как тип int обычно может содержать значения до 2 147 483 647, но занимает в 4 раза больше места в машине как 8 битный символ Гарантируется, что int только по крайней мере 16 бит в C, что означает значения от -32 768 до 32 767 или 0 - 6,5535
для целого без знака.
Таким образом, ваш цикл просто обращается к элементам в вашем массиве, один за другим, например words[0]
в начале, чтобы посмотреть на первый символ, а затем words[1]
, чтобы посмотреть на следующий символ. Поскольку вы используете символ, который, как я предполагаю, на вашей машине составляет 8 бит, это очень распространено. Вашего char будет достаточно, чтобы хранить итератор для вашего цикла, пока он не превысит 127. Если вы прочитаете более 127 символов (вместо 50) и используете char для итерации, вы столкнетесь со странными проблемами, так как char не может удерживайте 128 и вернитесь к -128. Причинение вам доступа к words[-128]
, что, скорее всего, приведет к ошибке сегментации.