#include <stdio.h>
#include <ctype.h>

int main(void)
{
char str[80], *p;

printf("文字列を入力してください:");
gets(str);
p=str;

while(*p) {
*p++ = toupper(*p);
}

printf("%s\n", str); /* 大文字の文字列 */

return 0;
}
実行結果 hiro→HIRO

参考書のとおりにやったんですが、僕は実行結果がhIROになるとおもってました。
なぜかというと最初のp=strでstr[0]のアドレスがpに入りますよね。でwhileループで
一番最初に*p++ = toupper(*p)としていますが、この一文は最初にp++でpをインクリメントしてしまい
pはstr[1]を指し、str[0]を飛ばしてしまうとおもったのですが・・

わかりません。よろしくお願いします。