C语言

C语言——数据类型(一)

一直以来都数据类型这一块都是模模糊糊,今天重温了一下,好像打开任督二脉一样。

1.1 数据类型

C以后的语言方向发展:

(1)C++/Java更强调类型,对类型的检查更严格

(2)Javascript,Python,PHP不看重类型,甚至不需要事先定义

整数char、short、int、long、long long
浮点数float、double、long double
逻辑bool
指针 
自定义类型 

其中,还用到sizeof,是一个运算符,给出某个类型或变量在内存中所占据的字节数。

1.2 整数(整数在内存中的表达形式是二进制数or补码形式)

   
char1字节-128-127(11111111-10000000=-1~-128;00000001~01111111=1~127)
short2字节-32768~32767
int取决于CPU 
long
取决于CPU
 

其中,正数与0的存储比较好理解,但是负数怎么存储呢?

1.2.1 二进制负数

计算机之所以采用补码的形式来存储数据,意义就在于使用补码后运算逻辑更简单,同时也决定了它在运算时无需区分正负。(编译软件在编译时会把所有数据都转化成2进制补码)
例如 -7+1=-6
11111001b + 00000001b = 11111010b 
再如 7-1 = 6
00000111b + 11111111b = 00000110b

之前一直有个疑问, 11111010b 既可以指-6也可以指250,到底取哪一个。其实由数据类型决定,此类型是char类型,那么11111010=-6.

1.2.2 unsigned和signed

在整形类型前加上unsigned使得它们成为无符号的整数。其中内部的二进制表达没变,变得是如何看待他们,如何输出。

比如;11111111,对于char,是-1;对于unsigned char,是255

unsigned的初衷是为了左春二进制运算,主要为了移位。

1.2.3整数越界

整数是以纯二进制方式进行计算的,所以:(还是以char类型为例)

 

以图的方式更好理解:顺时针+1,同理逆时针-1

1.2.4 整数的输入输出

还有很多,建议看参考书籍

1.3 浮点数

类型字长范围有效数字scanfprintf
float32 7%f%f,%e
double64 15%lf%f,%e

float与double最大的区别在于:double在0附近的精度更大;

1.3.1 科学计数法

1.3.2 输出精度

在%和f之间加_上.n可以指定输出小数点后几位,这样的输出是做4舍5入的

1.3.3 浮点数的内部表达

1.4 字符

1.5类型转换

。。。。。。。。。

之后再整理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值