导图社区 C语言基本数据类型
整理归纳C语言基本数据类型的知识,较为详细地呈现C语言中基本数据类型的知识架构,为后续的学习和程序编写打下坚实基础。
提示: 本内容由社区用户上传并分享。平台不对内容的真实性、合法性、知识产权归属及是否侵害第三方权利进行事前审核或保证。本内容可能包含受版权保护的图片、字体或其他第三方素材,使用前请自行确认授权范围。
本思维导图详细阐释了C语言中的运算符和表达式。运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符。了解运算符和表达式是程序设计的基础,快来下载学习吧
该思维导图介绍了C语言数组的相关概念,便于对数组形成结构化的认识。数组作为一种构造数据类型在编写程序时被广泛运用。
函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。该思维导图总结了函数相关的知识点,便于对函数有一个整体上的认识。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
基本数据类型
字符型
字符集
ASCII
non printable character
printable character
char
用''(单引号)括起来
字符操作
ASCII中,char的取值范围是[0,127]
计算中出现字符时,C语言只是使用它对应的整数值
字符有和数相同的属性
signed char
8 bits
表示范围-128~127
unsigned char
表示范围0~255
转义序列
作用
提供了一种呈现如换行符(不可打印)
字符转义序列
使用方便
没有包含所有不可打印字符
数字转义序列
八进制转义序列由字符\和一个八进制数(最多三位)组成
十六进制专业序列由字符\x和一个十六进制数组成,x必须小写
使用
作为字符常量使用时,转义序列应用一对单引号括起来
直接使用转义序列的代码可读性差,所以采用#define的方式给他们命名
可以嵌入字符串中使用
io
%c
对单独一个字符进行读写操作
scanf读取字符时不会跳过空白字符
(sp)%c
强制scanf函数在读入字符前跳过空白字符
读写字符的函数
getchar
int getchar (void);
返回值为int
读入出错时返回-1
特点
每次调用将读取并返回一个字符
不会在读取时跳过空白字符
用途
循环中搜寻字符
跳过不确定数量的相同字符
putchar
putchar (ch);
优点
比scanf和printf简单,因为scanf和printf是设计来进行格式化输入输出的
精简循环
注意
混用getchar和scanf函数时,scanf仅消耗掉匹配的输入数据,其余部分仍留在缓冲区(包括换行符)
类型转换
原因
计算机执行算术运算时,通常要求
操作数具有相同的位数
并且存储方式也相同
不同类型的数混合在同一表达式中时,编译器需要生成一些指令进行操作数的类型转换
隐式转换(implicit)
转换方式
编译器自动处理转换
使用场景
算术
算术表达式或逻辑表达式中操作数类型不同时(常用算术转换)
赋值运算符右侧表达式与左侧变量类型不匹配时
函数
函数调用中实际参数和其对应的形式参数的类型不匹配时
return语句中表达式的类型和函数返回值的类型不匹配时
常用算术转换
适用范围
子主题
策略
把操作数转换为可以安全的适用于两个数值的“最狭小”的数据类型
提升:将相对狭小类型的操作数转换成另一个操作数的类型
整型提升:把字符或短整型转换成int类型
规则
提升
任一操作数为浮点数
把整型向浮点数转换
浮点数转换为精度更高的浮点数
两个操作数均不是浮点数
char和short int
整型提升
其他情况
向更高级的数据类型转换
特例(两个条件)
long int和unsigned int数据类型长度相同
一个操作数为long int,另一个为unsigned int
均转换为unsigned long
较低级->较高级(按存储长度)
赋值中的类型转换
把赋值运算符右侧表达式的值转换为左侧变量的类型
浮点数赋给整数会向零截取
表达式的值超出了范围会得到无意义的数
显示转换(explicit)
通过使用强制类型转换运算符执行
表示形式
(类型)变量
(类型)(表达式)
暂时性的改变,不会改变变量定义时的数据类型
强制类型转换可以用来控制编译器,强制其执行转换
(类型名)为一元运算符
避免溢出
整数相除获得小数
类型定义
typedef type declaration
定义
用于对一个已有的数据类型创建别名
本质
一个类型定义声明没有创建一个新的类型
仅仅是对某个已有的类型增加一个新名称
使程序更加易于理解(增加可读性)
使程序更加容易修改
设置布尔型
编写可移植程序
不同计算机上相同的类型取值范围可能不同
C语言库自身使用typedef为那些可能依据C语言实现的不同而不同的类型创建类型名
typedef与#define的区别
sizeof运算符
取数据类型,常量,变量,或者表达式值的存储长度的运算符(以字节为单位)
语法规则
sizeof(数据类型说明符/表达式)
sizeof(类型名)
sizeof(表达式)
括号可省略
但一般不省略
一元运算符
优先级较高
整型
类型标识符
int
长度(size)
16位机
16bits
32位机
32bits
种类
short (int)
unsigned short (int)
有符号整型
最左边的一位为符号位
0
正数或零
1
负数
表示范围
[-2³¹+1,2³¹-1]
unsigned (int)
无符号整型
最左边的一位为数值的一部分
[0,2³²-1]
long (int)
unsigned long
limit.h
内容
int的最大值最小值
INT_MIN
INT_MAX
short的最大值最小值
SHORT_MAX
SHORT_MIN
long的最大值最小值
LONG_MAX
LONG_MIN
整数常量
不同进位制的常量
十进制
包含数字0~9
不能以0开头
八进制
包含数字0~7
必须以0开头
十六进制
包含数字0~9和字母a~f
以0x开头
字母可大小写
类型
依次尝试以int,long int,unsigned long int来表示
八进制和十六进制
依次尝试以int,unsigned int,long int,unsigned long int来表示
强制编译器以特定格式处理常量
长整型
添加后缀L或l
添加后缀U或u
无符号长整型
添加后缀UL或ul
整数溢出
两个整型算数运算的结果仍为整型
对整型执行算术运算,其结果有可能超出整型表示的范围
运算结果不能表示为整型,发生溢出
结果
有符号数发生溢出,程序的行为没有定义
无符号数发生溢出,产生正确结果对2^n取模,其中n是存储运算结果的位数
%d
十进制整数
无符号数
%u
无符号十进制整数
%o
无符号八进制整数
%x
无符号十六进制整数
无符号短整型
u、o、x前加h
d、u、o、x前加l
浮点型
单精度浮点数float
在IEEE浮点标准中:32位
双精度浮点数double
在IEEE浮点标准中:64位
拓展双精度浮点数long double
IEEE浮点标准
单精度
32位
符号位
1bits
指数部分
8bits
小数部分
23bits
最大值
约3.40×10³⁸
精度
6个十进制数字
float.h
存储方式
以科学计数法的形式存储
每个数以符号,指数,小数三部分组成
浮点型常量
小数形式
必须有小数点
指数形式
(数字)e(或E)(指数部分)
指数部分必须为整数,可以有+-
缺省情况下,浮点常量以double类型存放
强制编译器把浮点常量以float类型处理,添加后缀f或F
强制编译器把浮点常量以long double类型处理,添加后缀l或L
float
%f
%e
%g
double
scanf
%lf
%le
%lg
printf
long double
%Lf
%Le
%Lg