Любая причина для следующей аберрации?Отклонение Microsoft C от стандарта
Рассмотрим следующую программу C (названный PstFixInc.c)
#include <stdio.h>
int main (int argc, char *argv [])
{
int num = 0;
num = (num++) % 4;
printf ("num: %d\n",num);
return 0;
}
Если скомпилирован с gcc 4.8.1
:
НКУ -o PstFix.exe PstFixInc.c
, а затем вы получаете результат:
Num: 0
Если скомпилирован с Microsoft (R) C/C++ оптимизирующий компилятор версии 18.00.21005.1 для x86
кл PstFixInc.c
и затем казнены, вы получить результат:
Num: 1
его зависит от компилятора! – Sathish
'num = (num ++)% 4;' имеет неопределенное поведение. См. Http://stackoverflow.com/a/4176333/12711 –
Это задается довольно часто - найдите «точки последовательности» для получения дополнительной информации. В принципе, нет, оба компилятора правы, и да, ваш код сломан. – milleniumbug