2012-04-24 2 views
-5
#define MAX 20; void main() { printf("MAX"); } 

Вывод этой программы:C директивы препроцессора вопросы и ответы

"20" 

, но я ожидал, что это будет:

20; 

почему точка с запятой не появляется на выходе?

+3

Результат этой программы, конечно, не равен "20" (если неопределенное поведение, вызванное 'main', имеющим тип возврата' void', заставляет его печатать '' 20 "', что маловероятно). Отправьте фактический код. –

+3

Все в порядке! – Malkocoglu

+1

Попробуйте скопировать код правильно - это не собирается компилировать – smocking

ответ

5
printf("MAX"); 

На самом деле то, что печатается в MAX, так как макросы не раскладываются в кавычки.

+0

oops sorry !! мой плохой .. –

+2

@HarshitSyal Не беспокойтесь. Как правило, это хорошая идея для запуска кода, о котором вы спрашиваете. – cnicutar

0

Это:

#define MAX 20; void main() { printf("MAX"); } 

это не программа.

+2

Это, однако, действительный C, который определяет объектно-подобный макрос с именем 'MAX', который заменяется на токенную последовательность' 20; void main() {printf ("MAX"); } '. –

+0

@JamesMcNellis - Но следующая строка в исходном коде должна быть 'MAX'. Во всяком случае - бит глупый вопрос. –

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