我需要在這個C++代碼是如何表現和返回值需要解釋過的C++代碼
#include<iostream>
using namespace std;
#define MY_MACRO(n) #n
#define SQR(x) x * x
int main()
{
//cout<<MY_MACRO(SQR(100))<<endl;
//cout<< sizeof(SQR(100))<<endl;
cout<< sizeof(MY_MACRO(SQR(100)))<<endl;
return 0;
}
據我所關注的一點解釋的行爲#n
返回在MY_MACRO(n)
但如果之前的參數個數這SQR(100)
將100 * 100
更換(9個字符,如果再算上空格),但現在sizeof(9)
應打印4,但其與cout<< sizeof(MY_MACRO(SQR(100)))<<endl;
什麼是它背後的抓回來9?
每個字符都被當作一個字節。 –
看看預處理器的輸出(如果你使用g ++:g ++ -E)。然後你會看到cout << sizeof(「SQR(100)」)<< endl; –
@Rikayan但在這裏,如果你看到宏將取代100 * 100到9('MY_MACRO(n)#n'),所以它將是sizeof(9) –