Я понимаю, что если printf не имеет аргументов, он выводит неожиданное значение.Printf без объяснений аргументов
Пример:
#include <stdio.h>
int main() {
int test = 4 * 4
printf("The answer is: %d\n");
return 0;
}
Это возвращает случайное число. После воспроизведения в разных форматах, таких как% p,% x и т. Д., Он не печатает 16 (потому что я не добавлял переменную в раздел аргумента). Мне хотелось бы знать, где берутся эти значения из? Это вершина стека? Это не новое значение каждый раз, когда я компилирую, что странно, это как фиксированное значение.
Это неопределенное поведение. Тот факт, что он кажется исправленным, - счастливая случайность. Это может быть из стека, может быть, из реестра ... вы не знаете, наплевать на него. –
1. С 'printf (« Ответ:% d \ n »)', вы передаете ** один ** аргумент. 2. Если этот аргумент указывает на строку с нулевым завершением, которая не содержит символ '' '' '' ', то' printf' выведет ожидаемое значение. –