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代表无符号整数。

  • 相关阅读:
    GUI基础学习
    常用类string的用法
    类。对象和包--补上周
    类.对象和包
    调用函数的注意事项
    函数的简单运用
    一维数组基础
    java中scanner类的用法
    数据库——DQL(语句查询)
    数据库——JDBC
  • 原文地址:https://www.cnblogs.com/mcy0808/p/8674834.html
Copyright © 2011-2022 走看看