C语言程序设计-[2] 数据类型、常量和变量

1、数据类型

C语言支持的数据类型如下:

2、常量

常量就是不同数据类型下的值。这里主要讲整型、实型和字符型常量。

1)整型常量:用十进制、八进制和十六进制三种形式表示。

1)实型常量:由整数部分和小数部分组成的,只有十进制方式。

3)符号常量:用#define 宏定义(编译预处理命令),指定用一个符号名称(标识符)代表一个常量,符号名称就是符号常量。

4)字符型常量(包括普通字符常量和转义字符常量):

——普通字符常量:用一对单引号括起来的一个普通字符。

如: 'a' 、 'A' 、 '3' 、'?'等。

——转义字符常量:以反斜杠符(\)开头,后跟字符的ASCII码值的字符序列。

常用转义字符常量如下:

5)字符型常量(即字符串常量):用一对双引号括起来的字符序列。[注意:双引号括起来的字符序列可以包括普通字符和转义字符。此外,还要注意字符和字符串的存储空间区别,并举例说明。]

字符串常量后面多了一个'\0'字符。

3、变量

变量定义:其基本要素包括变量名、类型和值。

上述【...】是可以省略的部分。

变量定义示例如下:

int main()
{
	int i,j;  //定义两个整型变量,只要没有加unsigned,都是指有符号的 
	float f;  //定义一个单精度实型变量 
	double d;  //定义一个单精度实型变量
	char c;  //定义一个双精度实型变量
	short s;  //定义一个短整型变量
	long l;   //定义一个长整型变量
	unsigned u;   //定义一个无符号整型变量
	return 0;
}

4、正负数存储

对于signed,上述数据类型的存储空间首位为符号位,0表示正,1表示负。此外,负数是以补码存储的。

例如:+1的int存储为1的原码:

00000000 00000001

-1的int存储为-1的补码:

——首先,-1的原码为:10000000 00000001;

——然后,-1的反码为:11111111 11111110; 【注:针对-1的原码,反转其符号位之外的所有位得到】

——最后,-1的补码为:11111111 11111110 + 00000000 00000001 = 11111111 11111111。【注:在-1的反码基础上+1,得到-1的补码】

5、进制转换

以二进制为纽带可以简化进制转换过程:

(1)二进制——>十进制

(2)十进制——>二进制

小数点左边除2原则:

55/2 = 27 余 1

27/2 = 13 余 1

13/2 = 6   余 1

6/2 = 3     余 0

3/2 = 1     余 1

1/2 = 0     余 1

直至0为止,将得到的余数进行倒排,得到110111。

小数点右边乘2原则:

0.25*2 = 0.5    取走小数点左边整数0,还剩0.5

0.5*2 = 1.0     取走小数点左边整数1,还剩0.0

0.0*2 =0.0  结束,将得到的整数进行顺排,得到01

因此,得到的二进制数为(110111.01)B。

(3)二进制——>八进制

由于八进制需要3位来表示,具体如下:

000——0

001——1

010——2

011——3

100——4

101——5

110——6

111——7

因此,可以对二进制首先进行3位补齐【用0来补】,然后再转换为八进制数。

如上(110111.01)B,小数点前面向左补齐,小数点后面向右补齐,得到(110111.010)B。

这样(110111.010)B的八进制表示为:(67.2)O。

(4)八进制——>二进制

也就是“二进制——>八进制”的逆过程:

将(67.2)O中的八进制位转换成相应的二进制位即可得到:(110111.010)B,然后删除无意义的0得到:(110111.01)B。

(5)二进制——>十六进制

由于十六进制需要4位来表示,具体如下:

0000——0

0001——1

0010——2

0011——3

0100——4

0101——5

0110——6

0111——7

1000——8

1001——9

1010——A,即10

1011——B,即11

1100——C,即12

1101——D,即13

1110——E,即14

1111——F,即15

因此,可以对二进制首先进行4位补齐【用0来补】,然后再转换为十六进制数。

如上(110111.01)B,小数点前面向左补齐,小数点后面向右补齐,得到(00110111.0100)B。

这样(00110111.0100)B的八进制表示为:(37.4)H。

(6)十六进制——>二进制

也就是“二进制——>十六进制”的逆过程:

将(37.4)H中的十六进制位转换成相应的二进制位即可得到:(00110111.0100)B,然后删除无意义的0得到:(110111.01)B。

(7)十进制、八进制和十六进制之间转换

可以借助二进制来实现,即上述(1)~(6)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值