Вы должны прочитать больше о C программировании.
И вы должны включить все предупреждения и отладку при компиляции. С GCC это означает gcc -Wall -Wextra -g
(по крайней мере, в Linux).
При компиляции с
gcc -Wall -Wextra -g john.c -o john
Я получаю следующие предупреждения:
john.c: In function ‘main’:
john.c:4:5: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
john.c:4:5: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
john.c:4:5: warning: format ‘%d’ expects a matching ‘int’ argument [-Wformat]
john.c:3:9: warning: unused variable ‘myInt’ [-Wunused-variable]
Итак, поправка проста:
/* file john.c */
#include <stdio.h>
int main(void)
{
int myInt = 5;
printf("myInt = %d\n", myInt);
return 0;
}
, который компилируется без предупреждений.
Обратите внимание на \n
в конце строки формата printf
. Это важно.
Всегда включить все предупреждения, которые компилятор может дать вам , и доверять компилятору, поэтому исправляйте свой код до тех пор, пока не будут выданы предупреждения.
и научитесь использовать отладчик (например, gdb
в Linux).
Наблюдаемое вами поведение неопределенное поведение ; что-либо может произойти с реализацией, соответствующей стандарту из C (даже взрыв).
Счастливого взлома.