Ich habe diese Funktion und fügt eine Nummer hinzu.#define ADD (x) (x) + (x) gibt ein falsches Ergebnis zurück
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
#define ADD(x) (x)+(x)
int main()
{
int x = 2;
int y = ADD(++x);
cout << y << endl;
}
Wenn ich dieses Programm ausführen, gibt es 8 aber ich war 6.
erwarte ich dachte x = 3 und es wurde 3 an die ADD-Funktion zu senden, aber es scheint, wie es nicht der Fall ist. Kann mir das jemand erklären?
Was gibt es zurück, wenn Sie nur ADD (2) aufrufen? –
Es ist die alte Art, Inline-Funktion zu erstellen.Versuchen Sie das heute nicht mehr. –
[Die Notwendigkeit für Klammern in Makros in C] (http://stackoverflow.com/q/10820340/995714) –