【C语言】常量

常量是固定的值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串常量,也有枚举常量。

常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

整数常量

整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:Ox或OX表示十六进制,O表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是U和L的组合,U表示无符号整数(unsigned),L表示长整数(long),后缀可以是大写,也可以是小写,U和L的顺序任意。

212//合法

215u//合法

OXFeeL//合法

O78//非法:8不是八进制的数字

O32UU//非法:不能重复后缀

浮点常量

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

当使用小数形式表示时,必须包含小数点、指数,或同时包含两者。

当使用指数形式表示时,必须包含整数部分、小数部分,或同时包含两者。

带符号的指数是用e或E引入的

3.14159//合法

314159E-5L//合法

510E//非法:不完整的指数

210f//非法:没有小数或指数

.e55//非法:缺少整数或分数

以字母e或E代表以10为底的指数,需要注意的是e和E之前必须要有数字,且e和E后面必须为整数

12.34e3//表示12.34*10^3

-67.89e-16//表示-67.89*10^-16

后缀F/f表示该常数用浮点方式存储,相当于float

字符常量

字符常量是括在单引号中,例如,'x'可以存储在char类型的简单变量中。

字符常量可以是一个普通的字符(例如'x')、一个转义序列(例如'\t')或一个通用的字符(例如'\u02C0')。未赋值的系统自动补全为'\0'

普通字符常量:用单引号括起来的一个字符,如'a' , 'B' , '3' , '@' , '#'.不能写成'ab'或'12'.注意单引号只是个界限符,字符是指用单引号括起来的符号,不包括单引号。字符型在内存中是以ASCII码形式存储的,例如字符'a'的ASCII码的十进制为97(A为65),在存储单元中存放的是97的二进制形式。

转义字符:C语言中还有一种特殊形式的字符常量,是以字符\开头的字

转义序列含义
\\\字符
\''字符
\""字符
\??字符
\a警告提示音
\b退格删除符
\f换页符
\n换行符
\r回车
\t水平制表符
\v垂直制表符
\o八进制形式
\x十六进制形式
\ooo一到三位的八进制数
\xhh...一个或多个数字的十六进制数

字符串常量

字符串常量是括在双引号中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。

可以使用空格做分隔符,把一个很长的字符串常量进行分行。

下面的实例显示了一些字符串常量。下面这三种形式所显示的字符串是相同的。

1."hello,dear"

2."hello,\

dear"

3."hello," "d" "ear"

地址常量

每一个常量、变量、数组的地址在程序运行期间是不能够改变的,称为地址常量。

定义的变量,在内存中有地址,这个地址是常量。

定义常量

在C中,有两种简单的定义常量的方式:

1.使用#define预处理器

2.使用const关键字

#define预处理器

下面是使用#define预处理器定义常量的形式:

#define identifier value

实例:

#include<stdio.h>
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main(){
    int area;
    area=LENGTH*WIDTH;
    printf("value of area:%d",area);
    printf("%c",NEWLINE);
    return 0; 
}

const关键字

可以使用const前缀声明指定类型的常量,如下所示:

const type variable=value;

实例:

#include<stdio.h>
int main(){
    const int LENGTH=10;
    const int WIDTH=5;
    const char NEWLINE='\n';
    int area;
    area=LENGTH*WIDTH;
    printf("value of area:%d",area);
    printf("%c",NEWLINE); 
    return 0; 
}

注意:把常量定义为大写字母形式是一个很好的编程习惯

const常量和#define的区别在于:

  1. const常量是在编译时分配内存,而#define是在预处理时进行文本替换,不会分配内存。

  2. const常量有类型,可以进行类型检查,而#define没有类型,只是简单的文本替换。

  3. const常量可以进行地址取值操作,而#define不可以。

  4. const常量可以在多个文件中共享,而#define只能在定义它的文件中使用。

  5. const常量可以进行调试,而#define不可以。

因此,建议在定义常量时优先使用const,而不是#define。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值