• 宏定义是一个比较常考的考点,所以我归纳总结了一下近年的宏定义的题目
  • //宏定义面试题1.cpp
    //What is the output of the following code?[中国台湾某著名杀毒软件公司2005年10月面试题]
    #include<stdio.h>
    #define SQR(x) (x*x)
    void main()
    {
    int a,b=;
    a=SQR(b+);
    printf("/n%d",a);
    }

    //A. 25   B.11   C.Would vary from compiler to compiler    D.Error
    //B
    //宏定义展开时容易造成二义性问题。a=SQR(b+2)这一语句展开后为“b+2*b+2”,而并不是想象中
    //的“(b+2)*(b+2)”.要是想得到这个结果,必须把宏定义语句改成如下的形式:
    //#define SQR(X) ((x)*(x))
    //这样结果就是25

  • 宏定义面试题2.cpp

    用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。
    [美国某著名计算机嵌入式公司2005面试题]

    解析:
    通过这道题面试官想考几件事情:

    #define语法的基本知识(例如,不能以分号家属,括号的使用,等等)。

    要懂得预处理器为你计算常数表达式得值,因此,写出你是如何计算一年有多少秒而不是计算出实际的值,
    会更有意义。

    意识到这个表达式中用到UL(表示无符号长整型),那么你就有了一个好的起点。记住,第一印象很重要。而且最重要的是,计算结果超过了65535这个16位的整型大小的范围,必须使用长整型L。

    #define SECOND_PER_YEAR (60*60*24*365)UL (or Ul or uLor ul)
  • //宏定义面试题3.cpp

    //写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
    //[美国某著名计算机嵌入式公司2005面试题]

    //解析:
    //这个测试是为下面的目的而设的:

    //标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为C的一部分,宏都是方便地产生
    //嵌入代码的唯一方法。对于嵌入式系统来说,为了能达到要求的性能,潜入代码经常是必须的方法。

    //三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比 if-then-else更优化的代码。何计算一年有多少秒而不是计算出实际的值,
    //了解这个用法是很重要的。

    //懂得在宏中小心地把参数用括号括起来。号长整型),那么你就有了一个好的起点。记住,第一印象很重要。

    #define MIN(A,B)  ((A)<=(B)?(A):(B))

C++面试笔记--宏定义的更多相关文章

  1. iOS开发笔记--宏定义的黑魔法 - 宏菜鸟起飞手册

    宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在 ...

  2. c c++面试c工程开发之宏定义和条件编译

    多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意 ...

  3. C++面试常见问题——01预处理与宏定义

    C++面试常见问题--------01预编译和宏的使用 C++预处理器 预处理器是一些指令,它将指示编译器在实际编译之前需要完成的预处理.预处理必须要在对程序进行词法与语义分析.代码生成与优化等通常的 ...

  4. 面试问题5:const 与 define 宏定义之间的区别

    问题描述:const 与 define 宏定义之间的区别 (1) 编译器处理方式不同     define宏是在预处理阶段展开:     const常量是编译运行阶段使用: (2) 类型和安全检查不同 ...

  5. Linux学习笔记——举例说,makefile 添加宏定义

    0.前言     从学习C语言開始就慢慢開始接触makefile,查阅了非常多的makefile的资料但总感觉没有真正掌握makefile.假设自己动手写一个makefile总认为非常吃力. 所以特意 ...

  6. 读书笔记 effective c++ Item 2 尽量使用const,枚举(enums),内联(inlines),不要使用宏定义(define)

    这个条目叫做,尽量使用编译器而不要使用预处理器更好.#define并没有当作语言本身的一部分. 例如下面的例子: #define ASPECT_RATIO 1.653 符号名称永远不会被编译器看到.它 ...

  7. C语言学习笔记--C语言中的宏定义

    1. C 语言中的宏定义 (1)#define 是预处理器处理的单元实体之一(因此,预处理器只是简单的进行替换,并不(2)#define 定义的宏可以出现在程序的任意位置(包括函数体的内部)(3)#d ...

  8. 标C编程笔记day04 预处理、宏定义、条件编译、makefile、结构体使用

    预处理:也就是包括须要的头文件,用#include<标准头文件>或#include "自己定义的头文件" 宏定义,如:#define PI 3.1415926 查看用宏 ...

  9. 《linux 内核全然剖析》 笔记 CODE_SPACE 宏定义分析

    在memory.c里面.遇到一个宏定义,例如以下: #define CODE_SPACE(addr) ((((addr)+4095)&~4095) < \ current->sta ...

随机推荐

  1. MySql数据库中存放用户密码需要注意什么?

    前几天被电话面试了,问了一些比较实际的问题,其中一个问题关于PHP开发中MySql里存放用户密码需要注意什么,由于没有过大项目经验,一时语塞,回来网上找了找记下来,希望能对其他人有帮助,我也继续学习. ...

  2. 10个 NPM 使用技巧

    对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹( npm init ),下载npm模块( npm install ),创建测试( npm tese ) 和自定义脚本( npm r ...

  3. Python的交互模式和命令行模式

    Pyhton的交互模式 在终端输入Python3命令就会进入家Python的交互模式,在交互模式下,输入一行代码,回车,就会执行这行代码. Python的命令行模式 在终端输入Python3 1.py ...

  4. SQL Sever 学习系列之二

    SQL Sever 学习系列之二 SQL Server 学习系列之一(薪酬方案+基础) 四.有关时间输出问题      select GETDATE() 日期时间    ----显示为:2013-07 ...

  5. VC2005中将Picture控件显示图片保存为BMP,JPG等格式

    1.在stdafx.h头文件中加入 #include <atlimage.h> 2.保存图片 方法一:   HBITMAP hBitmap = NULL; //创建位图段 BITMAPIN ...

  6. cpu高的问题的快速定位

    功能问题,通过日志,单步调试相对比较好定位. 性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底. 58到家架构部,运维部,58速运技术部联合进行了一次线上 ...

  7. MSSQL2008 常用sql语句

    一.基础 1.说明:创建数据库 Create DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  8. hihoCoder#1095(二分搜索)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi and Little Ho are playing a drinking game called HI ...

  9. 【转】href="#"与"javascript:void(0);"的区别

    在工作中,如果我们想把a标签中的链接置成空链接,我们一般会用两种方法: 1 <a href="#" target="_blank"></a&g ...

  10. C Primer Plus学习笔记(五)- C控制语句:循环

    伪代码的概念: 伪代码是一种用简单的句子表示程序思路的方法,它与计算机语言的形式相对应.伪代码有助于设计程序的逻辑.确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码.使用伪代码的好处之一是,可以 ...