我不明白为什么这里的输出是65
I dont understand why output is 65 here?
这是我有疑问的代码。我的输出是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
作为你的输出
相关文章:
- 警告处理为错误这里有什么问题
- 递归函数计算序列中的平方和(并输出过程)
- 努力将整数转换为链表。不知道我在这里做错了什么
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 在这里,我编写了一个使用 2 维数组并打算执行行和的 C++ 代码,但它没有给出正确的输出
- 我想我没有完全理解指针,但是为什么这里的输出有所不同?
- 为什么意外值6295648在输出中带有答案11110001?在这里输入是241和2
- 这里发生了什么,还有输出是什么?(无线索)
- C 为什么我要获得此输出.(这里的绿角)
- 此代码的输出是什么?我在这里错过了什么吗?
- 我已经设法将一些代码从 msdn 移植到 MinGW 以从子应用程序捕获标准输出,但它不会退出,这里有什么问题?
- 为什么我在这里得到两个不同的输出