я случайно кодирования, когда я писал этот код С:пост-инкремент оператора в C
#include <stdio.h>
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",sizeof(i++));
printf("i : %d\n",i);
return 0;
}
И когда я запускал код, результат я получаю,
i : 10
sizeof(i++) is: 4
i : 10
Я был сбит с толку по этому результату, поскольку я ожидал, что i ++ внутри оператора sizeof будет увеличиваться i. Но, похоже, нет. Так, из любопытства я написал следующую программу:
#include <stdio.h>
int add(int i)
{
int a = i + 2;
return 4;
}
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",add(i++));
printf("i : %d\n",i);
return 0;
}
для этой программы, выход:
i : 10
sizeof(i++) is: 4
i : 11
Теперь я все больше и больше сбит с толку.
Извините, если это вопрос noob (каким я есть), но я действительно не понимаю даже, как google для такой проблемы!
Почему значение i отличается в этих двух программах? Пожалуйста помоги!
@ ring0 Я запускаю gcc 4.6.3 поверх виртуальной машины Ubuntu 12.04 поверх Windows. – user2290802