程序离不开数据。C语言提供两大系列的多种基本类型。两大数据类型:整数类型和浮点类型,这些数据类型是什么,常量和变量的区别。
1.1示列程序
提示 错误与警告
如果输入程序时打错(如,漏了一个分号),编译器会报告语法错误信息,然而,即使输入正确无误,编译器也可能给出一些警告,如"警告’,从double类型转换float类型可能会失去数据,错误信息表明程序有错,不能编译。
程序调整:
我们可以在程序中添加下面一行代码:
getchar();
程序的输出是否依然旧在屏幕上一闪而过? 本列, 需要调用两次getchar()函数:
getchar();
getcahr();
getcahr函数读取下一个输入字符,因此程序会等待用户输入。
1.2 变量与常量数据
在程序引导下.计算机可以做许多事情,如数值计算,名字排序,执行语言,计算彗星轨道,准本邮件,画画,要完成这些任务,程序需要使用数据,即承载信息的数字和字符。有些数据类型在程序使用之前已经预先设定好了,在整个程序的运行过程中没有变化,这些称为变量,其他数据类型在程序运行期间可能会改变或者被赋值,称为常量。
1.3 数据: 数据类型关键字
不仅变量和常量不同,不同的数据类型之间也有差异。一些数据类型表示数字,一些数据类型表示字母。
最初K&R给出的关键词 | C90标准添加关键词 |
---|---|
int | signed |
long | void |
short | |
unsigned | |
cahr | |
float | – |
double |
在C语言中,用int关键词表示基本的整数类型
位,字节和字
位,字节和字是描述计算机数据单元或存储单元的术语,这里主要指存储单元。
字节是常用计算机存储单位。
字是设计计算机时给定的自然存储单位。
1.4 整数
和数学概念是一样的,在C语言中,整数是没有小数部分的数。列如,2,-23和2341都是整数。而3.14,0.11和2.00都不是整数。
1.5 浮点点
浮点数与数学中概念差不多。2.15, 316E4, 7.00 都是浮点数。要注意一点是,在一个值后面加上一个小数点,该值就成为一个浮点数
这里关键要理解浮点数和整数的存储方式不同。计算机把浮点数分成小数部分和指数部分来表示,而且分开 存储这两部分。
我们一起看下这两种类型的实际区别。
1. 整数没有小部分,浮点数有小数部分。
2. 浮点数可以表示的范围比整数大。
3. 对于一些算术运算,浮点数损失的精度更多。
4.因为在任何区间内都存在无穷多个实数,所以计算机的浮点不能表示区间所有的值。
5.过去,浮点运算比整数运算慢。
1.6 C语言基本数据类型
1.6.1 int类型
int类型是有符号整型,即int类型的值必须是整数,可以是正整数,负整数或零。
1,声明int变量
先写上int,然后写变量名,最后加上一个分号。要声明多个变量,可以单独声明每个变量,也可以列出多个变量名,变量名之间用逗号隔离。如:
int ernsl;
int hogs, cows,gotes;
可以分别在4条声明各变量,也可以在一条声明4个变量。
变量如何得值呢? 有两种途径可以获值
cows = 112;
第2中途径是,通过函数(如,scanf())获得值。
2, 初始化变量
初始化变量就是为变量赋一个初始值。
3, int 类型变量
出现整数都是整型常量或者整型宇面量。
4, 打印 int值
可以使用printf()函数打印int类型的值。
5, 八进制和十六进制
通常,C语言都是假定整常量是十进制数。
1.7 其他整数类型
- short int类型占用的存储空间可能比int类型少,常用于较小数值 场合以节约空间。
- long int或long占用的存储空间可能比int多,适用于较大数值的场合。
- long long int或long long占用的存储空间可能比long多,适用于更大数值场合。
- unsigned int 或unsigned只用于非负值的场合。
- 在C90标准中,添加了unsigned long int或usigned long和usiged short int或unsigned short类型。
- 在任何有符号类型前面添加关键词signed,可强调使用符号类型的意图。
1, 声明其他整数类型:
long int estine;
long johns;
short int erns;
short ribs;
unsigned int s_count;
unsigned players;
unsigned long headcount;
unsigned short yesvotes;
long long ago;
2,使用多种整数类型原因
为什么说short类型"可能"比类型占用的空间少,long类型"可能"比int类型占用的空间多呢?因为C语言只规定了short占用存储空间不能的多余int,long占用的存储空间不能少于int。
3. long常量和long long常量
一般来说,程序代码中使用的数字(如,2415)都被存储为int类型
4, 打印short, long,long, long和unsigned类型
打印unsigned int类型的值,使用&u转换说明:打印long类型的值,使用%ld转换说明。
1.8 使用字符: char类型
char类型用于存储字符,但是从技术层面看,char是整数类型。
1,声明char类型变量
char类型变量的声明方式与其他类型变量方式相同:
char resopen;
char itnle,lej
创3个char类型变量:resopen, itnle,lej
2, 字符常量和初始化
如果要把一个字符量初始化为字母A,不必背下ASCII吗,用计算机语言很容易做到。通过一下初始化把字母A赋给grade:
char grade=“A”;
3, 非打印字符
1.9 _Bool类型
C99标准添加了_Bool类型,用于表示布尔值,即逻辑值true和false。
2.0 float double和long double
C语言中的浮点类型有float double和long double类型,它们与FORTRAN和Pascal中的real类型一致。
2.1 复数和虚数类型
许多科学家和工程计算机都要用到复数和虚数。
2.2 其他类型
小结:基本数据类型
关键词:
基本数据类型由11个关键词组成:int long short unsigned char float double signed _Bool _Complex和_Imaginary。
有符号整型:
有符号整数可用于表达正整数和负整数
1. int-----系统给定的基本整数类型。
2. short或short int-----最大的short类型整数小于或等于最大的int整数。C语言规定short类型至少占16位。
3. long或long int----- 该类型可表达的整数大于或等于最大的int类型整数。C语言规定long类型至少占32位
4. long long或long longint-- 该类型可表达的整数大于或等于最大long整数。long long 类型至少占64位。
一般而言,long类型占用的内存比short类型大,int类型的宽度要么和long类型相同,要么和short类型相同,列如,旧DOS系统的PC提供16位的short和int,以及32位的long;Widows 95系统提供16位的short以及32位的int和long
无符号整型:
无符号整数只能用于表示零和正整数,因此无符号整型可表达的正整数比有符号型的大。在整类型前加上关键词unsigned表明该类型是无符号整型: usignend int, usigned long, unsigned long, unsigned short。单独的unsigned相当于usigned int。
**字符类型:
可打印出来的符号(如A,&和+)都是字符。根据定义,char类型表示一个字符要占用1字节内存。出于历史原因,1字节通常是8位,但是如果要表示基本字符集,也可以是16位或更大
char-----字符类型的关键字。有些编译器使用有符号的char,而有些则使用无符号的char。
在需要时,可在char前面加上关键词signed或unsigned来指明具体使用哪一种类型
布尔类型:
布尔值表示true和false。C语言用1表示true,0表示false。
_Bool 布尔类型的关键字。布尔类型是无符号int类型,所占用的空间只能存储0或1即可
实浮点类型:
实浮点类型可表示正浮点数和负浮点数
float 系统的基本浮点类型,可精确表示至少6位有效数字
double 存储浮点数范围更大,能表示比floatl类型更多的有效数字和更大的指数。
long double 存储浮点数的范围比double更大,能表示比double更多的有效数字和更大的值数。
复数和虚数浮点数:
虚数类型是可选的类型。复数的实部和虚部类型都基本实浮点类型来构成:
float _Complex
double _Complex
long double _Complex
float _Imaginary
double _Imaginary
long double _Imaginary
小结: 如何声明简单变量
- 选择需要的类型
- 使用有效的字符给变量起一个变量名
- 按以下格式进行声明:
类型说明符 变量名;
类型说明符由一个或多个关键词组成。下面是一些示列:
int erest;
unsigned short cash;
4.可以同时声明相同类型的多个变量,用逗号分隔各变量名,如图所示:
char ch,init,ans;
5.在声明的同时还可以初始化变量:
float mass =6.0E24;