zoukankan      html  css  js  c++  java
  • #define学习

    C语言中数据有常量和变量,其中定义常量主要有两种方法,这里主要学习#define定义常量的方法。

    1.#define定义数字宏常量

    例子如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdio.h>
     
    #define PI 3.14
     
    int  main(void)
    {
        printf("%d ",PI);
        printf("%f ",PI);
        return 0;
    }

    以上例子通过#define定义了常量PI,其值为3.14。其值为float单浮点数,但是#define定义时没有声明基本数据类型,而是直接定义了一个常量字符来表示此数值。

    #define没有显示的声明基本数据类型,因此在使用此方法定义常量时需要程序员清楚常量符号表示的数据是哪一种类型,否则会引起错误。

    比如上面例子中PI是单浮点数,通过两种不同的数据类型进行打印,打印的结果如下:

    $ ./define.exe
    1374389535
    3.140000

    从结果看差异很大,因此在使用#define常量符号时,需要自判定数据的类型。

    2.#define定义字符串宏常量

    #define  CITY  "WuHan"

    这是最简单的字符串宏常量,中间没有任何的转义字符或特殊字符。

    #define PATH "E:\c_study"

    这是比较复杂的字符串宏常量,比如路径等,这里需要是双斜杠,否则会报如下错误:

    $ gcc define.c -o define
    define.c: 在函数‘main’中:
    define.c:10:16: 警告:未知的转义序列:‘c’
    printf("%s ",PATH);
    ^

    即需要配合转义字符使用。

    例子代码如下:

    复制代码
    #include<stdio.h>
    
    #define PI 3.14
    #define  CITY  "WuHan"
    #define PATH "E:\c_study"
    
    int  main(void)
    {    
        printf("%s
    ",CITY);
        printf("%s
    ",PATH);
        return 0;
    }
    复制代码

    输出结果为:

    $ ./define.exe
    WuHan
    E:c_study

    3.#define定义函数宏常量

    函数宏常量涉及到函数换行,换行=+回车

    例子:

    复制代码
    #include<stdio.h>
    
    #define dump(name)
    {
      printf(name); 
      printf("
    "); 
      printf(name); 
      printf("
    "); 
    }
    
    
    int  main(void)
    {    
        dump("test0");
        dump("test1");
        return 0;
    }
    复制代码

    运行结果:

    $ ./define
    test0
    test0
    test1
    test1

    即#define定义时,换行不是以;判定,而是以"/+回车"判定

    4.#undef 用来撤销宏常量的定义,撤销后不存在此宏常量

    总结:

    #define可以定义多种类型的宏常量,需要结合不同的场景使用,每一种场景需要注意对应的数据类型,转义字符和换行等关键地方。

  • 相关阅读:
    从Object对象中读取属性的值
    CentOS7安装Mysql
    CentOS初使用命令总结
    linux安装git、node、pm2
    将 ELASTICSEARCH 写入速度优化到极限
    Elasticsearch
    elasticsearch5.0.1集群索引分片丢失的处理
    ELASTICSEARCH健康red的解决
    使用linux远程登录另一台linux
    fiddler构造表单上传文件的请求
  • 原文地址:https://www.cnblogs.com/jason207489550/p/6662266.html
Copyright © 2011-2022 走看看