C语言的常量和类型
1.字面常量(能够直接写出来的)
(1)整数
C语言中的整数可以用二进制、八进制、十六进制进行表示的.
二进制:用0和1表示(计算机中的原码反码补码都是用二进制来表示的)
八进制:用0-7表示,编程语言中以数字0作为开始来表示八进制
十六进制:用0-9和ABCDEF来表示十六进制,其中ABCDEF分别表示10、11、12、13、14、15
(2)实数
实数只能用十进制表示,其中指数的表示为底数后加上e或E再加指数
(3)字符常量
字符常量在计算机中存储一般以ASCLL码表进行存储的
字符常量有两中表示方法:单引号表示法和转义字符表示法
单引号表示法:用''来表示,中间加字符,例如:'a','9'.
转义字符表示法:用反斜杠加某个特定字母来表示
也可以用来表示八进制和十六进制,ddd表示1-3个八进制数字,其中d为八进制数字0-7,然后将八进制转化成十进制再对照ASCLL码表,但输入的数字转化成十进制不能超过127不然会溢出
xdd x是十六进制的标志,dd表示1-2个十六进制数字,其中d为十六进制数字0-9和ABCDEF
C语言中字符常被认为是1字节的整数,字符的值就是它的ASCLL码值,可以像整数一样进行运算
(4) 字符串常量
先看一个代码
#include<stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
printf("%sn", arr1);
printf("%sn", arr2);
return 0;
}
运行结果为
第二个打印的时候会出现烫烫烫,是因为字符串的结束标志是'',而在末尾没加'',在'c'后面会出现随机值,不知道什么时候有'',该打印就不会在字符c后面立即结束
下面这个代码原理也是如此
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
printf("%dn", strlen(arr1));
printf("%dn", strlen(arr2));
return 0;
}
运行结果为
strlen是用来计算字符串的长度的,是C语言中的一个库函数要引用头文件string.h
strlen计算的是之前出现的字符的个数
为什么arr2的长度是15呢?
就是因为在字符'c'后没加'',后面出现的就是随机值.
2.const修饰的常变量
const是常属性的意思,一个变量被const修饰后就具有了某种常属性,但这个变量的本质上仍然是变量,无法在数组中定义,例如:
#include<stdio.h>
int main()
{
int n;
int arr[n]={0};//这样的话运行的时候就会报错,因为在数组中定义的大小不能是变量
return 0;
}
结果是无法运行
3.用#define定义的标识符常量
用#define定义的标识符常量就是一个彻底的常量,例如:
#include<stdio.h>
#define N 10
int main()
{
int a=N;
printf("%d",N);
int arr[N]={0};//可知N能够在数组定义中使用
}
运行结果正是为10 ,这说明了N已变为常量
4.枚举常量
枚举的关键字为enum,其结构有点像关键字struct创建的结构体,枚举常量是一一列举的,例如:
#include<stdio.h>
enum Color
{
RED,
GREEN,
BLUE
};
int main()
{
printf("%d %d %dn",RED,GREEN,BLUE);
return 0;
}
运行结果
可知枚举中的元素从上至下从0开始依次递增.