• C语言面试题分类->宏定义


    1.写一个“标准”宏,这个宏输入两个参数并返回较小的一个

    :#define MIN(x, y) ((x)<(y)?(x):(y))//注意x,y要加括号,因为x,y如果有复合运算会出现问题。

    2.宏定义中#与##的作用?

    答:#是把宏参数转化为字符串的运算符,##是把两个宏参数连接的运算符。

    例如:

    #define STR(arg) #arg          则宏STR(hello)展开时为”hello”

    #define NAME(y) name_y      则宏NAME(1)展开时仍为name_y

    #define NAME(y) name_##y    则宏NAME(1)展开为name_1

    #define DECLARE(name, type) typename##_##type##_type,

    则宏DECLARE(val, int)展开为int val_int_type

    3.宏定义中do...while(0)的作用?

    答:do{...}while(0)在C中是唯一的构造程序,让你定义的宏总是以相同的方式工作,这样不管怎么使用宏(尤其在没有用大括号包围调用宏的语句),宏后面的分号也是相同的效果。即宏定义有分号时使用do...while(0)。可以有效保证宏执行一次,且不会影响代码逻辑。

    4.1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
      
    答:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL   最后的UL代表无符号整数。

  • 相关阅读:
    python D20 多继承、C3算法、super()
    python D19 约束、日志
    python D18 反射与md5 加密
    python D17 类与类之间的关系
    python D16 成员
    python D15 面向对象
    python D14 内置函数二
    python D13 内置函数
    python D12 生成器以及生成器表达式
    oracle函数
  • 原文地址:https://www.cnblogs.com/mcy0808/p/8674834.html
Copyright © 2020-2023  润新知