C语言变量及数据类型
变量
1.为什么需要变量
- 一个程序就是一个世界
1.1 变量是程序的基本组成单位
- 无论是使用哪种高级语言编写程序,变量都是其程序的基本组成单位,比如
void main(){
int a = 1; //定义了一个整型变量,取名为a,并赋值为1(强数据类型语言)
int a = 3;
b = 89; //给变量赋值为89
printf("a=%d \n",a);//使用输出语句,把变量a值输出 %d表示输出的形式为整数
printf("b=%d\n",b);
getchar(); //将控制台停留,等待输入
}
2.变量的介绍
2.1概念
- 变量相当于内存中一个数据存储空间的表示,通过变量名可以访问到变量值。
2.2 变量使用的基本步骤
-
声明变量
- int num ;
-
赋值
- num = 60 ;
-
使用
- printf("num = %d",num);
-
也可以一步到位
- int num2 = 99;
2.3 变量快速入门
#include <stdio.h>
void main(){
int num = 1;
double score = 2.3;
char gender = 'A';
char name[] = "尚硅谷";
//1.如果输出的是整数 %d
//2.如果输出的是小数 %f,如果希望保留小数点 %.2f
//3.如果输出的是字符 %c
//4.如果输出的是字符串 %s
//5.在输出不同数据时,对应格式化是形式要对应起来
printf("num=%d score = %.2f gender = %c name = %s",num,score,gender,name);
getchar();
}
//看到变量应想起对应的内存图
2.4 变量使用注意事项
- 变量表示内存中的一个存储区域(不同的数据类型,占用的空间大小不一样)
- 该区域有自己的名称和类型
- 变量必须先声明,后使用
- 该区域的数据可以在同一类型范围内不断变化
- 变量在同一作用域内不能重名
- 变量三要素(变量名+值+数据类型)
- 演示
#include <stdio.h>
void main(){
//变量必须先声明后使用
int num;
num = 10;
int num2 = 34;
num2 = 4;
num2 = 43;
num = 3.4; //从 double 到 int ,可能丢失数据;
printf("num=%d",num);
getchar();
//system("pause");
}
2.5 变量的数据类型
-
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的存储空间(使用字节表示多少)
-
数据类型
- 基本类型 (数值类型 (整型:短整型short 整型int 长整型long ) (浮点型 :单精度型float 双精度型 double) 字符类型char)
- 构造类型 :数组 结构体(struct) 共用体(union) 枚举类型(enum)
- 指针类型
- 空类型(void)
-
数据类型小结
- 注意:在C中,没有字符串类型,使用字符数组表示字符串
- 在不同系统上,部分数据类型字节长度不一样,int 2或者 4
2.6 整数类型
2.6.1.基本介绍
- C语言的整数类型就是用来存放整数值的
2.6.2.整型的类型
- char 一字节 -128到127
- unsigned char 一字节 0到255
- signed char 一字节 -128到127
- int (signed int ) 2或4字节 -215到215-1 或 -2^31到 2^31-1
- unsigned int 2或4字节 0到65535 或 0到4294967295
- short(signed short) 2字节 -215到215-1
- unsigned short 2字节 0到65535
- long(signed long) 4字节 -231到231-1
- unsigned long 4字节 0到2^31-1
2.6.3.整型的使用细节
- 各种类型的存储大小与操作系统、系统位数和编译器有关,目前同用的以64位为主。
- 在实际工作中,C程序通常运行在Linux/Unix操作系统下
- C语言的整型类型分为有符号signed和无符号unsigned两种,默认是signed
- C程序中整型常声明为int型,除非不足以表示大数,才使用long long
- bit(位):计算机中的最小存储单元;byte(字节):计算机中基本存储单元
- 1byte = 8 bit
2.7浮点类型
2.7.1 基本介绍
- C语言的浮点类型可以表示一个小数
2.7.2 案例演示
void main(){
double salary = 100.56;
double num1 = 1.3;
double num2 = 4.5;
double sum = num1 + num2;
printf("sum = %.2f",sum);
getchar();
}
2.7.3 浮点型的分类
单精度浮点型float 4字节 6位小数 1.2E-38到3.4E38
双精度浮点型 double 8字节 15位小数 2.3E-308到1.7E308
2.7.4 说明
- 关于浮点数在机器中存放形式: 浮点数 = 符号位 + 指数位 + 尾数位,浮点数是近似值
- 尾数部分可能丢失,造成精度损失
2.7.5 浮点数使用细节
-
浮点数常量默认位double类型,声明float型常量时,须后加 f 或 F
-
浮点数常量常有两种表示形式
- 十进制形式
- 科学计数法形式
-
通常情况下,应该使用double类型,因为它比float型更加精确
-
printf("d1=%f",d1);//在输出时,默认保留小数点后6位
-
代码
#include <stdio.h>
void main(){
float d1 = 1.239173621;//从double到float截断
float d2 = 1.1f;
double d3 = 1.3;
double d4 = 5.12;
double d5 = 0.521;
double d6 = 5.12e2;
double d7 = 5.12e-2;
printf("d1=%.15f d2=%f",d1,d2);
getchar();
}
2.8 字符类型
2.8.1 基本介绍
- 字符类型可以表示单个字符,字符类型是char,char是一个字节(也可以存字母或数字),多个字符称为字符串,在C语言中用char数组表示,数组不是基本数据类型,而是构造类型。
2.8.2 基本案例
void main(){
char c1 = 'A';
char c2 = '0';
char c3 = '\t';
printf("c1=%c c2=%c c3=%c",c1,c2,c3);//%c表示以字符的形式输出
getchar();
}
2.8.3 字符类型使用细节
- 字符常量是用单引号括起来的单个字符
- C中还允许使用转义字符 \ 来将其后的字符转变为特殊字符型常量
- 在C中,char的本质是一个数,在输出时,是ASCII码对应的字符
- 可以直接给char赋值一个整数,然后在输出时,会按照对应的ASCII字符输出
- char类型是可以进行运算的,相当于一个整数,因为它都有对应的Unicode码
- 案例演示
#include <stdio.h>
void main(){
char c1 = 'a';
char c2 = 'b';//这时当我们以%c输出时,就会按照ASCII编码表对应的字符输出
char c3 = 97;
//注意:vs2010编译器是C89,要求变量的定义在执行语句之前
int num = c2 + 10;
printf("c1=%c c2=%c c3=%c",c1,c2,c3);
printf("num=%d",num);
getchar();
}
2.8.4 字符类型本质
-
字符型存储到计算机中,需要将字符对应的码值找出来
- 存储:字符'a' --> 码值(97) --> 二进制(1100001)-- > 存储
- 读取:二进制(1100001) --> 码值(97) --> 字符'a' --> 读取
-
字符和码值的对应关系是通过字符编码表决定的
2.9 ASCII码介绍
- 在计算机内部,所以数据都使用二进制表示。每一个二进制位(bit)有0和1两种状态,因此8个二进制位就可以组合出256种状态,这被称为一个字节(byte)。一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111.
- ASCII码:上世纪60年代,美国制定了一套字符编码,对英语字符与二进制之间的关系做了统一规定,被称为ASCII码,ASCII码一共规定了127个字符编码。只占用一个字节的后面7位,最前面的一个同一为0
- 缺点
- 不能表示所有字符
2.10 布尔类型
2.10.1 基本介绍
- C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真;
- 但这种做法不直观,所以可以借助C语言的宏定义
- C语言标准C99提供了Bool类型,Bool仍时整数类型,但与一般整型不同的是,Bool变量只能赋值0或者1,非0 的值都会被存储为1,C99还提供一个头文件<stdbool.h>定义了bool代表Bool,true代表1,false代表0。只要导入stdbool.h,就能很方便的操作布尔类型了。
- 条件控制语句 :if
- 循环控制语句 : while
2.10.2 应用案例
#include <stdio.h>
//宏定义
#define BOOL int
#define TRUE 1
#define False 0
void main(){
int isPass = -1;
//定义一个布尔变量
BOOL isOk = TRUE;
if(isPass){
printf("通过考试");
}
if(isOk){
printf("OK");
}
getchar();
}

浙公网安备 33010602011771号