目录
一、类型
类是一种类型,是对象的模板,而不是变量或对象。它内部本身不包含对象。只是声明了这种对象的存在。只有创建对象的时候,才会真正的创建对象内部的对象。
1.简单类型
整型 int、short、long、longlong、bool、char、size_t
浮点型 float、double、long double
size_t是标准C库中定义的,在64位系统中为long long unsigned int,非64位系统中为long unsigned int。使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。因为其是基于平台变化的最大支持的无符号整型。
2.复合类型(右为举例)
引用&a
指针*pointer
数组 i[]
字符串"Hello world"
3.自定义类型
类class
结构体struct
枚举enum
联合体union
二、字面值常量
常量主要包括字面值常量和自定义常量。
1.整型字面常量
不同进制指的是字面格式,其转化为存储格式时,都会变成二进制存储。不必担心十进制与二进制之间的运算。字面常量只是一种数字的表示方法。24,024(八进制),0x24(十进制)。会自动选用尺寸最小的整型进行存储;负号是对字面值取相反数,不是字面值的一部分。
85 // 十进制
0213 // 八进制
0x4b // 十六进制
30 // 整数
30u // 无符号整数
30l // 长整数
30ul // 无符号长整数
2.浮点型字面值常量
默认情况下使用 double 存储。3.14,3.14E0,10e4
3.14159 // 合法的
314159E-5L // 合法的
510E // 非法的:不完整的指数
210f // 非法的:没有小数或指数
.e55 // 非法的:缺少整数或分数
3.字符和字符串的字面常量
- 字符'a':单引号下一个字符,为一个字节
- 字符串"aa":双引号下,会多一个'\0'终止标志,字节数=字符数+1,长度(strlen)就是字符数
附:转义字符
C语言中,一个ASCII字符用单引号括起来,表示单字符常量,如:'a', 'A','0','9'等
C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等
例题:求字符串长度和大小
1.字符串"\t\\x43\102\bcd"的长度是_____,大小是____?
2.字符串"478\345\\345\t\128\x15"的长度是______,大小是_____?
3."\72"在内存中占____个字节?
4.表达式'a'+10+'\101'+010+0x10的值是______。
三、定义变量
将数据类型分为int、char、float等是为了更好的控制数据精度以及高效利用空间
1.常见数据类型以及大小
2.数据类型以及格式控制符
例题:求表达式的值
1. 表达式的值为_______。
int i = 1;
int j = 2;
int k = i / j;
printf("k=%d", k);
2. 表达式的值为_______。
int i = 1;
int j = 2;
double k = i / j;
printf("k=%d", k);
3. 表达式的值为_______。
double i = 1;
double j = 2;
double k = i / j;
printf("k=%d", k);
4. 表达式的值为_______。
int i = 1;
int j = 2;
double k = i / j;
printf("k=%f", k);
5. 表达式的值为_______。
int i = 1;
double j = 2;
double k = i / j;
printf("k=%f", k);
3.整型提升
表达式中各种长度可能小于int长的的整型值,都必须先转换为int或者unsigned int,然后才能送入CPU去执行运算。(涉及到原码、反码、补码的知识)
例题:整型提升
1.输出____。
char a = 250;
printf("%d", a);
2.输出_____。
int main()
{
char a = 0xb6;
short b = 0xb600;
int c = 0xb6000000;
if (a == 0xb6)
printf("a");
if (b == 0xb600)
printf("b");
if (c == 0xb6000000)
printf("c");
return 0;
}