Problèmes en utilisant define
en C. Fonctionne bien quand j'appelle OP(9)
, mais quand j'appelle OP(7+2)
je reçois 23. Pourquoi?Définir en C ne fonctionne pas lorsque l'entrée est composite
#include<stdio.h>
#include<stdlib.h>
#define OP(x) x*x;
int main() {
int x,y;
x = 2;
y = OP(7+2);
printf("%d", y);
return 0;
}
Pourquoi imprimer 23 et pas 81?
Utilisez des parenthèses. Cela doit être une question en double. – jxh
Parenthèses - ou leur absence. Regardez '7 + 2 * 7 + 2' - c'est' 23'. Si vous voulez '(7 + 2) * (7 + 2)', ajoutez les parenthèses: '#define OP (x) ((x) * (x))' - tous! –
"... mais quand j'appelle' OP (7 + 2) '..." Vous ne pouvez pas "appeler" 'OP (7 + 2)'. 'OP' est une macro, pas une fonction. Les macros ne peuvent pas être "appelées". Ils ne peuvent être substitués/remplacés. Le reste suit. – AnT