• C语言的常量


    目录

    常量

    基本介绍

    整数常量

    浮点常量

    字符常量

    字符串常量

     定义常量的两种方式

    #define预处理器

     define的注意事项

    const关键字

    const的注意事项

    常量

    基本介绍

    • 常量是固定值,在程序执行期间不能改变。
    • 常量可以是任何的基本的数据类型,比如整数常量、浮点常量、字符常量、字符串字面值,也有枚举常量
    • 常量的值在定义后不能进行修改

    整数常量

    • 整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示 十六进制,0 表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后 缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)

    浮点常量

    • 浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以用小数形式或指数形式来表示浮点常量

    浮点常量举例说明

    3.14159; //double 常量

    314159E-5; // 科学计数法

    3.1f; //float常量

    字符常量

    • 字符常量是括在单引号中,例如,'x' 可以存储在 char 类型的变量中。字符常量可 以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t')。

    字符串常量

    • 字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。可以使用空格做分隔符,把一个很长的 字符串常量进行分行。
    1. #include
    2. void main() {
    3. int n1 = 0123;//八进制
    4. int n2 = 0x4b;//十六进制
    5. char c1 = 'a';//常量
    6. char c2 = '\t';//‘\t’是字符常量
    7. char str[20] = "中国hello";//"中国hello"字符串常量
    8. char str2[100] = "hello \
    9. world";//这时等价于“hello world”
    10. printf("n1=%d", n1);//83
    11. printf("\nn2=%d", n2);//75
    12. printf("\nc1=%c", c1);//a
    13. printf("\nc2=%c", c2);//
    14. printf("\nstr = % s\nstr2 = %s", str, str2);
    15. getchar();
    16. }

     定义常量的两种方式

    • #define预处理器

                #define 常量名 常量值

    1. #include
    2. //#define PI 3.14
    3. //const 数据类型 常量名 = 常量值;
    4. const double PI = 3.14;
    5. //main方法中不能再进行修改
    6. //定义常量
    7. int main() {
    8. double area;
    9. double r = 1.2;
    10. area = PI * r * r;
    11. printf("面积:%.2f", area);//面积:4.52
    12. getchar();
    13. return 0;
    14. }

     define的注意事项

    1. #include
    2. #define A 1
    3. #define B A+3
    4. #define C A/B*3
    5. void main() {
    6. //C其实是A/A+3*3
    7. printf("C=%d", C);//C=10
    8. getchar();
    9. }
    1. #include
    2. #define A 1
    3. #define B (A+3)
    4. #define C A/B*3
    5. void main() {
    6. printf("C=%d", C);//C=0
    7. getchar();
    8. }
    9. void main() {
    10. double d1 = 1 / 4 * 3;
    11. printf("C=%.2f", C);//C=0.00
    12. printf("\nd1=%.2f", d1);//d1=0.00
    13. getchar();
    14. }
    1. #include
    2. #define A 1
    3. #define B (A+3)
    4. #define C A/B*3
    5. void main() {
    6. double d1 = 1.0 / 4 * 3;//精度最大变为float
    7. printf("C=%.2f", C);//C=0.00
    8. printf("\nd1=%.2f", d1);//d1=0.75
    9. getchar();
    10. }
    • const关键字

            const 数据类型 常量名 = 常量值;

    • const定义的常量时,带类型,define不带类型
    • const是在 编译、运行的时候起作用,而define是在编译的预处理阶段起作用
    • define只是简单的替换,没有类型检查。简单的字符串替换会导致边界效应
    • const常量可以进行调试的,define是不能进行调试的,主要是预编译阶段就已经替 换掉了,调试的时候就没它了
    • const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义, 再重新定义 
    • define可以配合#ifdef、 #ifndef、 #endif 来使用, 可以让代码更加灵活,比如我们 可以通过#define 来 启动或者关闭 调试信息。

    const的注意事项

    • const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义, 再重新定义 
    1. //const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义
    2. const double PI=3.14;
    3. //const double PI=3.145;
    4. #define PI2 3.14
    5. #undef PI2 // 取消PI2 的定义
    6. #define PI2 3.145
    1. #include
    2. #define DEBUG
    3. void main() {
    4. #ifdef DEBUG
    5. printf("调试信息,ok");
    6. #endif
    7. #ifndef DEBUG
    8. printf("hello,另外一个信息");
    9. #endif
    10. getchar();
    11. }
  • 相关阅读:
    leetcode 460. LFU 缓存
    用于光栅仿真的非偏振光–实例讨论
    聚观早报 | iPhone接口将与安卓统一;《三体》动画定档12月3日
    SSM之Mybatis概览
    力扣解法汇总1224-最大相等频率
    Profinet协议分布式现场总线IO安装教程2
    jQuery通过调用webservice返回json数据的问题
    RabbitMQ的交换机(原理及代码实现)
    MySQL数据库基础 09
    有关排序的算法
  • 原文地址:https://blog.csdn.net/qq_47896523/article/details/126210275