先决条件–宏
- 以下程序的输出是什么?
#include
using namespace std; #define a 10 int main() { int a = 5; cout << "macro variable value: "<< a; return 1; } 输出:
错误
说明:编译器无法解析范围,因此它不知道要打印哪个值,因此会出错。 - 以下程序的输出是什么?
#include
using namespace std; #define area length * width int main() { int length = 10, width = 20; cout << "macro expression area: " << area; return 1; } 输出:
macro expression area: 200
说明:与第一个问题不同,这里的程序值需要在宏中替换。一旦控件进入“区域”,它将被替换为宏代码,即
cout<< "macro expression area: " << length * width;
然后替换和计算长度和宽度的值。
- 以下程序的输出是什么?
#include
using namespace std; #define sqrt(x) (x*x) int main() { int a = 3, b; b = sqrt(a + 5); cout<< "Output of b = " << b; } 输出:
Output of b = 23
描述:是,不是sqrt(8)但sqrt(a + 5);将被替换为(a + 5 * a + 5);为了使其完美,结果为23,宏命令应替换为
#define sqrt(x) ( (x) * (x) )
- 以下程序的输出是什么?
#include
using namespace std; #define printf(s) cout << s; int main() { printf("GeeksforGeeks"); cout << "\nBye Bye"; } 输出:
GeeksforGeeks Bye Bye
说明: C++编译器支持printf,因此不会引发任何错误。宏甚至适用于关键字和诸如printf之类的任何语句。当控件进入printf时,它将像函数调用一样抛出参数,因为它已经定义。
- 以下程序的输出是什么?
#include
using namespace std; #define SQRT(x) ( x * x) int main() { int a, b= 3; a = SQRT(b++); cout << a << endl << b; return 0; } 输出:
12 5
说明: a = SQRT(b ++);变成a = b ++ * b ++; a = 3 * 4;这里我们使用post-increment运算符,因此对于每次执行以及在语句执行之后,语句中的3都会递增。
宏测验
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。