В чем разница между i ++ и ++ i в цикле while в c

Я знаю, что 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

Как такое могло случиться?

Ваше собственное первое предложение (Я знаю...) отвечает на ваш вопрос.

PM 77-1 13.09.2018 19:24

Почему вы ожидаете, что результаты нет будут отличаться? Для данного начального значения i выражения ++i и i++ дают разные значения. Если бы это было не так, было бы излишним иметь и то, и другое.

John Bollinger 13.09.2018 19:24

@ user2864740, комментарий избыточности был наблюдением постфактум, а не аргументом. Кроме того, хотя я согласен с тем, что нет никаких обещаний об отсутствии избыточности, я не думаю, что коммутативность оператора [] (или оператора +) демонстрирует возможность избыточности языка.

John Bollinger 13.09.2018 21:29
4
3
237
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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.

Я пытаюсь помочь вам, но английский не мой родной язык.

Другие вопросы по теме