0x03-数据和C

数据和C

数据:数据类型和关键字

c语言的基本数据类型和关键字

K&C给出了7个于类型相关的关键字。C90标准添加了2个关键字,C99标准又添加了3个关键字

最初K&C给出的关键字 C90标准添加的关键字 C99标准添加的关键字
int signed _Bool
long void _Complex
short _Imaginary
unsigned
char
float
double

在C语言中:

int关键字:表示基本的整数类型。

long、short、unsigned和signed关键字:用于提供基本整数类型的变式。
例如:unsigned short int 和 long long int

char关键字:用于指定字母和其他字符。(char类型也可以表示较小的整数。)
例如:#、$、%和 *

float、double和long double关键字:表示带小数点的数。

_Bool关键字:表示布尔值。(true和false)

_complex关键字*:表示复数。

 _Imaginary关键字:表示虚数。

通过这些关键字创建的数据类型,按计算机的存储方式可分为两大基本类型:整数类型和浮点数类型。

整数和浮点数

1.整数没有小数部分,浮点数有小数部分
2.浮点数可以表示的范围比整数大。
3.对于一些算数运算(如:两个很大的数相减),浮点数损失的精度更多。

0x1-int类型

0x1.1-声明变量和初始化变量

例如:int关键字的声明和初始化

声明:int dogs;	#声明gods是一个int类型的变量,即为gods变量创建和标记存储空间同时告诉C编译器它是一个int类型的变量。
初始化:int dogs = 3;	#声明并初始化变量,为dogs创建内存空间并赋值为3

同时声明和初始化多个变量:

int dogs, pigs, apples;
int dogs = 3, pigs = 4, apples = 5;
0x1.2-int类型常量

像34、25、56等都是整型常量或整型字面量。
C语言把不含小数点和制数的数作为整数。
22和-44都是整型常量,但是22.0和2.2E1则不是。
C语言把大多数整型常量视为int类型,但是非常大的整数除外。
(此处设计long常量和long long常量,在long int类型再讨论)

0x1.3-打印int值

c语言中可以使用printf()函数打印int类型的值,%d指明了在一行中打印整数的位置。
%d称为转换说明,它指定了printf()应使用什么格式来显示一个值。
格式化字符串中的每个%d都与待打印变量列表中相应的int值匹配。
这个值可以是int类型的变量、int类型的常量或其他任何值为int类型的表达式。
要确保转换说明的数量与待打印的数量相同,编译器不会捕捉这一类型的错误,如果不匹配它就会打印一些乱七八糟的数据出来。

0x1.4-八进制和十六进制

通常,C语言都假定整型常量是十进制数。然而,许多程序员更喜欢用八进制或十六进制,因为8和16是2的幂,而10却不是。显然,八进制和十六进制计数系统在表达与计算机相关的值时很方便。
例如:十进制65535经常出现在16位机中,用十六进制表示刚好时10000.另外十六进制的每一位恰好由四位二进制数表示。

0x或0X前缀表示十六进制,例如:十进制数16表示成十六进制是0x10或0X10.
0(数字0)前缀表示8进制,例如:十进制数16表示成八进制是020.
0x1.5-显示八进制和十六进制

在c程序中使用和显示不同的进制数,需要使用不同的转换说明。如果需要显示前缀可以在转换说明中加入#号。

进制 转换说明 显示前缀
八进制 %o(字母o) %#o
十进制 %d %#d
十六进制 %x或%X %#x或%#X

0x2-其他整数类型

c语言提供3个附属关键字修饰基本整数类型:short、long和unsigned。

类型 简写或其他写法 说明 备注
short int short 占用空间可能比int类型少,常用于较小数值场合以节省空间 与int类似,short是有符号类型
long int long 占用空间可能比int多,适用于较大数值的场合 与int类似,long是有符号类型
long long int long long C99标准加入,占用的存储空间可能比long多,适用于更大数值的场合。该类型至少占64位。 与int类似,long long是有符号类型
unsigned int unsigned 只用于非负值的场合,这种类型与有符号类型表示的范围不同。 无符号类型
unsigned long int unsigned long C90添加标准
unsigned int unsigned short C90添加标准
unsigned long long int unsigned long long C99添加标准

unsigned int属于无符号类型,这种类型与有符号类型表示的范围不同。例如:16位unsigned int允许的取值范围是0-65535,而不是-32768-32767.用于表示正负号的位现在用于表示另一个二进制位,所以无符号类型可以表示更大的数。

在任何有符号类型前面添加关键字signed,可强调使用有符号类型的意图。例如,short、short int、signed short、signed short int都表示同一种类型。

0x2.1-声明其他整数类型
posted @ 2019-09-22 22:21  hare1925  阅读(402)  评论(0编辑  收藏  举报