C语言学习(三)——数据类型
C语言数据类型
一、基本数据类型
数据类型 | 类型说明 | 字节数 | 取值范围 |
---|---|---|---|
char(signed char) | 字符 | 1 | -128~127 |
short(short int) | 短整型 | 2 | -32768~32767 |
int | 整型 | 4 | -2147438648~2147438647 |
long (long int) | 长整型 | 4 | -2147438648~2147438647 |
long long (long long int) | 8 | -9223372036854775808~9223372036854775807 | |
unsigned char | 无符号字符 | 1 | 0~255 |
unsigned short | 无符号短整型 | 2 | 0~65535 |
unsigned int | 无符号整型 | 4 | 0~4294967295 |
unsigned long | 无符号长整型 | 4 | 0~4294967295 |
unsigned long long | 8 | 0~18446744073709551615 | |
float | 单精度浮点型(实数) | 4 | ±3.4E38(精确到6位小数) |
double | 双精度浮点型 | 8 | ±1.7E308(精确到15位小数) |
long double | 长双精度浮点型 | 12 | ±1.19E4932(精确到18位小数) |
不同编译系统中的变量所占的字节不一定相同,用C语言提供的计算类型字节数的运算符——sizeof()运算符可获知某种数据类型在内存中所占的字节数。
#include<stdio.h>
int main(void)
{
printf("Data type Number of bytes\n");
printf("------------- --------------------\n");
printf("char %d\n",sizeof(char));
printf("int %d\n",sizeof(int));
printf("short %d\n",sizeof(short));
printf("long %d\n",sizeof(long));
printf("float %d\n",sizeof(float));
printf("double %d\n",sizeof(double));
printf("long double %d\n",sizeof(long double));
return 0;
}
这个程序在Windows系统中用Code::Blocks编译得到的运行结果如下:
在计算机内存中,计算机处理的最小单元就是位(bit),8位构成1字节。
简单计算整型数据类型的取值范围:
有符号整型:最小值:-2∧(8*(sizeof(类型))-1),最大值:2∧(8*(sizeof(类型))-1)-1
无符号整型:最小值:-2∧(8*(sizeof(类型))),最大值:2∧(8*(sizeof(类型)))-1
二、常量和变量
1、常量(Constant)是在程序使用之前预先设定好的,在整个程序的运行中保持类型和值都不变的数据。按照类型划分为:整形常量、实型常量、字符常量、字符串常量、枚举常量。
(1)整型常量
①表现形式:
十进制 | 由数字0~9组成,数字前可以带正负号。 |
八进制 | 由数字0开头,后面跟0~7的数字序列组成。 |
十六进制 | 由数字0加字母x(大小写均可)开头,后跟0~9,a~f(大小写均可)的数字序列组成。 |
②长整型常量由常量值后跟L或l来表示,无符号整型常量由常量值后跟U或u来表示,无符号长整型常量由常量值后跟LU、Lu、lU或lu来表示。
(2)实型常量(实数、浮点数)
①表现形式:
十进制小数:.98等价于0.98,18.等价于18.0
指数形式:C语言中以e或E来表示10为底的指数。e的左边是数值部分(有效数字),可以表示成整数或小数形式,不能省略;e的右边指数部分必须是整数形式。
②实型常量隐含按双精度型(double)处理,单精度实型常量由常量值后跟F或f来表示,长双精度(long double)实型常量由常量值后跟L或l来表示
(3)字符常量
C语言中由单引号括起来的一个字符,如'a'、'2'等
特殊形式的字符常量——转义序列(Escape Sequence)
字符 | 含义 | 字符 | 含义 |
---|---|---|---|
'\n' | 换行(Newline) | '\a' | 响铃报警(Alert or Bell) |
'\r' | 回车(但不换行)(Carriage Return) | '\"' | 一个双引号(Double Quotation Mark) |
'\0' | 空字符,通常用作字符串结束标志(Null) | '\'' | 单引号(Single Quotation Mark) |
'\t' | 水平制表(Horizontal Tabulation) | '\\' | 一个反斜线(Backslash) |
'\v' | 垂直制表(Vertical Tabulation) | '\?' | 问号(Question Mark) |
'\b' | 退格(Backspace) | '\ddd' | 1~3位八进制ASCII码值所代表的字符 |
'\f' | 走纸换页(Form Feed) | '\xhh' | 1~2位十六进制ASCII码值所代表的字符 |
(4)字符串常量
字符常量是由一对双引号括起来的一个字符序列,如:"qwer","a","123"等等。
为便于C程序判断字符串是否结束,系统对每个用双引号括起来的字符串常量都添加一个字符串结束标志——ASCII码值为0的空操作符'\0'。它不引起任何控制动作,也不显示。
(5)宏常量(符号常量)
宏常量,也称符号常量,是指用一个标识符号代表的一个常量,这时该标识符与此常量是等价的。
定义符号常量:
①使用宏定义编译指令#define,形式为: #define 标识符 字面常量。
注意:#define语句不以分号结尾,如果在行末尾加分号,则会连同分号一起进行替换。宏常量名一般采用大写字母表示。
②使用关键字const,const是一个修饰符,可用于任何变量声明中。被声明为const的变量在程序执行期间不能被修改,const常量只能在定义时赋初值,不能在程序中改变其值。如:const PI 3.1415926;
(6)枚举(enumeration)常量
枚举数据类型描述的是一组整型值的集合,可用关键字enum来定义这种类型。
如:enum Weekday {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};
名称Weekday跟在关键字enum后面,这个名称被称为枚举标记,枚举标记也可以省略不写。包含在花括号内的标识符均为整型常量,称为枚举常量(或枚举器)。除非特别指定,否则这组常量的第一个常量的值为0,第二个常量值为1,以后依次递增1。
C语言允许在枚举类型定义时,明确地设置每一个枚举常量的值,如:
enum response{no = -1,yes = 1,none = 0};
可以声明response类型的一个新变量,enum response answer;变量answer可被赋予no,yes,none这三种值的任何一种。也可直接初始化,enum response answer = yes;
也可以在定义枚举类型时,声明该类型的变量并初始化变量:
enum Weekda{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}today,tomorrow;
enum Weekday {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}today=Monday,tomorrow=Tuesday;
枚举标记后面的变量表中的每个标识符都代表一个整型常数,这些标识符只是一个整型常数的名字,不是字符串,因此它们可以用于使用整型常数值的任何场合,但不能将其作为字符串直接输入和输出。
2、变量(Variable)是在程序中可以改变、可以赋值的量。
(1)①在C语言中,变量必须遵循“先定义,后使用”的原则。变量定义语句的形式:(定义多个相同类型的变量时,它们之间需用逗号分隔)
类型关键字 变量名1,变量2,······;
②变量名是用户定义的标识符,用于标识内存中一个具体的存储单元,在这个存储单元中存放的数据称为变量的值。通常,定义但未赋初值的变量的值是随机值(静态变量和全局变量除外)。
初始化:类型关键字 变量名1 = 常量1(,变量名2 = 常量2,···)
(2)变量名规则:
①可包含字母,数字和下划线;
②第一个字符不能是数字;
③字母大小写有区别;
④关键字不能用作变量名。
(3)变量名风格:
①通常,变量名用小写字母,常量名全部用大写字母;
②使用有描述性、有意义的变量名;
③使用下划线将变量名的单词分开 ,如:interest_rate;
④驼峰表示法:将每个单词的第一个字母大写,如:interestRate;
⑤在变量名中体现其类型,如:i_smart,一眼能看出是int类型的变量。
上一篇: Python中字典的使用
下一篇: C语言中typedef的用法