Когда я запускаю следующий код в Linux, результат равен 32. Почему это так?m - макрос, определенный как 10 + 2; почему m * m оценивается до 32?
#include <stdio.h>
#define m 10+2
int main() {
int i;
i = m * m;
printf("%d", i);
return 0;
}
У меня есть еще одно сомнение в следующем коде, касающемся функции макроса. – RAMD
Правильная ошибка, неправильное решение. ВСЕГДА помещаем круглые скобки в определение макроса, поэтому вам не нужно думать об этом при вызове. –
Умм .. на самом деле Aasmund уже дал это решение, поэтому я пошел на альтернативное решение, чтобы дать понять, как использовать круглые скобки для выполнения нескольких операций в одной строке. – 3Demon