目录
一、类型分类
C语言中,数据类型可以分为基本数据类型和构造数据类型。这里我们讲一下基本数据类型,至于构造数据类型后面会讲。
基础数据类型有字符类型、整形、浮点型、布尔类型。
字符类型:存放单个字符,用单引号引起来。
整形:整数型,存放整数。
浮点型:存放浮点数,即小数。
布尔类型:表示真(true,可以用非0的数字表示)或者假(false,可以用0表示),只有这两种取值。
二、字符类型
C语言中字符类型用char表示。char类型分为有符号字符类型(signed char)和无符号字符类型(unsigned char),在大多数编译器下char默认为是有符号的。在C语言中,char类型占1个字节,并且char类型是通过ASCII码值存储的,因此可以将字符类型用%d格式化输出。
char的范围是-128~127,unsigned char的范围是0 ~255。
一个字节等于8个比特位。一个比特位存放一个二进制位。当这八个比特位都是1的时候,即 1111 1111(十进制的255),这个数字就是unsigned char最大的值,0000 0000 是最小值。
有符号类型则将第一个比特位作为符号位,1表示负数,0表示正数,剩下的7位表示数值,1111 1111(-128),0111 111(127)。
#include<stdio.h>
int main()
{
char a = 'w'; //定义一个有符号字符类型
printf("%c\n", a); // w
unsigned char b = 97; //定义一个无符号字符类型
printf("%c\n", b); // a
printf("%d\n",sizeof(a)); // 1
return 0;
}
这里的代码中的等号是赋值的意思,不是判断是否等于。我们在内存中开辟了一个char类型大小的空间,并且将'w'这个字母存放在了里面。然后给无符号字符类型b赋值了-97。第九行输出了a在内存的大小,占一个字节。
三、整形
C语言中整数类型用int表示,int类型分为short int 短整型,int整形,long int长整型,long long int更长的整形。都分为有无符号。内存占用及范围如下
long 和longlong的内存占用情况根据编译器不同而不同,甚至能看见占16个字节的longlong int类型。
#include<stdio.h>
int main()
{
unsigned short a = 12345;
printf("%hu\n", a);
short b = -23456;
printf("%hd\n", b);
unsigned int c = 456789;
printf("%u\n", c);
int d = -987547;
printf("%d\n", d);
unsigned long e = 9074228;
printf("%lu\n", e);
long f = 86;
printf("%ld\n", f);
unsigned long long g = 1234567890;
printf("%llu\n", g);
long long h = -123456789;
printf("%lld\n", h);
return 0;
}
使用时根据情况选择使用哪个类型。
四、浮点型
浮点数就是小数,分为float,double,long double,精度依次增加。
#include<stdio.h>
int main()
{
float a = 3.14;
printf("%f\n", a); //3.140000
double b = -3.1415;
printf("%lf\n", b); //-3.141500
long double c = 2.71845678901;
printf("%.10Lf\n", c); //2.7184567890
return 0;
}
注意:编译器默认的浮点数类型是double
%.10Lf的意思是保留小数点后10位输出long double类型数字。
五、布尔类型
布尔类型需要包含包含头文件stdbool.h,布尔类型就只有true和false两种取值,可以用非零数和零代表并且可以参与运算。布尔类型常用于判断条件。
#include<stdio.h>
#include<stdbool.h>
int main()
{
bool aa = 0; //创建布尔类型变量
aa = aa + 1; //把aa+1赋值给aa
printf("%d\n", aa + 3); //4
return 0;
}
六、变量
生活中会变得值就是变量,例如,年龄、时间等。
变量在上面也见过了,定义变量的语法是 变量类型 变量名 = 变量值 。如果没有等号赋值的话,则是随机值。
在使用得时候,可以直接用变量名代替变量就行了。
变量得分类:全局变量和局部变量。全局变量不用定义在main函数或者其他函数中,全局变量在整个程序都能用。局部变量只能在当前作用域使用,一般来说就是当前大括号中。当变量同名时,作用域小得变量优先使用。
#include<stdio.h>
char i = 'a'; //创建全局变量
int main()
{
printf("%c\n", i); //a
char i = 'w'; //创建局部变量
printf("%c\n", i); //w
return 0;
}
输出第一个变量i时是输出全局变量i,然后第二个输出时局部变量就覆盖了全局变量,所以输出是'w'。
变量命名规则
-
只能包含字母(a-z、A-Z)、数字(0-9)和下划线(_)。
-
必须以字母或下划线开头,不能以数字开头。
-
区分大小写,例如 My_name和 my_name 是两个不同的变量
-
不能使用C语言的关键字,如 int、float、return 等