




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.3常量与变量对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。它们可与数据类型结合起来分类。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义后使用。2.3.1常量1、整型常量——整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制三种。(1)十进制整数是由不以0开头的0~9的数字组成的数据。(2)八进制整数是由以0开头的0~7的数字组成的数据。(3)十六进制整数是由以0x或0X开头的0~9的数字及A~F的字母组成的数据。2、实型常量——实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式:十进制小数形式、指数形式。(1)十进制数形式:由数码0~9和小数点组成。(2)指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。2.3.1常量1、整型常量C语言整型常量一般有十进制、八进制和十六进制三种表达形式:(1)十进制整数的表示和数学上的表示相同,由数字0~9组成。如:0、10、365、-12等。(2)八进制整数的表示以0开头,由数字0~7组成。如:010、0365、-012、017等。(3)十六进制整数的表示以0x或0X开头,由数字0~9、a~z或A~Z组成。如:0x11、0Xffff、0xa5、-0XAC等。
C语言规定,凡是在整型数后加小写字母l或大写字母L作为长整数处理;凡是在整型数后加后缀“U”或者“u”,表示该数为无符号整型。2、实型常量在C语言中,实型常量只能用十进制形式表示,不能用八进制数和十六进制数表示。实型常量的两种表现形式:小数形式和指数形式,或者叫做小数点式和字母E(或e)式。(1)小数点式:①有且仅有一个小数点②小数点的左边和右边可以有一边没有数据,但不能同时没有数据合法的表示形式:3.14、0.16、10.、0.0、.5、-6.08不合法的表示形式:3.5.6、1*345
(2)字母E(或e)式:分为小数部分和指数部分分别存放。
①指数形式表示实数时必须有尾数部分和指数部分②有且仅有一个字母E(或e)③尾数部分既可以用小数表示也可以用整数表示④指数部分只能是整数而不能是实数合法的表示形式:1e5、1.2E+4、3.0e-2、.12e6、23e5不合法的表示形式:e3、12.-e、2.5e可以使用后缀F或f表示单精度(float)类型,使用后缀L或l表示长双精度(longdouble)类型。默认状态下,实型常量被识别为双精度(double)类型。比如123.56是double类型,123.56f是float类型,123.56L是longdouble类型。3、字符型常量用一对单引号(‘’)括起来的一个字符是字符型常量。值得注意的是,一对单引号只是字符与其它部分的分隔符,或者说是字符常量的定界符,不是字符常量的一部分,当输出一个字符常量时不输出此单引号。例如:‘a’,‘A’,‘#’等是字符型常量,而‘ABC’不是字符型常量。
字符型常量的两种表现形式:(1)由一对单引号括起来的单个字符:
例如:‘A’、‘#’‘x’、‘$’使用字符常量时要注意数字字符和数字的区别。
例如,‘5’表示字符5,而不是数值5,字符5的ASCII码值是53。
(2)转义字符:转义字符是一种特殊的字符常量,由一对单引号括起来,以反斜杠“\”开头,后面跟若干字符。反斜杠之后的字符被转换为另外的含义,不同于字符原有的意义,故称为“转义字符”。转义字符通常用来表示C语言中的一些特殊的字符(例如控制字符)。常用转义字符列表转义字符转义字符的意义ASCII代码\n回车换行10\t横向跳到下一制表位置9\b退格8\r回车13\f走纸换页12\\反斜线符"\"92\'单引号符39\”双引号符34\a鸣铃7\ddd1~3位八进制数所代表的字符\101表示‘A’\xhh1~2位十六进制数所代表的字符\XOA表示换行
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如'\101'
表示字母'A','\102'
表示字母'B','\134'表示反斜线,'\x0A'
表示换行等。【例2-1】转义字符的使用。#include<stdio.h>voidmain(){printf(“abc\tde\rf\n”);printf(“hijk\tL\bM\n”);}程序运行结果为:fabcdehijkM注意转义字符’\t’,’\r’,’\n’,’\b’的含义分析程序,理解结果4、字符串常量
用一对双引号(“”)括起来的零个或多个字符序列称为字符串常量。字符串常量以双引号为定界符,但双引号并不属于字符串。
例如,“Hello”是字符串常量,但‘AB’既不是字符常量也不是字符串常量。字符串常量在机器中存储时,系统会自动在字符串的末尾添加一个转义字符‘\0’作为字符串的结束标志。字符串"Cprogram"在内存中所占的字节为10。Cprogram\0
字符串常量和字符常量是不同的量。它们之间主要有以下区别:(1)字符常量由单引号括起来,字符串常量由双引号括起来。(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有相应的字符串变量,可以用一个字符数组来存放一个字符串常量。(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符'\0'(ASCII码为0),这是字符串结束的标志。5、符号常量——用一个标识符来表示一个常量,称之为符号常量,符号常量在使用之前必须先定义.
定义格式:#define标识符常量其中#define命令把该标识符定义为其后的常量值。一经定义,其值不能被改变,以后在程序中所有出现该标识符的地方均代之以该常量值,。
例如:#definePI3.14159#definePRICE20符号常量的使用方法:①#define不是C语句,该行的末尾没有分号,它是一个“预编译命令”,预处理命令都以"#"开头。②符号常量的标识符习惯上用大写字母表示,变量标识符用小写字母表示,以示区别。③不要把符号常量与变量混淆,符号常量只是一个符号,不占存储空间,它的值在其作用域内不能被改变,也不能再被赋值。符号常量只是简单地进行字符置换,不论置换的字符是否有含义都要进行置换。④使用符号常量的好处是:含义清楚、能做到“一改全改”。【例2-2】符号常量的使用示例。#definePI3.1415926#defineR3.0#include<stdio.h>voidmain(){float
c,s;c=2*PI*R;s=PI*R*R;printf(“circumference=%f\n”,c);printf(“area=%f\n”,s);}分析:命令行#definePI3.1415926的作用是在预编译时将程序中凡出现PI的地方全部用3.1415926代替。符号常量的优点是使程序容易理解,可读性好且容易维护。2.3.2变量1、变量的概念变量是指C语言程序中合法的标识符,是用来存取某种类型值的存储单元,其中存储的值可以在程序执行的过程中被改变。
定义变量的一般形式为:
<变量类型说明符><变量列表>[=<初值>];其中:
(1)变量类型说明符确定了变量的取值范围以及对变量所能进行的操作规范。
(2)变量列表由一个或多个变量名组成。当要定义多个变量时,各变量之间用逗号分隔。
(3)初值是可选项,变量可以在定义的同时赋初值,也可以先定义,在后续程序中赋初值。2、变量的定义
C语言中,必须对所有的变量“先定义,后使用”。如inta;表示定义了一个变量,其变量名为a,变量名代表内存中的存储单元,在对程序进行编译连接时,由系统给每个变量分配存储单元,定义后可给变量赋值。如a=3;变量a,yinta;longy;a=3;y=34568;2000200120022005ay内存内存地址200320043例如:inta,b,c;
//表示定义了a,b,c3个整型变量,其初值是不确定的inta=1,b=2,c=3;
//表示定义了a,b,c3个整型变量并分别赋初值1,2,3floata,b=3.5;
//表示定义了a,b2个单精度型变量,其中只有b赋初值3.5charx,y=‘A’;
//表示定义了x,y2个字符型变量,其中只有变量y赋初值'A'C语言对变量强制定义的目的是:(1)因为只有在定义了变量的类型后,系统才知道如何给变量分配存储空间。如指定变量a为整型,在编译时就能为其分配相应的4个字节的存储空间,并按整数方式存储数据。(2)指定一个变量属于一个特定的类型,在编译时,能根据该类型进行运算是否合法的检查。例如:
floata=4.5,b=8.9;intc;c=a%b;//错误求余运算要求两个操作数都是整数,运算结果也要求是整数,而现在a,b均为实数,在编译时,系统会给出有关的出错信息。变量的初始化与赋值
C语言允许在声明变量时给该变量赋一个初值,这种给变量设置初值的工作称为初始化。变量进行初始化:
在定义变量的同时给变量一个初始值;例:intx=10;
变量的赋值:使用赋值号“=”赋初值。例:floaty;y=10.25;3、变量的分类 如果把变量与数据类型结合起来分类,变量可分为整型变量、浮点变量(实型变量)、字符变量。(1)整型变量系统根据声明变量时所指定的数据类型为变量分配存储空间,使用整型变量时要注意不能超过变量的取值范围。如果定义了一个短整型变量i:shorti=10;则i在内存中的二进制表示如下:0000000000001010C语言中的数值在计算机中是以补码形式表示的:①正数的补码和原码相同;②负数的补码:将该数的绝对值的二进制形式按位取反再加1。
例2-3:整型数据的溢出。#include<stdio.h>voidmain(){shortx=32767,y;y=x+1;printf("x=%d,y=%d\n",x,y);}y=-32768的原因是数据溢出,超过整型数据的范围(2)实型变量
实型变量分为个单精度型和双精度型变量,两者之间的区别在于后者的有效位数比前者的多、精度更高。实型数据一般占4个字节(32位)内存空间,按指数形式存储,分为小数部分(尾数)和指数部分(阶码)。对于一个无穷的小数,由于存储空间有限,计算机无法表示出小数点后面所有的值,只能表示实际值的近似值。因此,使用实型变量时,单精度实型变量的有效位数是7位,双精度是16位,但在vc6.0中小数位取6位其余作四舍五入处理。
实型数据一般占4个字节(32位)内存空间,按指数形式存储,分为小数部分(尾数)和指数部分(阶码)。实数3.14159在内存中的存放形式:+0.3141591
数符小数部分指数部分因此,使用实型变量时,可能会有误差。实型变量的有效位数越多,与实际值就会越接近,精度就越高。
例2-4:对比float型数据和double型数据。#include<stdio.h>voidmain(){floatx=5555.55555;doubley=5555.555555555555;
printf("x=%f\n",x);printf("y=%lf\n",y);}单精度的有效位数是7位,包括整数部分与小数位而双精度保留6位有效小数程序运行结果为:x=5555.555664y=5555.555556【例2-5】实型数据的舍入误差。#include<stdio.h>voidmain(){floata=123456789.0,b;b=a+1;printf("a=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 什么的目光中考语文作文
- 渔业机械创新设计与实践考核试卷
- 开在记忆深处的花中考语文作文
- 污水高级氧化技术中催化剂的制备与性能考核试卷
- 难忘的眼神初三语文作文600字
- 竹材加工的安全生产管理考核试卷
- 种子种苗培育对生态环境的影响考核试卷
- 纺织企业资本与融资运作考核试卷
- 上海高三语文作文技巧
- 管道工程水文分析考核试卷
- 钻机培训课件
- 2025劳动合同书(版)
- 043-整体式汽车驱动桥壳体振动噪声优化数值研究
- 新建监控系统项目立项申请报告
- 近五年(2018-2022年)数学高考真题分类汇编10:统计概率(含答案+解析)
- T-GXAS 530-2023 桑螟防治技术规程
- 《智能建造技术与装备》 课件 第一章 绪论
- 国开2024年秋中国建筑史(本)终考任务答案
- 中华人民共和国农村集体经济组织法
- 湖北公务员面试模拟28
- 华为战略解码解读
评论
0/150
提交评论