c语言字母是什么数据类型的,2.C语言数据类型

数据类型

作用:编译器预算对象(变量)分配的内存大小

4e3bc8633753

Snip20190214_4.png

变量

在程序运行过程中,其值可以改变

变量在使用前必须先定义,定义变量前必须有相应的数据类型

标识符不能是关键字

标识符只能由字母、数字、下划线组成

第一个字符必须为字母或下划线

字母区分大小写

在编译时为其分配相应的内存空间

可以通过其名字和地址访问相应内存

extern声明变量的时候内存中不会创建存储空间,只表示声明,并没有定义

当变量没有进行声明,直接定义变量时,如:int b;它既是声明也是定义,此时内存中会开辟存储空间

进制

概念:逢X进一位就是X进制

二进制

计算机中采用的进制,逢二进一,数据在计算机中主要是以补码的形式存储的

单位:

术语

含义

bit(比特)

一个二进制代表一位,一个位只能表示0或1两种状态。数据传输是习惯以“位”(bit)为单位。

Byte(字节)

一个字节为8个二进制,称为8位,计算机中存储的最小单位是字节。数据存储是习惯以“字节”(Byte)为单位。

WORD(双字节)

2个字节,16位

DWORD

两个WORD,4个字节,32位

1b

1bit,1位

1B

1Byte,1字节,8位

1k,1K

1024

1M(1兆)

1024k, 1024*1024

1G

1024M

1T

1024G

1Kb(千位)

1024bit,1024位

1KB(千字节)

1024Byte,1024字节

1Mb(兆位)

1024Kb = 1024 * 1024bit

1MB(兆字节)

1024KB = 1024 * 1024Byte

八进制

缩写为OCT或O,逢八进一,八进制的数和二进制数可以按位对应(八进制一位对应二进制三位,取三合一),表示八进制时以数字0开头

4e3bc8633753

Snip20190214_7.png

十六进制

由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9,A-F对应10-15,十六进制的数和二进制数可以按位对应(十六进制一位对应二进制四位,取四合一),表示十六进制时以0x开头

4e3bc8633753

Snip20190214_10.png

进制间转换

十进制整数转二进制:十进制数除以2,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果

eg:

4e3bc8633753

Snip20190214_5.png

十进制小数转二进制:小数部分和2相乘,取整数,不足1取0,每次相乘都是小数部分,顺序看取整后的数就是转化后的结果

注意点:

乘的时候只乘小数部分

如十进制为3为小数,则二进制也为3为即可

eg:

4e3bc8633753

Snip20190214_13.png

十进制转八进制:十进制数除以8,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果

eg:

4e3bc8633753

Snip20190214_8.png

十进制转十六进制:十进制数除以16,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果

eg:

4e3bc8633753

Snip20190214_12.png

内存数值存储方式

在计算机系统中,数值一律用补码来存储

原因如下:

统一了零的编码

将符号位和其它位统一处理

将减法运算转变为加法运算

原码

概念:原始的二进制码

最高位做为符号位,0表示正,为1表示负

其它数值部分就是数值本身绝对值的二进制数

eg:

十进制数

原码

+14

0000 1110

-14

1000 1110

+0

0000 0000

-0

1000 0000

反码

特点:

对于正数,反码与原码相同

对于负数,符号位不变(即最高位不变),其它部分取反(1变0,0变1)

eg:

十进制数

反码

+14

0000 1110

-14

1111 0001

+0

0000 0000

-0

1111 1111

补码

计算机系统中,数值一律用补码来存储

特点:

对于正数,原码、反码、补码相同

对于负数,其补码为它的反码加1

补码符号位不动,其他位求反,最后整个数加1,得到原码

十进制数

补码

+14

0000 1110

-14

1111 0010

+0

0000 0000

-0

0000 0000

整型:int

输出

打印格式

含义

%d

输出一个有符号的10进制int类型

%o(字母o)

输出8进制的int类型

%x

输出16进制的int类型,字母以小写输出

%X

输出16进制的int类型,字母以大写写输出

%u

输出一个10进制的无符号数

void test1(){

int a = 123; //定义变量a,以10进制方式赋值为123

int b = 0567; //定义变量b,以8进制方式赋值为0567

int c = 0xabc; //定义变量c,以16进制方式赋值为0xabc

printf("int整型所占的字节数:%d\n", sizeof(int)); //4个字节,一个字节占8位,即共能放32位

printf("a = %d\n", a);

printf("8进制:b = %o\n", b);

printf("10进制:b = %d\n", b);

printf("16进制:c = %x\n", c);

printf("16进制:c = %X\n", c);

printf("10进制:c = %d\n", c);

unsigned int d = 0xffffffff; //定义无符号int变量d,以16进制方式赋值

printf("有符号方式打印:d = %d\n", d);

printf("无符号方式打印:d = %u\n", d);

}

其余类型

数据类型

占用空间

short(短整型)

2字节

int(整型)

4字节

long(长整形)

Windows为4字节,Linux为4字节(32位),8字节(64位)

long long(长长整形)

8字节

void test2(){

//环境:Mac64位电脑

printf("int整型所占的字节数:%d\n", sizeof(int)); //4个字节,一个字节占8位,即共能放32位

printf("short所占的字节数:%d\n", sizeof(short)); //2个字节,一个字节占8位,即共能放16位

printf("long所占的字节数:%d\n", sizeof(long)); //8个字节,一个字节占8位,即共能放64位

printf("long long所占的字节数:%d\n", sizeof(long long)); //8个字节,一个字节占8位,即共能放64位

}

整型常量

所需类型

10

代表int类型

10l, 10L

代表long类型

10ll, 10LL

代表long long类型

10u, 10U

代表unsigned int类型

10ul, 10UL

代表unsigned long类型

10ull, 10ULL

代表unsigned long long类型

打印格式

含义

%hd

输出short类型

%d

输出int类型

%l

输出long类型

%ll

输出long long类型

%hu

输出unsigned short类型

%u

输出unsigned int类型

%lu

输出unsigned long类型

%llu

输出unsigned long long类型

有符号数

最高位为符号位,0代表正数,1代表负数

无符号数

最高位不是符号位,而就是数的一部分,无符号数不可能是负数

数据类型

占用空间

取值范围

short

2字节

-32768 到 32767 (-215 ~ 215-1)

int

4字节

-2147483648 到 2147483647 (-231 ~ 231-1)

long

4字节

-2147483648 到 2147483647 (-231 ~ 231-1)

unsigned short

2字节

0 到 65535 (0 ~ 216-1)

unsigned int

4字节

0 到 4294967295 (0 ~ 232-1)

unsigned long

4字节

0 到 4294967295 (0 ~ 232-1)

字符型:char

概念

​ 用一对英文半角格式的单引号(' ')把字符括起来,本质就是一个1字节大小的整型

void test3(){

char ch = 'a';

printf("sizeof(ch) = %u\n", sizeof(ch));// 1

printf("ch = %c\n", ch); //打印字符 ‘a’ ASCII的值

printf("ch = %d\n", ch); //打印97

char A = 'A';

char a = 'a';

printf("a = %d\n", a); //97

printf("A = %d\n", A); //65

printf("A = %c\n", 'a' - 32); //小写a转大写A

printf("a = %c\n", 'A' + 32); //大写A转小写a

ch = ' ';

printf("空字符:%d\n", ch); //空字符ASCII的值为32

printf("A = %c\n", 'a' - ' '); //小写a转大写A

printf("a = %c\n", 'A' + ' '); //大写A转小写a

}

ASCII对照表

ASCII****值

控制字符

ASCII****值

字符

ASCII****值

字符

ASCII****值

字符

0

NUT

32

(space)

64

@

96

1

SOH

33

!

65

A

97

a

2

STX

34

"

66

B

98

b

3

ETX

35

#

67

C

99

c

4

EOT

36

$

68

D

100

d

5

ENQ

37

%

69

E

101

e

6

ACK

38

&

70

F

102

f

7

BEL

39

,

71

G

103

g

8

BS

40

(

72

H

104

h

9

HT

41

)

73

I

105

i

10

LF

42

*

74

J

106

j

11

VT

43

+

75

K

107

k

12

FF

44

,

76

L

108

l

13

CR

45

-

77

M

109

m

14

SO

46

.

78

N

110

n

15

SI

47

/

79

O

111

o

16

DLE

48

0

80

P

112

p

17

DCI

49

1

81

Q

113

q

18

DC2

50

2

82

R

114

r

19

DC3

51

3

83

S

115

s

20

DC4

52

4

84

T

116

t

21

NAK

53

5

85

U

117

u

22

SYN

54

6

86

V

118

v

23

TB

55

7

87

W

119

w

24

CAN

56

8

88

X

120

x

25

EM

57

9

89

Y

121

y

26

SUB

58

:

90

Z

122

z

27

ESC

59

;

91

[

123

{

28

FS

60

<

92

/

124

|

29

GS

61

=

93

]

125

}

30

RS

62

>

94

^

126

`

31

US

63

?

95

_

127

DEL

转义字符

转义字符

含义

ASCII****码值(十进制)

\a

警报

007

\b

退格(BS) ,将当前位置移到前一列

008

\f

换页(FF),将当前位置移到下页开头

012

\n

换行(LF) ,将当前位置移到下一行开头

010

\r

回车(CR) ,将当前位置移到本行开头

013

\t

水平制表(HT) (跳到下一个TAB位置)

009

\v

垂直制表(VT)

011

\

代表一个反斜线字符""

092

'

代表一个单引号(撇号)字符

039

"

代表一个双引号字符

034

?

代表一个问号

063

\0

数字0

000

\ddd

8进制转义字符,d范围0~7

3位8进制

\xhh

16进制转义字符,h范围09,af,A~F

3位16进制

浮点型:float、double

数据类型

占用空间

有效数字范围

float

4字节

7位有效数字

double

8字节

15~16位有效数字

类型限定符

限定符

含义

extern

声明一个变量,extern声明的变量没有建立存储空间。 extern int a;

const

定义一个常量,常量的值不能修改。 const int a = 10;

volatile

防止编译器优化代码

register

定义寄存器变量,提高效率。register是建议型的指令,而不是命令型的指令,如果CPU有空闲寄存器,那么register就生效,如果没有空闲寄存器,那么register无效。

字符串格式化输出和输入

打印格式

对应数据类型

含义

%d

int

接受整数值并将它表示为有符号的十进制整数

%hd

short int

短整数

%hu

unsigned short

无符号短整数

%o

unsigned int

无符号8进制整数

%u

unsigned int

无符号10进制整数

%x,%X

unsigned int

无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF

%f

float

单精度浮点数

%lf

double

双精度浮点数

%e,%E

double

科学计数法表示的数,此处"e"的大小写代表在输出时用的"e"的大小写

%c

char

字符型。可以把输入的数字按照ASCII码相应转换为对应的字符

%s

char *

字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

%p

void *

以16进制形式输出指针

%%

%

输出一个百分号

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值