我不明白为什么这里的输出是65

I dont understand why output is 65 here?

本文关键字:输出 这里 明白 为什么      更新时间:2024-03-29

这是我有疑问的代码。我的输出是65。我需要解释一下它是如何工作的。

#include<iostream>
#define combine(a,b,c) a##b##c
int main()
{
std::cout<<combine(2+2,3+3,5+5);
return 0;
}

宏扩展到

2+23+35+5

现在应该很清楚为什么结果是65。

##运算符执行令牌连接,它本质上是"胶水";两边的代币在一起。

您的宏将combine(a,b,c)替换为a##b##c,这本质上意味着abc,从而翻译您得到的代码:

std::cout<<combine(2+2,3+3,5+5);变成std::cout<<2+23+35+5(如果这对你更有意义的话,可以把它想象成two+twothree+threefive+five(;胶合";加在一起,结果显然与做std::cout<<65相同

这就是为什么你得到65作为你的输出