目录
定义:在程序执行过程中,其值不发生改变的量,分为直接常量和符号常量。
一、直接常量(字面常量):
定义:直观写出常量的值
int main()
{
1;//字面常量
10;//字面常量
3.14;//字面常量
return 0;
}
直接常量又分为整型常量、实型常量、字符型常量和字符串常量。
1.整型常量
十进制:由数字0~9表示,包含正负号。
八进制:以数字0为前缀,其后由数字0~7组成。八进制一般是无符号的数。
十六进制:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写均可)组成。
unsigned int 型(无符号类型,仅能表示大于等于0的值):在一个整型常量后面加一个字母u或U。例如123u。
不同的计算机系统,unsigned int类型所占的比特数不同。
16位数 unsigned int取值范围:0~65535
32位数 unsigned int取值范围:0~4294967295
16位系统中int能存储的数据的范围:-32678~32767,unsigned int能存储的数据范围是65535.这是由于在计算机中,整数是以补码的形式存放的。如果最高次位是1,有符号数就是负数,如果是无符号数则都表示正数。unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
如果整数太大的情况下,超出了整数范围会产生溢出现象。
unsigned int溢出后数值回到起点值0,而int溢出后数值回到“负那个值+1”
long int 型:在一个整型常量后面加一个字母l或L。例如13L。
2.实型常量
定义:就是实数,又称为浮点数。在C中,实数只能用十进制形式表示,分为小数形式和指数形式。
(1)小数形式:由整数、小数点和小数组成。当整数部分或者小数部分为0时,可以省略不写,但是小数点不可以省略。例如:2.(二点零),-.123(负零点一二三),12.3(十二点三)。
(2)指数形式:由尾数部分、字母E或e和指数部分组成,格式为:正负尾数E指数。例如:
1.2E-2(一点二乘十的负二次方),3.14E+3(三点一四乘十的三次方)。
注意:
以小数形式表示实数时,必须有小数点,并且小数点的前、后至少一边要有数字。
以指数形式表示实数时,字母E(或e)的前后必须有数字,并且指数部分只能是整数。
在C语言中,实型常量默认为是double类型的实数,但是如果在数的后面加字母f或F,则认为是float类型的实数。(1.23f、45.6F)
3.字符型常量
定义:指单个字符,用一对单引号及其括号所括起来的字符来表示。例如:'a','B','?'。
(1)字符常量只能用单引号括起来,不能用双引号或其他括号。
(2)字符常量只能是单个字符,不能是字符串。
(3)字符可以是ASCII字符集中的任意字符。按ASCII码的大小,不同的字符之间存在着次序,以字符的ASCII码值按升序连续排序。例如:ASCII码:小写字母>大写字母>数字字符(十进制中小写字母大于大写字母32例如'a'=97,'A'=65,'0'=48)按照这个码值就可以找到对应的ASCII码值,因为是按升序连续排列。例如'd'='a'+3=100,'F'='A'+5=70,'9'='0'+9=57。
对于控制符(回车、换行等)与不可见字符,在C语言中是通过转义字符来表示。转义字符是用 ' \ '开头后面加上一个字符或八进制、十六进制表示的ASCII码值组成。' \ '的作用是改变其后面的字符或ASCII码值的原有意义,转义为另外的含义。
常见的转义字符:(转义字符长度为1)
\0:空字符
\a:响铃
\b:退格
\t:水平制表符(横向跳格)。在打印的时候,把前面字符串补到8或8的倍数,最少补1个空格,最多补8个空格。
\n:回车换行
\v:竖向跳格
\f:换页
\r:回车
\":双引号
\':单引号
\?:问号
\\:反斜线字符
\ddd:1~3位八进制所代表的字符(0~7)
\xhh:1~2位十六进制所代表的字符
转义字符形式上由多个字符组成,但它是一个字符常量,只代表一个字符。转义字符的使用方法与一般字符常量的用法相同。
4.字符串常量
定义:由一对双引号""括起来的零个或多个字符序列。例如:"helloworld"。
字符串中可以使用空格字符、转义字符和其他字符,也可以使用汉字等文字符号。例如:
"CHINA","你好!C","\tVisual C"等。字符串中还可以使用空字符("")。例如:""表示空串,即不包含任何字符。
字符串常量在内存中占用一段连续的存储单元,系统自动在每个字符串的尾部加上'\0'作为字符串的结束标志。所以,在n个字符组成的字符串,在内存中要占用n+1个字节空间。可以使用sizeof运算符来计算字符串占用的内存空间大小。例如:"Hello\nWorld"占用了12个字节的内存空间。(数一下多少个字母加上转义字符\n再加上'\0',即10+1+1=12)
'\0'(转义字符)是字符串结束标志,一遇到'\0'即代表该字符串结束,不算作字符串内容。
因为’\0‘的ASCII值为0,所以放0进去也是可以的。
注意:
字符常量和字符串常量在内存中的存储情况是不同的。
字符常量:'6'在内存中占1个字节。
字符串常量:“6”在内存中占2个字节。一个字节存储'6',另一个字节存储'\0'。
例如:"hello\0world"的长度为5。当字符串中有转义字符,则一个转义字符作为一个字符。例如:"helloworld\t"的长度为11。可以使用strlen()函数来计算字符串的长度。
二、const修饰的常变量
const int a=1;//const修饰的常变量,把a的值锁定了,再改变a的值那么就会报错
三、#define定义的标识符常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
格式:#define 标识符 常量值
一个#define命令只能定义一个符号常量,若要定义多个符号常量,需要使用多个#define命令。
#define xp 3.145; 错误,#define是编译预处理命令,不是C语言中的语句,末尾不能加“;”
#define xp(3.145) 错误,不符合符号常量定义的语法形式
#define xp=3.145 错误,不符合符号常量定义的语法形式
#define xp 3.145
好处:
1.增加程序的可读性。
2.提高程序的可维护性。
3.简化程序代码。
4.方便数组的定义。
四、枚举常量
定义:一一列举可能取值
例如:
性别:男,女,保密
三原色:红、黄、蓝
星期:1、2、3、4、5、6、7
枚举关键字:enum
格式:
enum 概括名
{
列举名
}
这就说明枚举常量本身是不能改变的,但是所定义的对象赋值的属性是可以改变的。
*本篇是我认为C语言基础的第一部分,文章的内容借鉴于书本里面的知识、网上查找的资料。最后就是如果有错误的地方还请各位指点我好知道哪里出错了并加以修改。