特定于C中的平方函数
Specific toSquare function in C
我正在为我的大学处理一项非常奇怪的任务。目标是为如下所示的功能编写一个实现:
int z = 3;
toSquare(2);
toSquare(6);
toSquare(Incr(z));
toSquare(2+4);
/* result :
2 to square is 4.
6 to square is 36.
Incr(z) to square is 16.
2+4 to square is 16.
*/
正如你在第10行看到的那样,我在考虑使用宏2+4’是根据预期的(?)6打印的,所以可以使用宏#选项来完成,但我不知道如何处理它到平方(2+4),结果是2+4到平方是16。感谢所有的想法和解决方案!干杯
正确答案涉及以下两个原则:
- 使用宏进行字符串化:这就是
#
预处理器运算符的作用 - 使用狡猾的括号来操纵参数扩展。注意,
(2+4) * 2+4
等于16。因此,请将第一个操作数用括号括起来,但不要将第二个操作数括起来
这会产生以下宏:
#define toSquare(x)
std::cout << #x << " to square is " << (x) * x << std::end;
下面是一个工作示例。
使用宏TOSQUARE
:的C中的解决方案
#define TOSQUARE(x) ((x)*(x))
int main()
{
int z = 3;
TOSQUARE(2);
TOSQUARE(6);
TOSQUARE(Incr(z));
z = TOSQUARE(2+4);
return 0;
}
相关文章:
- 构造函数/函数声明参数列表中的统一初始化
- 如何区分宏函数和函数函数而没有任何歧义?
- 在c++中为链接列表创建复制构造函数/函数
- 如何声明模板函数,以便可以在类构造函数/函数中传递
- 在C 中,如何调用构造函数函数
- bool值不在腔函数函数中重新调整false,c
- 用参数调用函数/函数,而不是参数
- 如何在犰狳中使用变量/方差函数
- 为什么在破坏函数函数中fstream Zero ernno
- 采用nulltpr_t的构造函数:函数定义不声明参数
- 调用函数函数从功能指针向量向量的函数指针
- Main 不能调用函数:函数未在此范围内声明
- 如何调用传递的函数(函数 ptr 作为参数传递给函数)
- 构造函数:函数不接受3个参数
- 如何理解函数函数参数中的星号(*)?
- 指向函数/函数表的指针
- LNK2019:函数"函数"中'symbol'引用未解析的外部符号;致命错误 LNK1120:1 未解析的外部
- 将函数函数传递给带有函数参数的std::线程.这可能吗?
- 在对象上调用特定的函数(函数指针)
- unordered_map自定义哈希/相等函数 - 函数不会被调用