2013-12-01 3 views
-2

Мой C код:Невозможно понять правильный вывод моей программы C

void main() 
{ 
int a=5,b=6,c=11; 
clrscr(); 
printf("%d %d %d"); 
getch(); 
} 

Когда я скомпилировал его, он дает компиляции ошибки времени, но ответ на этот вопрос: 11 6 5

Я не могу понять, как вывод 11 6 5

Пожалуйста, кто-нибудь скажет правильный результат с правильным объяснением.

Благодаря

+7

_»Ответ на этот вопрос это ... »_ выбросить эту книгу в корзину – P0W

+0

Причина, по которой« ответ »указан как 11 6 5, заключается в том, что человек, который написал вопрос, предполагает, что значения 5, 6 и 11 все еще будут сидеть на стек стека, когда вызывается printf, и что он будет действовать так, как если бы это были th e аргументов функции. Но нет никакой гарантии, что машина будет вести себя таким образом, когда вы запустите программу, и надлежащий компилятор (как вы уже нашли) откажется от компрометации, как это. Другие ответчики правы, что это неопределенное поведение, и тот, кто написал этот вопрос, должен вернуться в школу. –

ответ

0

поведение программы является неопределенным. Вы хорошо получаете что угодно.

Вы не передаете аргументы функции printf, ожидая три аргумента типа int. Заявление

printf("%d %d %d",c, b, a); 

даст вам желаемый результат.

11 6 5 
+1

Эта цитата не имеет ничего общего с рассматриваемым кодом. –

1

Программа имеет неопределенное поведение, так как строка формата printf необходимо передать три дополнительных int аргументы, которые вы не делаете. Может произойти все, что угодно. Печать определенного результата - это одна из форм «ничего».

2

его поведение не определено. если вы хотите, чтобы показать значения а, Ь, с, вы должны быть закодированы, как показано ниже:

printf("%d%d%d",a,b,c);

теперь выход:

5 6 11 
+0

Точно, почему здесь? – user3035992

+0

это была ошибка. Прости. Я редактировал. –

Смежные вопросы