Я знаю, что i ++ означает возврат i, а затем увеличение 1, а ++ i означает увеличение 1, а затем возврат i. В этом коде:
int isTotalAlphabetical(char word[]){
int i = 0;
while (word[i] != '\0') {
printf("The %dth is: %d, the char is %c\n", i,isalpha(word[i]), word[i]);
if (!isalpha(word[i])){
printf("now return 0, because the %c is not alpha, it's the %d char\n", word[i], i);
return 0;
}
i++;
}
return 1;
}
В этом цикле, когда я перемещаю i ++ в «while (word [i ++]! = '\ 0')», вывод будет выводить информацию, которая
The 2th is: 1, the char is p
The 3th is: 1, the char is l
The 4th is: 1, the char is e
The 5th is: 0, the char is
now return 0, because the is not alpha, it's the 5 char
Когда я перемещаю ++ i в «while (word [++ i]! = '\ 0')», вывод будет игнорировать первый символ. это показывает:
The 1th is: 1, the char is p
The 2th is: 1, the char is p
The 3th is: 1, the char is l
The 4th is: 1, the char is e
Как такое могло случиться?
Почему вы ожидаете, что результаты нет будут отличаться? Для данного начального значения i
выражения ++i
и i++
дают разные значения. Если бы это было не так, было бы излишним иметь и то, и другое.
@ user2864740, комментарий избыточности был наблюдением постфактум, а не аргументом. Кроме того, хотя я согласен с тем, что нет никаких обещаний об отсутствии избыточности, я не думаю, что коммутативность оператора []
(или оператора +
) демонстрирует возможность избыточности языка.
Ex1:
int x=1; int y = 2 + (x++);
Значение y равно 3, потому что x присваивается 1. После вычисления значения y значение x увеличивается на 1.
Пример 2:
int y = 2 +(++x); The value of y is 4 because the value of x is increased 1 unit before caculating y’s value.
Я пытаюсь помочь вам, но английский не мой родной язык.
Ваше собственное первое предложение (Я знаю...) отвечает на ваш вопрос.