Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我正在为我的大学处理非常奇怪的任务。目的是编写功能实现,如下所示:
我在考虑使用宏,如您在第10行中看到的那样。在预期值(?)6上打印了“ 2 + 4”,因此可以通过使用宏#选项来完成,但我不知道如何处理toSquare( 2 + 4),结果是2 + 4到平方是16。感谢所有想法和解决方案!
干杯
这是working example。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我正在为我的大学处理非常奇怪的任务。目的是编写功能实现,如下所示:
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行中看到的那样。在预期值(?)6上打印了“ 2 + 4”,因此可以通过使用宏#选项来完成,但我不知道如何处理toSquare( 2 + 4),结果是2 + 4到平方是16。感谢所有想法和解决方案!
干杯
最佳答案
正确答案涉及以下两个原则:
使用宏进行字符串化:这是#
预处理程序运算符的作用。
使用鬼sneak括号来操纵参数扩展。请注意,(2+4) * 2+4
等于16。因此,用括号将第一个操作数括起来,但不要将第二个括起来!
这将产生以下宏:
#define toSquare(x) \
std::cout << #x << " to square is " << (x) * x << std::end;
这是working example。
关于c++ - C语言中特定于toSquare的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26702922/
10-13 07:25