zoukankan      html  css  js  c++  java
  • 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代表无符号整数。

  • 相关阅读:
    oracle的网络服务名和监听程序
    ArcGIS 产品许可模型
    老鸟对菜鸟的一些建议(转)
    ajax简介(转载)
    dim redim
    投影选择的一般原则
    *.prj文件
    cup性能对比感受
    treeview 数据库 递归
    简论两句话
  • 原文地址:https://www.cnblogs.com/mcy0808/p/8674834.html
Copyright © 2011-2022 走看看