1.变量名:
是数字和字母组成的序列,但第一个字符必须是字母,下划线_被看做是字母。在c语言中,一般变量用小写字母,字符常量用大写字母。
2.数据类型及长度
/*确定由signed unsigned 限定的char short int 与long类型变量的取值范围*/
#include <stdio.h>
#include <limits.h> //该头文件里包含各数据类型的取值范围
int main ()
{
printf("Size of Char %d\\n", CHAR_BIT); //这些变量都是在<limits.h>中定义的
printf("Size of Char Max %d\\n", CHAR_MAX);
printf("Size of Char Min %d\\n", CHAR_MIN);
printf("Size of int min %d\\n", INT_MIN);
printf("Size of int max %d\\n", INT_MAX);
printf("Size of long min %ld\\n", LONG_MIN);
printf("Size of long max %ld\\n", LONG_MAX);
printf("Size of short min %d\\n", SHRT_MIN); //注意是SHRT
printf("Size of short max %d\\n", SHRT_MAX);
printf("Size of unsigned char %u\\n", UCHAR_MAX); //注意没有UCHAR_MIN 因为是0
printf("Size of unsigned long %lu\\n", ULONG_MAX);
printf("Size of unsigned int %u\\n", UINT_MAX);
printf("Size of unsigned short %u\\n", USHRT_MAX);
return 0;
}
-
int 整形 长度通常是16位或32位,根据编译器不同而不同
short int;long int;
-
char 字符型 通常是一个字节 8位
signed和unsigned可以用来限定整形和字符型;
signed char;代表着有符号即由正负,所表示的范围为-128-127
unsigned char;代表着都是正值,所表示范围为0-255
-
float 浮点型
float ;long float;double;
-
enum 枚举类型
question:书上说,枚举类型只能在内部使用,如果要输入上例中color yellow的值,只能输入1,而不是单词yellow,或者,让程序先读入字符串“yellow”,再将其转换为yellow的值,这些是什么意思?
-
可以使用该类型声明符号名称来表示整形常量,通过enum关键字可以创建一个新的“类型”,并且可以指定他可具有的值
eg: enum yanse{red, yellow,blue,green }
***enum yanse color;***
这里enum yanse就可以被允许成为一个新的类型名,声明了变量color,而这个新的类型名,代表其变量所有可能取的值是red、yellow、blue、green。
-
枚举的这些常量叫做枚举符(例子中的red、yellow等)
-
-
_Bool 布尔类型表示布尔值
- 逻辑值TRUE和FALSE,分别是非0和0。其实也是一种整数类型,但仅占用1位空间。
3.常量:
-
整数:无符号整数没什么好说的,有符号整数,用最高位表示正负,1表示-,0表示正。但这种方法表示的缺点在于,有两个0,一个是+0一个是-0,造成了浪费,所以目前计算机储存有符号整数是用二进制补码形式进行储存。正数与原来相同,不同的是负数的辨别,在原来,10000000指的是-0,但用二进制补码的形式,即做个运算用100000000(256)减去10000000(128),得到128,1代表着负,所以10000000则可以表示-128而不再表示-0,范围变成-128-127.负值最高位还全都是1,也就是从10000000(128)到11111111(255),用256去减,刚好是1-128,加上最高位是1,是-1—128;注意的是如果是正数,最高位全部是0,不参与数值,而负数补码在是参与数值的,之前的不参与。
💡 1.加前缀0表示八进制,如020(16)
2.加前缀0x或0X表示十六进制,如0x10(16)
-
浮点数:如3.14159、.2、4e16、.8e-5
-
计算机用一位的符号位和小数部分和指数部分来储存
-
系统自定认为浮点型常值数是double型,比如说定义了一个float c=4.0*2.0;4.0与2.0都是double型,运算也会双精度进行运算,但最后会将乘积存在float型c中,精度高但运行速度慢,所以在不需要的时候,可以加后缀改变系统自定的数据类型。
💡 1.后缀加f或F表示float类型 如可以float c=4.0f*2.0f
2.不加后缀,系统默认为double
3.后缀加l或L表示long float型,如4.32l或5.34L
-
-
字符常量:用单引号括起来的单个字符(只能是单个字符),如’A’、’T’;一个字节,使用字符变量储存
如char a=’A’;也可以用char a=65;但一般不这样使用
-
💡 需要注意的是,如果将转义序列赋给字符变量时,也要加‘’,如char beep=’\a’;
转义字符是单个字符
-
字符串常量:用双引号括起来的0个或多个字符组成的字符序列 如“Hello World!”、“”是空字符串,不限制长度,使用字符数组char[]储存;
- 字符串常量就是字符数组,字符串内部会使用一个空字符\0来作为结束。
- 字符串的长度自己定义,如char[40],是指这个字符数组可以容纳40个字符(准确是39个,因为还有一个字节要留给\0)
-
枚举常量:枚举是一个常量整型值的列表 如enum boolean{ NO, YES }
-
没有显示说明的情况下,enum类型中第一个枚举符的值为0,第二个为1,以此类推。
-
如果有说明,只指定了部分枚举符的值,那么未指定的枚举符值将按照最后一个指定值依次类推。
eg: enum months( JAN=1,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC) FEB的值是2,MAR是3,以此类推。
-
枚举符都是有数值的整形常量,这些枚举符如JAN成为一个有名称的常量,其的数值为1,只要能使用整形常量的地方都可以使用枚举常量,如可以用枚举常量来表示数组大小等。
-