Я пытаюсь понять этот блок кода здесь:Вызов по имени/Вызов по значению
#include <iostream>
using namespace std;
#define mymult(a, b) a*b
inline int mymult1(int a, int b) {return a*b;}
int main() {
cout << "mymult(2+2, 3+3) = " << mymult(2+2, 3+3) << "\n";
cout << "mymult1(2+2, 3+3) = " << mymult1(2+2, 3+3) << "\n";
}
mymult = 11, и mymult1 = 24. Я знаю, что «# определить это по существу работает через вызов по имени , а не называть по значению. Тем не менее, мне трудно понять, почему значение, которое оно возвращает, равно 11 ... а не 24. Что вызывает это?
'# define' является подзадачей под названием bacisally, поэтому он преобразуется в' 2 + 2 * 3 + 3' – Predelnik
@predlnik, который является ответом !! – Steephen
... что является одной из многих причин, чтобы предпочесть встроенные функции над макросами. –