C语言基本数据类型

基本数据类型

一、基本数据类型

数据的含义:一些事物的特征,比如身高183cm
C语言的数据类型:基本数据类型、构造数据类型、指针类型、空类型

1.1 基本数据类型

基本数据类型包含整形、浮点型、字符型;
基本数据类型特点:知道分配空间的大小。

1.1.1 整型

关键字: int
分配的空间大小: 编译器不同,空间大小不同,一般是4个字节
按符号来分,符号就是正数和负数的意思。

signed 有符号 //默认有符号,可以省略
数据是按位存储的,符号,存储在最高位
最高位是符号位,其余的位为数据位

unsigned 无符号 //不能保存有符号的数据,不能保存负数
所有位存储的都是数据位
当写无符号的数据时,必须写unsigned 定义,不能省略

例:
unsigned (int) a;
signed (int) b;
a就是无符号整形变量,b是有符号整形变量。

按大小来分:
短整型 :
关键字:short int 分配空间大小:2个字节
整型:
关键字: int 分配空间大小:4个字节
长整型:
关键字:long int 分配空间大小:4个字节

数据有效取值范围:
有符号数据
最大值: 最高位存储符号位 剩余31位数据位
符号位为0 剩余31位存1 ---->2147483647
0111 1111 1111 1111 1111 1111 1111 1111
最小值: 符号位为1, 剩余31位存0 ----> -2147483648
1000 0000 0000 0000 0000 0000 0000 0000

无符号数据
最大值: 32位全部都是数据位,32存1 ------> 4294967295
最小值: 32位全部都是数据位,32存0 ----> 0

1.1.2 浮点型

分为两类:单精度、 双精度;

单精度 关键字 :float 精度:6位
所占空间大小: 4个字节 //精度:6位
双精度 关键字:double
所占空间大小:8个字节

浮点型的数据:在存储的空间中,分为三部分:符号位+小数部分+指数部分

二、数据溢出问题

给变量赋值什么样的数值,并不代表字体会保存多大的数值,需要依据数据类型来决定你能保存多大的数值。
数据类型决定数据的取值范围,如果超出了数据类型的取值范围,就会发生数据的溢出,

数据如果从最大值方向溢出,数据会从最小值开始计数
数据如果从最小值方向溢出,数据会从最大值开始计数

为了便于举例,我使用char定义一个整形变量:
如:unsigned char a; //a是一个占有8个bit的内存空间,并且无符号的变量
a的取值范围是:0~255
若赋值a=256,由最大值方向溢出,就要从最小值计数,溢出1,所以a=0;
若赋值a=-1,由最小值方向溢出,就要从最大值计数,溢出1,所以a=255;

总结:给变量赋值的时候,一定要遵循数据的取值范围,否则,你给变量的值,并不是系统保存的值,这是数据范围一种环状结构

三、常量与变量

3.1 常量:

​ 常量的分类:整型常量 实型常量 字符常量 ‘\0’
​ 字符常量:打印字符 ,转义字符
​ ‘\n’:换行
​ ‘\t’:制表符
​ ‘\r’:回车不换行
​ 概念:在程序运行中,其值不能改变的量叫做常量

字符串:不是一种数据类型
用双引号来表示 “hudegi” “g” + ‘+’ “+”

字符与字符串之间的关系:
字符串:由多个字符来构成
‘h’ ‘e’ ‘l’ ‘l’ ‘o’ 字符
‘h’ ‘e’ ‘l’ ‘l’ ‘o’ ‘\0’ == “hello” 字符串

3.2 变量:

​ 概念:在程序运行中,其值可以改变的量叫做变量

3.2.1 变量的定义

变量定义形式: 数据类型 变量名
int
char 变量名
int b,a;

​ 变量名:符合标识符的命名规则
​ 标识符的命名规则:
​ a、是由字母、数字、下划线、美元符($)组成
​ b、开头不能是数字
​ c、变量名不能是关键字,一般变量名是小写
​ 变量名尽量取得有意义一点,区分大小写

3.2.2 变量的赋值

初始化: 定义变量的同时并赋值
double mn = 12;
将12赋给变量mm

赋值:先定义好变量,再赋值
double mn;
mn=12;

3.2.3 变量名的理解

​ char a;
​ 表示在内存空间分配了一个字节的空间,并命名为a;
​ 对a空间进行写操作,将数值写到该空间,
​ 此时变量a必须在赋值运算符的左侧
​ 对a空间进行读操作,将该空间的数值取出来,进行相关的运算
​ 此时变量a必须是赋值运算符的右侧

实际项目中,变量名更多是用英语的缩写/本身英语代替;
比如:临时变量t/temp
用作计数的功能是i/j
年龄用age,身高用tall
初学者常用拼音做变量名,但是在程序界看来是十分的不专业,即是不违反编程语法
使用变量名应遵循英语命名/公司使用的命令规范

四、输入输出函数

4.1 printf()函数

​ 函数功能:输出函数
​ 函数形式:printf(“格式控制”,输出列表)
​ 格式控制:
​ 双引号里面的内容是什么就输出什么,
​ 格式控制符:控制数据输出的格式
​ %d :以十进制的形式输出数据
​ %c : 输出字符型数据
​ %f : 输出浮点型数据
​ %s : 输出字符串
​ %u : 输出无符号数据
​ %o : 输出八进制
​ %x : 输出十六进制数据
​ %p : 输出地址数据
​ %#p : 输出完整的十六进制地址数据
​ %lf : 输出双精度数据
​ %ld :输出长整型数据
​ 转义字符:功能字符

格式控制符特殊的使用形式:%d %f

4.1.1 %[整数]d : 控制数据输出的宽度

​ %[正整数]d : 向右对齐,左补空格
​ %[负整数]d : 向左对齐,右补空格

注意:当数据原有的宽度大于所要控制的数据的宽度的时候,数据会原样输出

4.1.2 %[.整数]f: 控制的是小数位数输出的宽度

​ 注意:在控制(保留)小数位数输出的时候,会四舍五入

输出列表:所要输出的数据
输出列表中的内容,跟格式控制符在位置,数量上一一对应
如果输出列表中的数据是多个的话,要用逗号隔开
输出函数的作用:起到提示的作用,用来代码调试

4.2 scanf()函数

函数功能:输入函数(键盘获取数值)
函数形式:scanf(“格式控制”,地址列表)
格式控制:原样输入,原样输出
注意:如果输入的是double类型的数据,需要以%lf形式输入数据
格式控制符:
%d :以十进制的形式 输入数据
%c : 输入字符型数据
%f : 输入浮点型数据
%s : 输入字符串
%u : 输入无符号数据
%o : 输入八进制
%x : 输入十六进制数据
地址列表: 取地址符 &

注意:格式控制里面输入什么,就输出什么,
格式控制里面,可以有逗号,有空格,有其他的,但必须都要
在终端要原样输入,一般转义字符不能加,如果有转义字符
则必须输入转义字符

对于整型数据来说:scanf("%d%d",&a,&b);
在输入数据的时候,中间可以加空格,区分数据
对于字符型的数据来说:scanf("%c%c",&a,&b) ;
scanf()函数会识别字符,包括空格键,回车键,

并保存在变量中,所以在输入字符的时候,中间最好不要用空格
如果格式控制里面有空格的话,在输入的时候就可以

练习:在终端中输入小三的姓名、身高、年龄,和语文成绩。

4.3 getchar

4.4 putchar

使用例程:

#include <stdio.h>

int main(int argc, char *argv[])
{
	char c;
	printf("Hello \n请输入一个字符:");
	c=getchar();
	printf("你输入的字符是:");
	putchar(c);
	printf("\n");
	return 0;
}

五、数据类型的转换

​ 1)数据类型自动转换
​ 原理:当数据类型不一样时,系统自动转换,不需要人为操作
​ 能够发生自动转换的条件:低精度向高精度转换
​ 精度从低到高的顺序:
​ char->short–>int–>long–>float–>double
​ 3 (int) 5.67(double)

2)数据类型强制转换
原理:人为操作,将高精度的数据转换为低精度的数据
形式:int a; float b;
a=(int)b
(需要转换成为的数据类型)变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_翩翩少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值