Probleme mit in C. Funktioniert gut, wenn ich OP(9)
anrufen, aber wenn ich OP(7+2)
aufrufen, bekomme ich 23. Warum?Definieren in C funktioniert nicht, wenn Eingabe Composite ist
#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;
}
Warum Drucke 23 und nicht 81?
Verwenden Sie Klammern. Dies muss eine doppelte Frage sein. – jxh
Klammern - oder deren Fehlen. Schau dir '7 + 2 * 7 + 2' an - das ist' 23'. Wenn du '(7 + 2) * (7 + 2)' willst, füge die Klammern hinzu: '#define OP (x) ((x) * (x))' - alle! –
"... aber wenn ich' OP (7 + 2) '' "anrufe" "OP" (7 + 2) 'kann nicht" gerufen "werden. 'OP' ist ein Makro, keine Funktion. Makros können nicht "aufgerufen" werden. Sie können nur substutiert/ersetzt werden. Der Rest folgt. – AnT