数据类型 回顾!

举报
holo.yh 发表于 2021/07/31 23:09:22 2021/07/31
【摘要】 第一节 数据类型数据结构(4种)基本类型整型实型(浮点型)字符型构造类型数组类型结构体类型共用体类型枚举类型指针类型空类型第二节 常量与变量。常量:值不能改变的量是常量。分为直接常量和符号常量。直接常量:包括整型常量、实型常量、字符型常量和字符串常量。符号常量:指的是宏定义中的#define 标识符 变量值。一个#define命令一次只能定义一个常量,若要定义多个,需使用多次#define命...

第一节 数据类型




数据结构(4种)


基本类型


整型

实型(浮点型)

字符型


构造类型


数组类型

结构体类型

共用体类型

枚举类型


指针类型




空类型




第二节 常量与变量。

常量:值不能改变的量是常量。

分为直接常量和符号常量。

直接常量:包括整型常量、实型常量、字符型常量和字符串常量。

符号常量:指的是宏定义中的#define 标识符 变量值。

一个#define命令一次只能定义一个常量,若要定义多个,需使用多次#define命令。如:


#define n 10 
#define m 5


1.整型

1.1整形数据



关键字


类型


占用字节数


取值范围


int


整型


4字节(32位)


-2^31 ~ 2^31-1 (-2147483648~2147483647)


short


短整型


2字节(16位)


-2^15 ~ 2^15-1(-32768~32767)


long


长整型


4字节(32位)


-2^31 ~ 2^31-1 (-2147483648~2147483647)


unsigned int


无符号整型


4字节(32位)


0 ~ 2^32-1(0~4294967295)


unsigned short


无符号短整型


2字节(16位)


0 ~ 2^16-1(0~65535)


unsigned long


无符号长整型


4字节(32位)


0 ~ 2^32-1(0~4294967295)


说明:

1.无符号数不能表示负数。(从unsigned的取值范围可看出),

2.无符号整数以二进制原码形式存储(无符号数在内存的最高位不是符号位)。

3.有符号整数(正数、0和负数)在内存中以二进制补码形式存储。


经我用DEV C++测试,小米64位笔记本 long在也是4字节。


	printf("%d",sizeof(long)); //4


unsigned 不能修饰 float与double

原因:https://blog.csdn.net/wordwarwordwar/article/details/84194049

1.1整形常量

十进制整形常量:0-9

八进制整形常量:以0开头:-017表八进制数-17

十六进制整形常量:以0x开头

长整形常量:以L或l结尾

无符号整型常量:以U或u结尾



整形常量种类


有效数字


举例


十进制整形常量


0~9


17 18


八进制整形常量(以0开头)


0~7


017 020


十六进制整形常量(以0X或0x开头)


0~9、A~F


0XAF 0x2D


长整形常量:(以L或l结尾)


0~9


23L 23l


无符号整型常量(以U或u结尾)


0~9


17U 18u


判断正误:

0xuu (×,最多到f,此数不属于任何进制)

018 (×,最多到7,此数不属于任何进制)

1.2整型变量


1.3进制转换

R表示任意进制。

R -> 十 : 按R展开求和

十 -> R : 除以R取余倒排。

记住R转十是乘,十转R是除.

结果该加0x加上,该加0也加上

例如:

有符号的二进制转十进制:

有符号数的第一位数代表正负,1负0正。后面的数按R展开求和。

例如:



十进制


二进制


对应10来理解进制转换






2(2^1)


10 (1个0)




10^1


10


4(2^2)


100 (2个0)




10^2


100


8(2^3)


1000 (3个0)




10^3


1000


16(2^4)


10000 (4个0)




……


……


32(2^5)


100000 (5个0)








64(2^6)


1000000 (6个0)








128 (2^7)


10000000 (7个0)










1.4原码、反码、补码、按位取反

无符号整数以二进制原码形式存储(无符号数在内存的最高位不是符号位)。

有符号整数(正数、0和负数)在内存中以二进制补码形式存储。






正数


负数


原码


将十进制转为二进制


反码


同原码


最高位(符号位)不变,数值位取反(0变1,1变0)


补码


同原码


反码+1


按位取反(~)


将补码的符号位和数值位全部取反



如,计算:~5 、~-6:


	printf("%d,%d",~5,~-6); //-6,5


2.实型

(1)float 与 double 输出时都用%f,float输入时用%f , double输入时必须用%lf(小写L,不是数字1)

(2)%f 输出时默认保留6位。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。