2014-12-04 2 views

ответ

2

i=m*m фактически расчета, как

10 + 2 * 10 + 2

которая

10 + 20 + 2 = 32

#include<stdio.h> 
#define m 10+2 
int main() 
    { 
    int i; 
    i=(m)*(m);  \\this will provide you with output as (10+2)*(10+2) 
    printf("%d",i); 
    return 0; 
    } 
+0

У меня есть еще одно сомнение в следующем коде, касающемся функции макроса. – RAMD

+1

Правильная ошибка, неправильное решение. ВСЕГДА помещаем круглые скобки в определение макроса, поэтому вам не нужно думать об этом при вызове. –

+0

Умм .. на самом деле Aasmund уже дал это решение, поэтому я пошел на альтернативное решение, чтобы дать понять, как использовать круглые скобки для выполнения нескольких операций в одной строке. – 3Demon

5

Macro расширение не прислушается окружающий синтаксис, так i=m*m получает разложена в i=10+2*10+2, а не i=(10+2)*(10+2). Это почему один должен всегда скобки макроопределения и аргументы:

#define m (10+2) 
Смежные вопросы