第3章基本数据类型与数据运算_第1页
第3章基本数据类型与数据运算_第2页
第3章基本数据类型与数据运算_第3页
第3章基本数据类型与数据运算_第4页
第3章基本数据类型与数据运算_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础基于c语言管科系:周长红第第3 3章章 基本数据类型与数据运算基本数据类型与数据运算changhong_第第3章章 基本数据类型与数据运算基本数据类型与数据运算基本标识符基本标识符1数据类型数据类型2常量与变量常量与变量3基本数据类型转换基本数据类型转换4运算符和表达式运算符和表达式5changhong_3.1 基本标识符基本标识符#define pi 3.14159#include /编译预处理编译预处理文件包含文件包含#include void main() float r,s; r = 1.0; s=pi*pow(r,2);/计算圆面积计算圆面积s printf(半径半径r=

2、%f时,面积时,面积s=%fn,r,s); 常量名。 预处理命令名。 数据类型名。 变量名。 函数名。标识符标识符在一个c程序中,每个标识符必须是唯一的,即不能出现同一标识符代表两个实体的情况。changhong_标识数据类型:float,int,long,short,char,double,等标识流程控制:if,break,continue,while,for,goto,等标识存储类型: auto,static,register,extern。标识运算符:sizeof3.1 基本标识符基本标识符保留保留关键字关键字由系统预先定义了其具体含义,且不允许用户再作它用的标识符。changhong_

3、编译预处理命令:define,include,ifdef,等。标准库函数名:fabs,sqrt,pow,printf,等。3.1 基本标识符基本标识符预定义预定义标识符标识符具有特殊含义、固定形式的标识符。允许用户重新定义其作用。changhong_以字母或下划线开头,且后跟字母、数字、下划线的组合。不能与保留关键字重名。要区分字母的大小写。如sun、sun、sun、sun等都是不同的标识符。3.1 基本标识符基本标识符自定义自定义标识符标识符由程序员在程序中定义的合法标识符。changhong_3.1 基本标识符基本标识符练习题练习题判断下面的标识符是否是合法的自定义标识符。intinta-

4、ba_bx1 x2my.age9city -abc 变量1god(x)stuage 1. 自定义标识符要尽量做到自定义标识符要尽量做到“见名知意见名知意”。应采用。应采用英文单词。而且避免使用易混淆字符。如英文单词。而且避免使用易混淆字符。如0与与o。2. 通常符号常量名全部采用大写字母,如通常符号常量名全部采用大写字母,如pi;而其;而其它变量名、函数名等通常采用小写。它变量名、函数名等通常采用小写。changhong_构造类型基本类型3.2 数据类型数据类型为什么要有数据类型?为什么要有数据类型?123123655373.14159251.41478an“good morning”923.

5、410-31,2,3,4,5整数整数monday, tuesday, thursday“tom”,21,”software 2008-2”,”shandong qingdao”实数实数字符字符1. 符合我们认识事物的习惯。符合我们认识事物的习惯。changhong_3.2 数据类型数据类型为什么要有数据类型?为什么要有数据类型?2. 规定每个数据占用内存大小。规定每个数据占用内存大小。0000000000000001000000100000001100000100111111111. 每个内存单元只有1b。2. 存储一个字符,使用ascii码,需要_个字节。3. 存储整数123,需要_个字节。

6、存储整数32768,如果是无符号数,需要_个字节,如果是有符号数,需要_个字节。4. 存储ieee 32位格式的实数,需要_个字节,而64位格式的实数,需要_个字节。问题:变量如何确定占用多少个字节?changhong_3.2 数据类型数据类型为什么要有数据类型?为什么要有数据类型?3. 规定数据可以参与的运算。规定数据可以参与的运算。1. 一个整数和实数可以进行算术运算、比较运算;2. 一个字符可以进行比较运算;3. 一个字符串可以进行比较运算,但是不能进行算术运算;4. 一个不知道什么类型的变量是无法得知可以参与什么运算的。changhong_3.2 数据类型数据类型c语言的数据类型基本类

7、型构造类型整型指针类型实型字符型空类型枚举结构体数组共用体短整型、基本整型、长整型单精度数、双精度数changhong_3.2 数据类型数据类型表表3.1 ansi c标准中的数据类型标准中的数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无signedint16-3276832767signedshort16-3276832767signedlong32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535有float323.4e-383.4e38有doubl

8、e641.7e-3081.7e308有char8-128127无unsigned char80255说明:数据类型所占字节数随机器硬件不同而不同。/*可以用可以用sizeof()来求一个变量或者数据类型占用的字节数来求一个变量或者数据类型占用的字节数*/#include void main () printf(size of short is %d.n,sizeof(short); printf(size of int is %d.n,sizeof(int); printf(size of long is %d.n,sizeof(long); printf(size of char is %d

9、.n,sizeof(char); printf(size of float is %d.n,sizeof(float); printf(size of double is %d.n,sizeof(double); 运行结果:size of short is 2.size of int is 4.size of long is 4.size of char is 1.size of float is 4.size of double is 8.changhong_3.3 常量与变量常量与变量/*给定半径,求圆的面积给定半径,求圆的面积*/#define pi 3.14159#include /编

10、译预处理编译预处理文件包含文件包含#include void main( ) float r,s; r = 1.0; s=pi*pow(r,2);/计算圆面积计算圆面积s printf(半径半径r=%f时,面积时,面积s=%fn,r,s);常量常量常量常量是指那些在程序执行过程中其值保持不变的量。常量changhong_常量通常用于定义具有如下特点的数据:1. 在程序中保持不变的量:如圆周率、自然对数之底等;2. 在程序内部频繁使用的量。3. 需要用比较简单的方式替代的某些值。3.3 常量与变量常量与变量常量changhong_3.3 常量与变量常量与变量常量分类n符号常量:用标识符代表常量n

11、定义格式: #define 符号常量 常量n举例:n#define true 1n#define false 0n#define star *n#define my_name “zhou”n注意:符号常量的标识符也必须是合法的,而且一般采用全部大写字母表示。/*给定半径,求圆的面积给定半径,求圆的面积*/#define pi 3.14159#include #include void main( ) float r,s; r = 1.0; s=pi*pow(r,2);/计算圆面积计算圆面积s printf(半径半径r=%f时,面积时,面积s=%fn,r,s);changhong_3.3 常量与

12、变量常量与变量常量分类n符号常量:用标识符代表常量n直接常量:直接使用数值表示的常量。n整型常量n实型常量n字符常量n字符串常量changhong_3.3 常量与变量常量与变量常量&整型常量(整常数)n三种形式:n十进制整数:由数字09和正负号表示。如 123,-456,0n八进制整数:由数字0开头,后跟数字07表示。如0123,011n十六进制整数:由0 x开头,后跟09,af,af表示。 如0 x123,0xffn整型常量的类型n根据其值所在范围确定其数据类型。默认是有符号数。n在整常量后加字母l或l,认为它是long int 型常量n在整常数后加字母u或u,则理解为无符号数。问题:012

13、3 = ( )100 x123 = ( )100xff = ( )10例 30000 为int型 32768 为long int型 65536 为long int 型83291255例 12 与 12l,-1 与 -1u#define price 30#include void main() int num,total; int i,j; num=10; total=num*price; printf(total=%d,%x,%on,total,total,total); i=-1; j=-1l; printf(%d,%un,i,j); printf(%d,%d,i,j);运行结果:total

14、=300,12c,454-1,4294967295-1,-1changhong_3.3 常量与变量常量与变量常量&实型常量(实数或浮点数)n表示形式:n十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123.n指数形式:(e或或e之前必须有数字;指数必须为整数之前必须有数字;指数必须为整数)如12.3e3 ,123e2, 1.23e4 , e-5 , 1.2e-3.5 n实型常量的类型n默认double型n在实型常量后加字母f或f,认为它是float 型 changhong_3.3 常量与变量常量与变量常量n转义字符:反斜线后跟一个字符或ascii码值表示。

15、&字符常量n定义:用单引号括起来的单个普通字符或转义字符。n字符常量的值:ascii码值。n可见:一个字符相当于一个有符号整数,因此在程序中,字符常量可以参与算术运算,其值为所表示字符的ascii码值。如如 a a ? n 101转义字符转义字符含义含义nvradddtbf“xhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3位位8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2位位16进制数代表的字符进制数代表的字符a101 x41 65#include void main() printf(101 x42 cn);

16、printf(i say:how are you?n); printf(c programn); printf(turbo cn); printf(“%c,%cn”,a,a+32);运行结果:a b ci say:”how are you?”c programturbo ca,achanghong_3.3 常量与变量常量与变量常量&字符串常量n定义:用双引号(“”)括起来的字符序列n存储:每个字符串尾自动加一个 0 作为字符串结束标志。n字符常量与字符串常量不同。a a 0a“a”例 空串 “”0例: char ch; ch=“a”; 例: char ch; ch=a; h e l l o 0

17、例 字符串“hello”在内存中#include void main() char c1=a,c2; c2=98; printf(“%d,%dn”,c1,c2); 结果: 97,98#include void main() char c1=“a”,c2; c2=98; printf(“%d,%dn”,c1,c2);结果: 56,98若让c1分别等于“u”、“abc”、“a”结果不变changhong_3.3 常量与变量常量与变量常量分类n符号常量:用标识符代表常量n直接常量:直接使用数值表示的常量。n整型常量n实型常量n字符常量n字符串常量n枚举常量(见10.4)changhong_3.3 常

18、量与变量常量与变量/*给定半径,求圆的面积给定半径,求圆的面积*/#define pi 3.14159#include /编译预处理编译预处理文件包含文件包含#include void main( ) float r,s; scanf(“%f”,&r); s=pi*pow(r,2);/计算圆面积计算圆面积s printf(半径半径r=%f时,面积时,面积s=%fn,r,s);变量变量变量变量是指那些在程序执行过程中其值可以改变的量。变量changhong_3.3 常量与变量常量与变量变量变量名与变量值#define pi 3.14159#include #include void main(

19、) float r,s; scanf(“%f”,&r); s=pi*pow(r,2);/计算圆面积计算圆面积s printf(半径半径r=%f时,面积时,面积s=%fn,r,s);0000010100111001011.0 半径半径r=1.000000时,面积时,面积s=3.1415901.03.14159变量名:实质上代表的是变量在内存中的地址,即相当于给这个地址起了个名字。变量值:存放在内存中的值。changhong_3.3 常量与变量常量与变量变量变量定义变量定义的一般格式: 数据类型 变量1,变量2,变量n;已有的合法类型合法标识符例: int a,b,c; float data;变量

20、初始化:定义时赋初值。变量定义的位置:一般放在函数开头。变量的使用:先定义,后使用。例例1 int student; stadent=19; /undefined symbol statent in function main void main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);void main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义可执行语句例例2 float a,b,c;

21、c=a%b; /illegal use of floating point in function main 例: int a=2,b,c=4; float data=3.67; char ch=a; int x=1,y=1,z=1; int x=y=z=1;错误错误在编译后/运行时,对变量操作前,它(们)的初始数值是随机的;因此程序员一定要在访问前对变量进行初始化。changhong_说明:说明:在在c语言中,语言中,变量必须强制定义变量必须强制定义,其目的:,其目的:n1、凡未被事先定义的,不作为变量名。n2、每一个变量被指定为一确定的类型,在编译时就能为其分配相能为其分配相应的存储单元。

22、应的存储单元。n3、指定每一个变量为一确定的类型,在编译时据此检查该变量所在编译时据此检查该变量所进行的运算是否合法。进行的运算是否合法。 例如:如果变量 a,b 是整型类型,则可以进行求余运算: a%b 而两个实数类型的变量求余是不允许的。3.3 常量与变量常量与变量变量changhong_&整型变量n占字节数随机器不同而不同占字节数随机器不同而不同, ,一般占一个机器字一般占一个机器字nshortintlongshortintlongn可用可用sizeofsizeof( (类型标识符)测量类型标识符)测量&实型变量vfloatfloat:占占4 4字节,提供字节,提供7 7位有效数字位有效

23、数字vdoubledouble:占占8 8字节,提供字节,提供15151616位有效数字位有效数字&字符型变量v字符变量存放字符字符变量存放字符asciiascii码码, ,在内存中占一个字节在内存中占一个字节vcharchar与与intint数据间可进行算术运算数据间可进行算术运算例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.111*/例 a=a=d d; /; /* * a=68; a=68; * */ / x= x=a a+5; /+5; /* * x=65+5; x=65+5; * *

24、/ / s= s=! !+ +g g / /* * s=33+71; s=33+71; * */ /特别注意:没有字符串变量,用字符数组存放c3.3 常量与变量常量与变量变量changhong_n整型数据在内存中的存放形式int i; /*定义i为整型变量*/i=10; /*给i赋以整数10*/i:i:数值10的补码表示:-10的原码:取反:加得10的补码:10表示为二进制数表示为二进制数&整型变量ansi c标准中基本整型标准中基本整型变量在内存中占变量在内存中占2个字节个字节补码3.3 常量与变量常量与变量变量changhong_u 整型变量的分类 1、基本型基本型,以int表示。 2、短

25、整型短整型,以 short int 表示,或以 short表示。 3、长整型长整型,以 long int 表示,或以 long 表示。 4、无符号型无符号型;其中无符号型又分为无符号整型,无符号短整型和无符号长整型,分别以unsigned int ,unsigned short 和 unsigned long表示 n如果不指定unsigned或指定signed,则存储单元中最高位代表符号(0为正,1为负)。如果指定unsigned,存储单元全部二进制位用作存放数本身,而不包括符号。无符号变量只能存放不带符号整数nc语言标准没有具体规定以上各类数据所占内存字节数,各种机器处理上有所不同,一般以一

26、个机器字存放一个int型数据,而long型数据的字节数应不小于int 型,short型不大于int 型,具体可以用sizeof来求知。 3.3 常量与变量常量与变量变量changhong_01 11 11 11 11 11 11 11int型:型:最大最大:3276710 00 00 00 00 00 00 00最小最小:-3276811 11 11 11 11 11 11 11unsigned int型:型:最大最大:6553500 00 00 00 00 00 00 00最小最小:0c说明:说明:无符号型变量只能存放不带符号的整数,如无符号型变量只能存放不带符号的整数,如123,4678等

27、,而不能存放负数,如等,而不能存放负数,如-123,-3。一个无符号整型。一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。范围扩大一倍。3.3 常量与变量常量与变量变量changhong_例: #include void main( ) int a,b;/若sizeof(int)=2 a=32767; b=a+1; printf(%d,%d,a,b); 整型数据的溢出运行结果:运行结果:32767,32768?循环记数3.3 常量与变量常量与变量变量changhong_名称类型比特数有效位数值范围单精度float 32

28、6710-371038双精度double 64151610-30710308长双精度long double 128181910-4931104932&实型变量3.3 常量与变量常量与变量变量changhong_n 实型变量的定义实型变量的定义 float x,y; double z; long double temp;n实型数据的舍入误差实型数据的舍入误差 有效位以外的数字将被舍去有效位以外的数字将被舍去3.3 常量与变量常量与变量变量changhong_说明:说明: c c编译系统将实型常量作为双精度(占编译系统将实型常量作为双精度(占6464位)来处理,若在数位)来处理,若在数的后面加字母

29、的后面加字母f f或或f f,这样编译系统就会按单精度(,这样编译系统就会按单精度(3232位)处理。位)处理。 一个实型常量可以赋给一个一个实型常量可以赋给一个floatfloat型、型、doubledouble型或型或long doublelong double型变量。根据变量的类型截取实型常量中相应的有效位数字。如:型变量。根据变量的类型截取实型常量中相应的有效位数字。如: float afloat a; a=111111.111a=111111.111; 由于由于floatfloat型变量只能接收型变量只能接收7 7位有效数字,因此最后两位小数不位有效数字,因此最后两位小数不起作用。如

30、果起作用。如果a a改为改为doubledouble型,则能全部接收上述型,则能全部接收上述9 9位有效数字并存位有效数字并存储在变量储在变量a a中。中。3.3 常量与变量常量与变量变量changhong_例:#include void main( ) float a,b; a=123456.789e5; b=a+20; printf(na=%fnb=%fn,a,b); 运行结果:a=12345678848.000000 b=12345678848.000000结论:应当避免一个很大的数和一个很小的数直接相加或结论:应当避免一个很大的数和一个很小的数直接相加或相减,否则就会相减,否则就会“丢

31、失丢失”小的数。小的数。3.3 常量与变量常量与变量变量changhong_ 字符型变量用来存放字符常量,但只能存放一个字符。所有编译系统都规定一个字节来存放一个字符。&字符型变量3.3 常量与变量常量与变量变量n字符变量的定义形式字符变量的定义形式 char c1,c2; n字符变量的赋值字符变量的赋值 c1=a;c2=1;c3=b;c4=2;changhong_n字符数据在内存中的存储形式及使用方法字符数据在内存中的存储形式及使用方法 字符常量放到字符变量中是将该字符的相应ascii代码放到存贮单元中。 9749985001100001001100010110001000110010 字符

32、数据以字符数据以ascii码存储就与整数存储形式类似,因此码存储就与整数存储形式类似,因此c语言使字符型数据和整型数据之间可以通用语言使字符型数据和整型数据之间可以通用变量3.3 常量与变量常量与变量c1 c2 c3 c4 changhong_例:向字符变量赋以整数例:向字符变量赋以整数#include void main() 97的存储如下的存储如下: char c1,c2; c1=97,c2=98; printf(%c,%cn,c1,c2); printf(%d,%dn,c1,c2);01100001%c %d输出格式输出格式 a 97显示显示思考:如果上述程序改为思考:如果上述程序改为i

33、nt c1,c2,其余不变,会有什么区别,其余不变,会有什么区别?运行结果运行结果: a,b 97,98变量3.3 常量与变量常量与变量changhong_3.3 常量与变量常量与变量变量#define price 12.5void main() int num=3; float total; char ch1,ch2=d; total=num*price; ch1=ch2-a+a; printf(“total=%f,ch1=%cn”,total,ch1);宏定义变量定义运行结果:运行结果:total=37.500000, ch1=dchanghong_ 特别说明:在c语言中没有专门的字符串变

34、量,如果想将一个字符串存放在变量中,以便保存,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中的每一个元素存放一个字符。3.3 常量与变量常量与变量变量changhong_3.4 基本数据类型的转换基本数据类型的转换自动类型转换,又称为隐式转换什么情况下发生运算转换不同类型数据混合运算时赋值转换把一个值赋给与其类型不同的变量时输出转换输出时转换成指定的输出格式函数调用转换实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型doublefloatlongunsignedintchar,short低高必定转换必定转换运算对象运算对象类型不同类型不同时转换时转换

35、自动类型转换changhong_3.4 基本数据类型的转换基本数据类型的转换自动类型转换int i;float f;double d; long c;10+a+*ficd/-doubledoubledoubledoubledoubledoubledoubleintintchanghong_3.4 基本数据类型的转换基本数据类型的转换强制类型转换强制类型转换,又称为显式转换格式:(类型名)(表达式)举例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6 区别是什么?#include void main() float x; int i; x=3.6; i=(int)

36、x; printf(x=%f,i=%d,x,i);运行结果:运行结果:x=3.600000,i=3编译结果:编译结果:warning c4305: = : truncation from const double to float 精度损失问题较高类型向较低类型转换时可能发生不论是隐式转换还是显式转换,都是临时性的,并不改变表达式的原有类型。如j=(int)i;只是将i变为整数后赋值给j,但是i的数据类型在执行后依然是原来的类型。changhong_3.4 基本数据类型的转换基本数据类型的转换强制类型转换/一个有意思的例子一个有意思的例子#include void main (void) si

37、gned short positive = 32767; signed short negative = -32768; printf(%dn,positive+1); printf(%d,negative-1); 运行结果:运行结果:32768-32769提示:1.signed short的范围-3276832767。2. 常数1是int型的。/一个有意思的例子一个有意思的例子#include void main (void) short positive = 32767; short negative = -32768; short a=1; printf(%dn, positive+a)

38、; printf(%dn, negative-a); 运行结果:运行结果:32768-32769/一个有意思的例子一个有意思的例子#include void main (void) short positive = 32767; short negative = -32768; short a,b; a=positive+1; b=negative-1; printf(%dn, a); printf(%dn,b); 运行结果:运行结果:-3276832767changhong_3.5 运算符和表达式运算符和表达式算术运算符:算术运算符:+、-、*、/、%、+、-关系运算符:关系运算符:、=、!

39、=、=赋值运算符:赋值运算符:=、+=、-=、*=、/=逻辑运算符:!、逻辑运算符:!、&、|位操作运算符:位操作运算符:、&、|、条件运算符:?:条件运算符:?:逗号运算符:,逗号运算符:,求字节数运算符:求字节数运算符:sizeofc语言的运算符语言的运算符n学习运算符应注意:n运算符功能n与运算量关系n要求运算量个数n要求运算量类型n运算符优先级别:运算符的执行顺序。n结合方向:相同优先级的多个运算符的运算顺序。n结果的类型changhong_xaxfsin536 . 3)(表达式表达式常数常数变量变量函数函数运算符运算符3.5 运算符和表达式运算符和表达式 在c语言中,一个表达式也是有

40、值的。changhong_双目算术运算符+-*/%结合方向:从左向右。优先级:*、/、% +、-说明:对于除法运算,当两个操作数都是整数时,做整除运算。取余运算的两个操作数,必须都是整数。而且结果的符号与被除数的符号相同。在c的表达式中,*是不能省略的。如:2a应表示为2*a。算术运算符3.5 运算符和表达式运算符和表达式5/2 = 2 -5/2.0 = -2.55%2 = 1 -5%2 = -11%10 = 15%1 = 05.5%2 ( )changhong_自增、自减运算符自增、自减运算符+ -+ -n作用:使变量值加作用:使变量值加1 1或减或减1 1n种类:种类:n前置前置 +i i

41、, -, -i i ( (先执行先执行i i+1+1或或i-1i-1,再使用再使用i i值)值)n后置后置 i i+,+,i i- - ( (先使用先使用i i值值, ,再执行再执行i i+1+1或或i-1i-1)单目算术运算符+-结合方向:从右向左。优先级:-、-、+ *、/ +、-说明:“-”有两个作用:求负、减法。两者的结合性和优先级不同。自增、自减运算符的前缀和后缀使用方法的作用不同。前缀使用时,先执行运算,再使用变量的值;而后缀使用时则恰好相反。自增和自减运算符只能用于单个变量,不能用于常量和表达式。算术运算符3.5 运算符和表达式运算符和表达式 j=3; k=+j; j=3; k=

42、j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4 i=3; printf(“%d”,-i+); printf(“%d”,-+i); /-3/-4changhong_赋值运算符3.5 运算符和表达式运算符和表达式 简单赋值运算符格式:=功能:将表达式的值赋给变量名。注意:与数学中使用的等号的区别。举例:a=3; d=func(); c=d+2;复合赋值运算符种类:+= 、-=、*=、/=、%=、=、&=

43、、=、|=格式:=功能:等价于=()changhong_赋值运算符3.5 运算符和表达式运算符和表达式 赋值运算符结合方向:自右向左运算符左侧必须是一个变量,不能是常量或者表达式。赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型。赋值表达式的值与变量值相等,且可嵌套。 3=x-2*y; a+b=3; int i; i=2.56; /结果i=2;float f;int i;i=10;f=i;/f=10.000000例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/ b=5;a=5/表达式

44、值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)注意:c语言的很多语法非常灵活,但是编程时一定要注意提高可读性,所以这里给出的两个例子在实际编程时不提倡使用。比如:i=3; j=(i+)+(i+)+(i+)changhong_ 关系运算符3.5 运算符和表达式运算符和表达式 关系运算符种类: = !=结合方向:自左向右关系表达式的

45、值:是逻辑值“真”或“假”,用1和0表示ca+b /c(a+b)ab!=c /(ab)!=ca= =bc /a=(bc /a=(bc)int a=3,b=2,c=1,d,f;ab (ab)=cb+cbf=abc/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/d=1/f=0changhong_关系运算符3.5 运算符和表达式运算符和表达式需注意问题做区间判断时,不可连续使用比较运算。应避免对实数作相等或不等的判断注意区分“=”和“=”3,8x38x若a=0; b=0.5; x=0.3;则 a=x=b的值为 01.0/9.0*9.0=1.0 结果为可改写为:fabs(1.0/9.0*

46、9.0-1.0)3&2|8b)&(n=cd)m=0,n=1changhong_条件运算符3.5 运算符和表达式运算符和表达式条件运算符一般形式: expr1 ? expr2 : expr3功能:expr1取取expr2值值取取expr3值值非非0=0b0?a+b:a-b(a=b)?y:n(x%2=1)?1:0(x=0)?x:-x(c=a & c0?1:(x0?-1:0)changhong_逗号运算符3.5 运算符和表达式运算符和表达式 逗号运算符格式:表达式1,表达式2,表达式n功能:按照从左到右的顺序逐个求解表达式,而整个逗号表达式的值就是表达式n的值。逗号表达式的值:等于表达式n的值#include void main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);运行结果:运行结果:x=3changhong_位运算符3.5 运算符和表达式运算符和表达式位运算符种类:、&、|功能:按照二进制表示方法(补码),逐位执行所给定的运算。#include void main() int a=18,b=33,c,d,e,f,g,h; c=a&b; d=a|b; e=a; f=ab; g=a3; printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论