1.变量
1.1整数类型
1.1.1介绍
C语言中整数类型用于存放整数。例如int a =10
1.1.2整数类型的分类
- C语言中的整形类型分为signed和unsigned,其中默认为signed,上表为signed
- C程序中整形常声明为int
1.2浮点类型
1.2.1介绍
C语言中浮点类型用于存放小数。例如float a = 7.3
1.2.2浮点类型的分类
- 浮点数=符号位+指数位+尾数位(浮点数可以理解为近似值)
- 尾数部分可能会造成丢失,导致精度损失
- float变量需要在后面加上f
- %f默认默认6位小数 %.x保存x位小数
#include<stdio.h> void main() { float a1 = 7.32f;//float变量需要在后面加上f double a2 = 6.23213213211;//%f默认默认6位小数 %.x保存x位小数 double a3 = .97;//等价于0.97 double a4 = 9.7e2;//等价于9.7*10^2 printf("a1=%f a2=%f a2=%.15f a3=%f a4=%f", a1, a2, a2, a3, a4); }
1.3字符类型
1.3.1介绍
字符类型为char,大小为1byte,可以存储字母或者数字。
1.3.2代码
#include<stdio.h> void main() { char c1 = 'a';//字符常量需要用两个单引号括号起来 char c2 = 'b'; char c3 = 97;//若对char赋值一个整数,它将会输出其对应的的ASCII码的字母或者符号 printf(" c1 = %c c2 = %c c3 = %c", c1, c2, c3); int c4 = c2 + 40;//char类型可以进行运算 printf(" c4 = %d", c4); char c5 = 'A'; printf(" c5 = %c", c5); }
- 字符常量需要用两个单引号括号起来
- 若对char赋值一个整数,它将会输出其对应的的ASCII码的字母或者符号
- char类型可以进行运算
- 存储:字符'a'→'a'ASCII码值(97)→(97)对应二进制数(1100001)→存储
- 读取:二进制数(1100001)→(1100001)对应十进制数(97)→(97)对应ASCII码'a'→读取
1.4布尔类型
- C89标准中,需要用宏定义方式定义布尔变量,且bool变量中非0即为真 0即为假
#include<stdio.h> #define BOOL int #define TURE 1 #define FALSE 0 void main() { //BOOL isOK = TURE; BOOL isOK = FALSE; if (isOK) { printf("true"); }else { printf("false"); } }
2.C99下,提供了bool类型,但是与C89不同的是,仅存在0为假,1为真(C89下非0即为真),但是需要导入头文件stdbool.h
#include<stdio.h> #include<stdbool.h> void main() { bool c1 = false; if (c1) { printf("true"); } else { printf("false"); } }
3.bool通常用于条件控制语句if,循环控制语句while
1.5基本数据类型转换
1.5.1介绍
当c程序在对变量进行赋值和运算时候,将会把精度较小的变量自动转换为精度较大的变量,即基本数据类型转换。
1.5.2数据类型按照精度大小排列为
short→int→long→float→double→long double
其中unsigned int大于signed int
1.5.3数据类型转换规则
char,short→int→unsigned→long→double
float→double
1.5.4代码
#include<stdio.h> void main() { char a1 = 'a'; int a2 = a1; double a3 = a2; printf("a1=%c, a2=%d, a3=%lf\n", a1, a2, a3);//char,short→int→unsigned→long→double //float→double char c1 = 97; int c2 = 100; int c3 = c1 + c2; printf("c3=%d\n", c3);//两个不同精度的变量进行运算,精度较小的变量会自动转换成精度较大的变量 double b1 = 97.232141221564; float b2 = b1; printf("b2 = %.10f\n", b2);//精度较大的变量赋值给精度较小的变量,精度将会降低 }
- char,short→int→unsigned→long→double
float→double - 两个不同精度的变量进行运算,精度较小的变量会自动转换成精度较大的变量
- 精度较大的变量赋值给精度较小的变量,精度将会降低