当前位置:文档之家› C语言数据类型及常量与变量

C语言数据类型及常量与变量

交换整型变量a、b的值。

比如a=10、b=11;交换之后a的值是11,b的值是10。

用两种方式实现:(1)使用第三方变量int temp;temp=a;a=b;b=temp;(2)不使用第三方变量a=b-a;b=b-a;a=b+a;一、数据1.什么是数据数据(data),说到数据在大多数人的头脑中的第一反应就是数字。

其实数字只是一种最简单的数据,是数据的一种传统和狭义的理解。

广义的理解,数据的种类很多,文字、图形、图象、声音、学生的档案记录等,这些都是数据。

比如,QQ的聊天记录啊,游戏的积分啊,登陆信息呀,这些都是数据。

2.数据的分类计算机中存储的数据可以分为两种:静态数据和动态数据。

(1).静态数据1>概念:静态数据是指一些永久性的数据,一般存储在硬盘中。

现在普通计算机的硬盘大概是500G左右,所以,硬盘一般是用来存储较大文件的。

2>存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要用户不主动删掉或者硬盘没有损坏,这些数据就永远都在。

3>静态数据举例:静态数据一般是以文件的形式存储在硬盘上的,比如文档、照片、视频等。

(2).动态数据(又称临时数据)1>概念:动态数据指在程序运行过程中,动态产生的临时数据,一般存储在内存中。

内存的存储空间一般都比较小,现在普通计算机的内存只有4G左右,所以需要谨慎使用内存,不要占用太多的内存空间。

2>存储的时长:计算机关闭之后,这些临时数据就会被清除。

3>动态数据举例:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。

当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。

(3).说明:尽管硬盘空间比内存空间大得多,但是计算机并没有将所有的应用程序加载到硬盘中去执行,主要原因是,内存的访问速度要比硬盘快很多。

3.静态数据与动态数据的相互转换(1).静态->动态例:播放视频操作存储在硬盘上的视频文件->加载到内存上的优酷视频播放器上放映(2).动态->静态互联网上的视频文件->通过加载在内存上的360安全下载软件->下载到计算机硬盘上4.数据的大小不管是静态还是动态数据,都是0和1组成的,机器上都是用二进制进行表示的。

(1).数据都有大小,静态数据就会占用硬盘的空间,动态数据就占用内存的空间(2).数据越大,包含的0和1就越多。

一个字节(Byte)由8个比特位(bit,一个0或者一个1就是一个比特位)组成1Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB 二、C语言中的数据类型三、常量1.什么是常量常量,表示一些固定的数据,是值不能被改变的量2.常量的分类(1).整型常量(int)包括了所有的整数,比如6、27、109、256、-10、0、-289等,整型常量有3种形式:1>.十进制整型常量:564,0,-23,85L(L代表长整型)等。

基本数字范围为0~9.2>.八进制整型常量:061,037L,-026,0773等(格式:0**.)。

基本数字范围为0~7.3>.十六进制整型常量:0x66,0x1101,0x,0x5AC0,-0xFF等(格式:0x***)。

基本数字范围:0~9,从10~15写为A~F或a~f(2).浮点型常量(float\double)浮点型常量分为double和float两种数据类型1>.double:双精度浮点型,其实就是小数。

比如5.43、-2.3、0.0等2>.float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位数比较少。

为了跟double区分开来,float型数据都是以f结尾的,比如5.43f、-2.3f、0.0f。

需要注意的是,绝对不能有10f这样格式的,编译器会直接报错,只有小数才允许加上f。

3>.实型常量的两种表示形式:A.小数形式(十进制为例):45.3,0.000075,-634.0B.指数形式:445.3e0,4.53e1,453.0e-1,-4.53e-64>.小数部分为0的实型常量,可以写成453.0或依照人们的日常习惯写为4535>.用小数表示时,小数点的两边必须有数,不能写成.453和453.而应该写成0.453和453.06>.用指数写法时,e(E)前必须有数字,e(E)后面的指数必须为整数(3).字符常量(char)1>.将一个数字(0~9)、英文字母(a~z、A~Z)或者其他符号(+、-、!、?等)用单撇号('')括起来,这样构成的就是字符常量。

比如'6'、'a'、'F'、'+'、'$'等。

2>.除了上述的字符常量外,C语言还有特殊的字符常量。

如转移字符常量'\n'。

其中“\”是转义意思,后面跟不同的字符表示不同的意思。

3>.一个字符如'a',如果以字符形式输出,则在屏幕上打印'a',如果以整型数据输出,则在屏幕上打印相应的ASCII码。

4>.单引号只能括住1个字符,而且不能是中文字符(因为一个中文,是占了3个字符的)下面的写法是错误的:'abc'、'123456'、'男';5>.C语言是严格区分大小写的,'a'和'A'是不同的字符常量.(4).字符串常量1>.字符串常量是用双撇号("")括起来的一个或一串字符。

比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其实printf("Hello World");语句中的"Hello World"就是字符串常量。

(4).符号常量1>.符号常量是由预处理命令“#define”定义的常量,在C语言中可用标识符代表一个常量。

2>.其一般定义格式:#define标识符常量,注意其末尾不加数字3.举例10.6(双精度)19.0f(单精度)0.0(双精度)0(整型)‘A’(字符)“男”(字符串)“mj”(字符串)294(整型)‘+’(字符)三、变量1.什么是变量变量就是值可以改变的量。

变量要有变量名,在内存中占据一定的存储单元,存储单元里存放的是该变量的值。

不同类型的变量其存储单元的大小不同,变量在使用前必须定义。

2.变量类型不同类型的变量占用不同大小的存储空间。

内存极其有限,所以要分配适当的存储空间,给相应额变量,通过数据类型定义从而约束变量所存放的空间,也为了方便运算。

(1).整型变量整型变量分为4种:基本型(int)、短整型(short int或short)、长整型(long int或long,打印long型变量时要用%ld)和无符号型(unsigned int,unsigned short,unsigned long)(2).实型变量实型变量分为单精度(float)和双精度类型(double)两种。

一般的系统中,float型数据在内存中占4个字节(32位),单精度实数提供7位有效数字;double型数据占8个字节(64位),双精度实数提供15~16位有效数字。

(3).字符变量字符变量用来存放字符常量,字符变量用关键字char定义,每个字符变量中只能存放一个字符,只占用1个字节。

其存储方法是往内储单元中存储字符对应的ASCII码。

字符数据进行算数运算,相当于对它们的ASCII码进行运算。

Int a=5;int b=’*’;Printf(“%ld,%ld”,sizeof(int),sizeof(a))->4,4Printf(“%ld,%ld”,sizeof(char),sizeof(‘A’))->1,4Printf(“%d,%c”,b,b)->42,*Char并不是字符变量,仍然是整型,其占一个字节,同样也有unsined char一个char可以装127,ASCII码值也只有127‘A’是一个4字节数字(默认4字节的int型):00000000000000000000000001000001 3.变量的定义(1).一般格式变量类型变量名;比如int num;4.说明(1).变量名属于标识符(2).任何变量在使用之前,必须先进行定义。

(3).定义变量的目的是:在内存中分配一块存储空间给变量,方便以后存储数据。

(4).如果定义了多个变量,就会为这多个变量分别分配不同的存储空间。

4.赋值往变量里面存点东西,就是赋值。

赋值语句后带个分号;(1).格式例:i=10;注意:这里的等号=,并不是数学中的“相等”,而是C语言中的赋值运算符,作用是将右边的常量10赋值给左边的变量i(2).说明:1>.定义的同时为变量赋值,称为“初始化”。

如:int a=10;2>.先定义,后赋值,只能称为赋值,不是初始化。

如:int a;a=10;3>.可以修改变量的值,即多次赋值。

每次赋值都会覆盖原来的值i=10;i=20;变量i最后的值是205.输出:(1).使用printf输出一个\多个变量的值int a=10,c=11;printf("a=%d,c=%d",a,c);(2).没有初始化时不要拿来使用(下面的写法是不建议的)int score;printf("score=%d",score);(错误)6.简单的加减操作int a=10+20;7.变量之间值的传递(1).可以将一个变量的值赋值给另一个变量int a=10;int b=a;(2).连续赋值a=b=10;7.常见错误(1).变量名相同int a=10;int a=12;(2).变量的作用域,即变量的作用范围,从定义变量那行开始,一直到函数结束为止。

(3).变量的创建和释放过程四、类型的自动转换和强制转换1.类型的自动转换(1).当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算,这就是类型的自动转换。

(2).转换优先级为:char<int<float<double,即左边级别“低”的类型向右边转换。

(3).在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换。

(4).当右边的类型高于左边的类型时,即将一个长字节的数存入短空间时,则在转换时对右边的数据进行截取,从最低位开始存,只存短字节长度,多余的高位就不要了。

相关主题