c语言学习--数据与变量(二)

235 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

本部分比较简单,简单提提而已,后面难的内容再详细写

数据在内存中表示

计算机不能读懂人类的语言和习惯的数据表示 在计算机中,只能读懂二进制的内容,我们的代码和数据都将编译为二进制以供计算机运行。

:最小的存储单位,能够存储一个位的二进制数,就是一个0或一个1 字节:常用的存储单位,1字节等于8位 :是计算机的一次能处理的数据长度,现在的电脑一般为64位

二进制表示:B 八进制表示:O 或 0开头 十六进制表示: H 或 0x开头 关于进制转换这里不再啰嗦

数据类型

c语言提供两大数据类型:整数类型和浮点数类型。 整数类型就是只用整数来表示的数据类型,浮点数自然就是带小数部分的了

整数类型有 类型名称 | 关键字表示 |
-------- | -----|-----| 整型 | int | 短整型 | short int |
长整型 |long int |
双长整型 |long long int |
字符 | char |

浮点类型有

类型名称 | 关键字表示 |
-------- | -----|-----| 浮点型 | float | 双精度浮点型 | double |

c99标准添加的类型 类型名称 | 关键字表示 |
-------- | -----|-----| | 布尔 | _Bool |


关于大小现在一般来说,int 占4字节内存,short int占2字节,long int占32字节,long long int 占64字节,char占一个字节

但是也只是一般来说,不同机器上可能也不同。 在c语言标准上,只规定了数据类型的最小范围,还规定了short不能比int大,long 不能比int小,long long不能比long 小,并没有规定具体的大小。


关于溢出:每个类型都有自己可以表示的范围,那如果超过范围会有什么效果呢 我们用一个字节的数据来模拟一下 八位数据最大为 1111 1111,这时候再+1,就是1 0000 0000 但是并不会进位到第九个位,超过的数据会被直接抛弃 那数据就变成了 0000 0000 了,考虑符号的话也是一样的过程 需要注意的是这种错误,编译器不会提醒我们!!!


关于常量程序中使用的数字,一般被存储为int类型,超过范围之后编译器会考虑使用更大范围的类型。 如果我们希望编译器使用long类型来存储一个小的数字,可以在其后加L 如 1122L 类似的LL 表示 long long


以上说到的,都是用来表示整数的数据 关于字符但是 char 是用来表示字符的,但是在技术层面上其也是一种整数类型 因为它存储的不是实际的字符,而是原来表示字符的ASCII编码,而这个编码是一个整数,范围是0~127,包括了可见字符和转义字符。详细的ASCII码可百度了解


符号关键字 如上数据类型,一般默认是带符号的,就是可以表示负数的 如int的表示范围一般是 -32768~32767

但是在某些情况下,我们只需要表示正数,且希望能够表示更大范围的数字 可以声明为无符号数据类型,如无符号int 表示为: unsigned int 这时,int的4个字节存储空间都将表示正数,范围为 2的32次方

声明无符号关键字: unsigned 声明有符号关键字:signed


使用变量

变量就相当于一个盒子,用来装数据的 使用变量的步骤: 声明(可选择初始化) ---> 赋值 ---> 使用数据

声明就是使用关键字表示 + 变量名, 变量名,只能是字母或下划线开头,后面可以是数字、字母、下划线 如

int a = 9;   //声明并初始化为9
int c ;   // 声明,未初始化
float e = 1.4;
char g = 'a';

赋值:就是 变量名 = 值 如

a = 19;
c = 4;
e = 3.3;
g = 'e';

格式化符号

这些符号用于输入输出中的格式化,接下来的其他文章中,会有输入输出的说明

格式符号转换
%c字符
%s字符串
%d有符号十进制整数
%u无符号十进制整数
%o八进制整数
%x十六进制整数(小写字母0x)
%X十六进制整数(大写字母0X)
%f浮点数
%e科学计数法(小写'e')
%E科学计数法(大写“E”)
%g%f和%e 的简写
%G%f和%E的简写
另外 前缀 h表示短整型,如 %hd
前缀 l 表示长整型 ,如 %ld

转义字符

在这里插入图片描述