C04_常量

常量

C语言中的常见的常量
  1. 数值常量(整型常量,实型常量-> 小数形式和指数形式)
  2. 字符常量(普通字符,转义字符)
  3. 字符串常量
  4. 符号常量(#define const)
1. 数值常量

整型常量

  1. 整型常量分为二进制,八进制,十进制和十六进制
  2. 每个整型常量分为三部分: 前缀部分,数字部分,后缀部分.
进制前缀部分数字部分后缀部分
二进制ob0~1u,l,ll
八进制00-7u,l,ll
十进制0-9‘u,l,ll’
十六进制ox0X0-9,a-f,A-Fu,l,ll
  • 后缀的即使 u (unsigned) 代表无符号的整数 l(long) 代表长整型, ll代表long long 长长整型
#include <stdio.h>

int main()
{
    int a = 0b10101u; // 无符号二进制数
    long b = 0123l; // 8进制长整型,后面那个是小写的L,不是1,注意这里.
    long long c = 0x123Fll; // 16进制长整型
    printf("a = %d, b = %lo, c= %llx",a,b,c); // 按照对应的占位符进行打印
    return 0;
}

结果:

实型常量

  • 实型常量又分为小数形式 和 指数形式
1. 小数形式

小数形式分为三个部分: 整数部分,小数点,小数部分.
例如: 3.1415927,4.5f,.1314
其中f 后缀代表 float,用于区分double
.1314 等价于 0.1314

2. 指数形式
  1. 指数形式的典型格式为xey
  2. 1e9,5.2e00000,5.2e-1,1.1e2,表示的数值是x * 10^y

字符常量

  1. 字符常量可以是一个普通的字符,一个转义序列,或者是一个通用的字符.
  2. 每个字符都对应一个ASCII码值
1. 普通字符

普通字符就是用单引号括引起来的单个字符

2. 转义字符
  1. 转义字符是用引号引起来,并且内容为斜杠+字符,例如\n 代表换行,\t代表制表符(可以理解为键盘上的tab键),\\代表一个反斜杠,等等.
  2. \number来代替一个字符,其中一个数字number代表一个八进制数,也可以用\xhh来代表一个字符
#include <stdio.h>

int main()
{
    char a = 65;
    char b = '\101'; // 八进制数,八进制直接是反斜杠加八进制数,没有标识符
    char c = '\x41';
    printf("%c %c %c \n",a,b,c);
    return 0;
}

结果:

字符串常量

1. 单个字符串常量
  1. 字符串常量中允许有转义字符
  2. 字符串常量使用"" 双引号引起来
#include <stdio.h>

int main()
{
    char str[100] = "我要好好学习\x43语言!";
    printf("%s", str);
    return 0;
}

结果:

符号常量

1. #define

利用#define预处理器可以定义一个常量如下:

#include <stdio.h>
#define FIOMAN "Love Hammer,Love Running!\n"
#define Hammer "Love Fioman \n"
int main()
{
    printf(FIOMAN);
    printf("%s",Hammer);
    return 0;
}

结果:

#define 就是一个预处理替换,会将代码中所有的被define定义的文本替换为后面的文本

2. const

一个变量前面加上const,就表示这个变量是常量,在整个运行过程中都不能被修改
C语言中既然已经有了#define,为什么还需要const呢

原因有三点

  1. 预编译指令只是对值进行简单的替换,不能进行类型检查
  2. 可以保护被修饰的东西,防止意外修改,增强程序的健壮性
  3. 编译器通常不为普通的const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的一个常量,没有了存储与读内存的操作,增加效率
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值