zoukankan      html  css  js  c++  java
  • 2014腾讯实习生笔试题——define与typedef

    2014腾讯实习生笔试(广州站)第26题填空题:

    #define MAX_NUM 1000+1

    int Temp = Max_NUM*10;

    则Temp的值为( )

    答案是:1010, 由于宏定义仅仅是一个简单的文本替换。替换后Tem==1000+1*10,故temp=1010,而不是想象中的10010.如想真正表达预想含义。须要加个括号:#define MAX_NUM (1000+1) ,如此的话,结果为10010

    #include<iostream>
    using namespace std;
    #define MAX_NUM (1000+1)
    void main()
    {
    int temp=MAX_NUM*10;
    cout<<temp<<endl;
    }
    知道宏定义的使用方法后,我们顺便再提一下typedef的使用方法:

    用途一:

    定义一种类型的别名,而不仅仅是简单的宏替换。能够用作同一时候声明指针型的多个对象。

    用途二:
    用在旧的C代码中,帮助struct。曾经的代码中,声明struct新对象时,必需要带上struct,即形式为: struct 结构名对象名.而在C++中,则能够直接写:结构名对象名
    用途三:

    用typedef来定义与平台无关的类型。

    比方定义一个叫 REAL 的浮点类型。在目标平台一上。让它表示最高精度的类型为:

    typedef long double REAL;

    在不支持 long double 的平台二上,改为:

    typedef double REAL;

    在连 double 都不支持的平台三上,改为:

    typedef float REAL;

    也就是说。当跨平台时,仅仅要改下 typedef 本身即可,不用对其它源代码做不论什么改动。



    标准库就广泛使用了这个技巧。比方size_t。另外,由于typedef是定义了一种类型的新别名。不是简单的字符串替换,所以它比宏来得稳健。

    用途四:

    为复杂的声明定义一个新的简单的别名。方法是:在原来的声明里逐步用别名替换一部

    分复杂声明。如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化

    版。——此条不经常使用,不举例。




  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6879205.html
Copyright © 2011-2022 走看看