常量的基本介绍

常量的基本介绍

C语言的常量包括:整数常量、浮点数常量、字符常量和字符串常量。

整数常量的表达方法有以下几种:

十进制表达式

和普通数字的表达方法一致。例如:13,28,-52,-1000等等。

十六进制表达式,以0x开头。

例如:0xA1,0xC8,-0x20,-0x500等等。

八进制表达式,以0开头。

例如:032,-011,081(错误)0开头的常量看上去好像是十进制,但是其实是八进制,八进制中只有0-7之间的数字,8和9都错误代码,C语言并没有提供二进制常量表达式。

指数形式

由十进制a,加阶码标志”e”或”E”以及阶码n组成

  • 注意:
  1. 阶码n可以带符号,只能为十进制整数;

  2. “e”或”E”的两边必须有数

  3. 当n为正数时,正数可以忽略

  4. 同一个整数有多种表示形式

浮点数常量

是带小数点的数字,表达式的中必须含有小数点,即使小数部分是0也要缺省带小数点。主要有两种表达式

a) 单精度浮点数

尾部带f的浮点数代表是单精度浮点数。例如:0.5f,88.2f,-55.0f 等等。

b) 双精度浮点数

尾部不带f的浮点数代表是双精度浮点数。例如:0.88,99.5,-111.356等等。

一般认为双精度浮点数比单精度浮点数表达的范围要大很多,包括整数部分和小数部分,双精度表达的数字长度要大很多。

1、const 修饰的常变量:此变量不能被修改

#include<stdio.h>
int g = 100;
int main() {
	const int a = 10;
	{
		int b = 20;
		printf("%d\n", b);
		printf("l:%d\n", a);
		printf("g:%d\n",g);
	}
	//printf("%d\n",b);未定义b
	a++;//当变量a被const修饰时会报错: 表达式必须是可以修改的左值
	printf("2:%d\n",a);
	printf("g:%d\n",g);
	return 0;
}

2、define定义的标识符常量

#include<stdio.h>
#define MAX 100
int main() {
	int arr[MAX];
	return 0;
}

3、枚举常量

#include<stdio.h>
enum SEX {
	MALE,FEMAILE,SECRET
};
int main() {
	enum SEX s = MALE;
	printf("%d\n", MALE);
	printf("%d\n", FEMAILE);
	printf("%d\n", SECRET);
	return 0;
}

4、字符常量

‘a’,‘b’ , ‘c’

5、字符串+转义字符+注释+控制符

#include<stdio.h>
int main() {
	char arr1[] = "abc";
	char arr2[] = {'a','b','c'};
	printf("%s\n", arr1);
	printf("%s\n",arr2);
	return 0;
}

注意看区别字符串和字符的区别:

image-20211030183644518

5.1、字符常量

  1. 在单引号中的字符不能是”’”和反斜杠”\”;

  2. 字符常量只能是单个字符不能是字符串,例如:’小柯南’就是错误的;

  3. 字符可以是字符集中的任意字符;

字符常量是用单引号将一个字符括起来的构成,每种被括起来不同的字符代表一个不同的数字(就如同每个学生有不同的名字,而且还有个不同的学号一样)。所有字符与数值的对照表就是及ASCII码表。

ASCII码表:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D1wCgaZL-1636034687434)(C:\Users\21269\AppData\Roaming\Typora\typora-user-images\image-20211001085409238.png)]

5.2、字符串常量

由一对双引号括起来的字符集合。例如,以下都是合法的字符串常量:

“how are you doing?”;

“我是小柯南”;

“a”;

字符串是唯一的一种存在与内存空间上的常量,它是一个内存上的某个地址。字符串内所有的字符依次存储在内存中一块连续的区域内,并且把空字符’\0’自动附加到字符串的尾部作为字符串的结束标志。因此,字符个数为n的字符串在内存中应占(n+1)个字节。

使用printf可以输出字符串,例如:printf("how are you doing?");

字符串常量与字符常量的对比

a)字符常量是由一对单引号括起来的单个字符,而字符串常量是一对双引号括起来的字符集合;

b)字符常量本质上是一个数字,这个数字对应了ASCII表内的一个字符;

c)而字符串常量本质上是一个字符集合的内存地址,打印时从头部一直遍历到结尾符结束;

d)不能将字符串与字符常量混淆,字符常量可以赋值给字符变量或其他整型变量;

e)不能把一个字符串常量赋给一个字符变量或者其他整型变量。

5.3、转义字符表

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\代表一个反斜线字符\092
代表一个单引号(撇号)字符039
"代表一个双引号字符034
?代表一个问号063
\0空字符(NULL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh1到2位十六进制所代表的任意字符二位十六进制

注意:

1.所有的ASCII码都可以用“\”加数字(2位的16进制数字或3位的8进制数字)来表示。

2.要实现非十进制每位的输出,用本数多次除以对应基数即可。

5.4、注释

//           //单行注释
/**/        //多行注释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值