Skip to content

数据类型

变量与常量

常量与变量(constant and variate)是数学中反映事物量的一对范畴。常量亦称“常数”,是反映事物相对静止状态的量;变量亦称“变数”,是反映事物运动变化状态的量。 在C中,变量分为局部变量全局变量。 * 局部变量:方法体内部定义的变量 * 全局变量:方法体外部定义的变量 在同一作用域内变量只能出现一次,但是局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。但建议局部变量不要与全局变量使用同一名字,容易造成混淆,使得程序可阅读性变差

整数和浮点数

整数

在C语言中,整数即是没有小数部分的数,计算机以二进制数字存储整数,例如整数7的二进制数是111因此要在8位字节中存储该数字,需要把前5位设置为0,后面三位设置为1

浮点数

浮点数是指一种既包含小数又包含整数的数据类型,白话讲,就是带小数点的数

基本数据类型

  1. int 类型 int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。其取值范围依计算机系统而异。一般而言,储存一个int要占用一个机器字长。
  2. short int 类型 占用的存储空间比int少,适合用于小数值运算以节省空间
  3. long int 类型 占用空间比int大,适用于更大数值计算场合
  4. long long int类型 比long更大数值的场合该类型至少占64位
  5. unsigned int 只适用于非负值场合,取值范围为0~65535 C语言只规定了short占用的存储空间不能多于int,long占用的存储空间不能少于int。这样规定是为了适应不同的机器。例如,过去的一台运行Windows 3的机器上,int类型和short类型都占16位,long类型占32位。后来,Windows和苹果系统都使用16位储存short类型,32位储存int类型和long类型(使用32位可以表示的整数数值超过20亿)。现在,计算机普遍使用64位处理器,为了储存64位的整数,才引入了long long类型。现在,个人计算机上最常见的设置是,long long占64位,long占32位,short占16位,int占16位或32位(依计算机的自然字长而定)。原则上,这4种类型代表4种不同的大小,但是在实际使用中,有些类型之间通常有重叠。 C 标准对基本数据类型只规定了允许的最小大小。对于 16 位机,short和 int 的最小取值范围是[−32767,32767];对于32位机,long的最小取值范围是[−2147483647,2147483647]。对于unsigned short和unsigned int,最小取值范围是[0,65535];对于unsigned long,最小取值范围是[0,4294967295]。longlong类型是为了支持64位的需求,最小取值范围是[−9223372036854775807,9223372036854775807];unsigned long long的最小取值范围是[0,18446744073709551615] 当无符号数达到它所能表达的最大值后会重新计数,而编译器并不会报错,所以需要自己注意 打印的时候 short使用%hd,long使用%ld,long long使用%lld,unsigned使用%u
  6. char类型 char类型用于存储字符,例如字母或标点符号,但是char实际上存储的是整数类型通过ascll编码来表示字符 转义字符:
  7. Bool类型 Bool类型表示逻辑值true和false,c语言用1表示true,用0表示false
  8. float、double Float 为单精度,内存中占 4 个字节,有效数位是 7 位(因为有正负,所以不是8位),在我的电脑且 VC++6.0 平台中默认显示是6位有效数字;double为 双精度,占 8 个字节,有效数位是 16 位,double 精度高,有效数字 15-16 位,float 精度低,有效数字 6-7位,但是 double 消耗的内存是 float 的两倍,运算速度比 float 慢得多,建议能用 float 保证精度的就用 float,少用 double。

Comments