




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第2章 C程序设计基础,C语言语法基础 数据与数据类型 常量 变量 混合运算与数据类型转换 数据的输入与输出 基本运算符和表达式,2,第2章,【本章导读】,C程序设计基础,数据是程序处理的对象,是程序设计中的重要组成部分。计算机中处理的数据不仅仅是简单的数字,还包括文字,声音,图形、图像等各种数据形式。C语言为我们提供了丰富的数据类型和运算符及语法规则,方便了我们对现实世界中各种各样数据形式的描述和处理。 本章主要介绍C语言的基本数据类型、标识符和关键字、常量和变量,运算符与表达式以及数据类型之间的转换等。通过对本章的学习,掌握C语言数据和数据类型的相关知识,熟练掌握运算符和表达式的使用方法。,3,一. 字符集 一个C程序是C语言基本字符构成的一个序列. (1)大小写英文字母52个 (2)数字10个 (3)键盘符号33个 (4)转义字符。由“反斜杠( )”开始后跟单个字符或若干个字符组成,通常用来表示键盘上的控制代码或特殊符号。,2.1,C语言语法基础,4,定义:用户自行定义的符号,用来表示程序中需要辨认的对象的名称如变量、常量、函数、标号等 组成: 只能由字母、数字、下划线 _组成,且第一个字符必须是字母或下划线 大小写敏感 不能使用关键词 长度:最长32个字符 命名原则: 见名知意 不宜混淆 如l与I, o与0 常用大写字母表示常量标识符,变量等其他类型标识符用小写字母表示 系统内部使用了一些用下划线开头的标识符,建议定义标识符时尽量不用下划线开头,以防止冲突。,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,二. 词汇 1.标识符,5,2. 关键字(保留字)标识符的一个特殊的集合。其中的标识符在C语言中有预先定义好的特殊意义。不能用于其他任何目的。 (1)数据类型关键字(12个): int, long, short, float, double, char, unsigned, struct, union, enum, void,file (2)控制语句关键字(12个):break, case, continue, default, do, else, for, goto, if, return, switch, while (3)存储类型关键字(4个):auto, extern, register, static (4)其它关键字(4个):const, sizeof, typedef, volatile,6,3.运算符:+ ,-,*,/,% 4.分隔符:逗号,空格 5.常量:数字常量、字符常量、字符串常量、符号常量、转义字符 6.注释符 : /* */,7,三、 语句 语句是组成程序的基本单位。C语言中的语句分为: (1)表达式语句: 表达式; x=2; i+; (2)函数调用语句: 函数名(实际参数);printf(“hello!”); (3)流程控制语句:,如 t=t+m; a=3; i+; i=1 , j=2;,如 func( ); printf(“Hello,world!n”);,8,复合语句(又称语句块):用 括起来的一组语句 一般形式: 说明: “”后不加分号 语法上和单一语句相同 复合语句可嵌套,例: int sum; int a,b; scanf(“%d%d”, ,9,空语句: ;,注意 说明部分和语句部分要分离。 语句不能写在函数外面。,10,四、标准库函数 标准库函数不是C语言本身的组成部分,它是由C编译系统提供的一些非常有用的功能函数。 输入输出一个字符:getchar() putchar() 有格式的输入输出:scanf() printf(),11,一、 数据类型概述,2.2 数据与数据类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,12,一般用大写字母 是宏定义预处理命令,不是C语句 整型常量 实型常量 字符常量 字符串常量,如 #define PRICE 30,定义:程序运行时其值不能改变的量 分类: 符号常量:用标识符代表常量 定义格式: #define 标识符 常量,例 符号常量举例(ch2_1.c) #include #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,运行结果:total=300,常量,2.3 常量,13,三种表示形式: 十进制整数:由数字09和正负号表示.如 32767, 123,-456,0 八进制整数:由数字0开头,后跟数字07表示.如0123,011 十六进制整数:由0x或0X开头,后跟09,af,AF表示. 如0x123,0Xff,例 12 与 12L 12 为int型 12L 为long int型,例 30000 为int型 65536 为long int 型,整型常量的类型 根据其值所在范围确定其数据类型 在整常量后加字母l或L,认为它是long int 型常量,问题: 0123 = ( )10 0x123 = ( )10 0Xff = ( )10,一、整型常量(整常数),14,表示形式: 十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123. 指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,实型常量的类型 默认double型 在浮点常量后加字母f或F,认为它是float型,二、实型常量(浮点常量、实数或浮点数),e-5,1.2E-3.5,15,实数类型,以上数据为理论上的参考数据,实际上不同机器可能有差异,例如在有的机器上测试为: -1.2E-383.4E+38(float) -2.3E-3081.7E+308(double) -9.0E-49286.3E+4931(long double)。 注意:在Turbo C 2.0中只输出6位小数,输出double时加l修饰,输出long double加L修饰。,16,定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如 101 -A 012 -n x40 - x61 -a 60 -0 483 -(),A-101-x41-65,如 a A ? n 101,转义字符:反斜线后面跟一个字符或一个代码值表示,例 转义字符举例 main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C “); ,运行结果:(屏幕显示) A B C I say:”How are you?” C Program Turbo C,三、字符常量,如 A65, a97, 048, n10,注意:和是不合法的字符常量,main( ) printf(“abx4134cd102y”); ,17,字符类型的数据包括计算机所用编码字符集中的所有字符。常用的ASCII字符集,其中的字符包括所有大小写英文字母、数字、各种标点符号字符,还有一些控制字符,一共128个。扩展的ASCII字符集包括ASCII字符集中的全部字符和另外的128个字符,总共256个字符。,字符类型数据在内存中存储的是它的ASCII码编码值,例如A和8分别存储ASCII值65和56。一个字符通常占用内存一个字节。,说明:,18,字符常量与字符串常量不同,定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志,四、字符串常量,19,概念:其值可以改变的量 变量代表某个存储空间及其所存储的数据 变量说明的一般格式: ,;,变量初始化:说明时赋初值;可对被说明变量的部分初始化,例: int a,b,c; float data; char ch1; double z;,合法标识符,例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1;,变量的使用:先说明,后使用,例 int student; stadent=19; /*Undefined symbol stadent in function main*/,变量说明位置:一般放在函数开头,决定分配字节数 和数的表示范围,2.4 变量,20,变量代表某个存储空间及其所存储的数据 变量名、变量值和变量的地址 变量名:标识变量的名字,与内存中的某一存储空间相联系 变量值:在这个存储空间中存储的数据 变量的地址:这个存储空间的首地址 在程序中通过变量名来引用变量值 赋值:向变量所代表的存储空间传送数据的操作。赋值操作用“=”表示,例: a=1; a=a+1; b=a;,21,(1)整型,以int表示,在内存中占2个字节 (2) 短整型, 以short int表示,或以short表示。 (3) 长整型, 以long int表示,或以long表示。在内存中占4个字节 (4)无符号型,说明类型符为unsigned。,一、整型变量,22,在turbo c中一个int型的变量的值范围为-215(215-1) ,即-3276832767。 可以用以下6种整型变量。即: 有符号整型 signed int 无符号整型 unsigned int 有符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long int 无符号长整型 unsigned long int,23,整型变量的定义 在c语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”。 整型变量的定义: 形式:类型说明符 变量名标志符1,变量名标志符2 ; 例如: int a,b,c,max; unsigned long x,y;,24,(1)编译系统将根据定义检测函数中的变量名。 例如在语句: maxx=3; 中变量max错写成了maxx,编译系统将提示maxx没有被定义的错误信息。 (2)编译系统将对每一个变量根据它被定义的类型分配相应的存储单元。 例如对上述被定义的变量a、b、c和max分别分配2字节的整型存储单元,对变量x,y分配4字节的无符号长整型存储单元。 变量存储单元地址可用“&变量名”求得,例如“&f”表示变量f的地址。,变量定义有以下作用:,25,变量定义有以下作用(续),可以用长度运算符sizeof( )求出任意类型变量存储单元的字节数。例如对int型变量a和float型变量f,sizeof(a)和sizeof(f)的值分别为2和4。也可以用sizeof( )作用到类型标识符上,如:sizeof(int)和sizeof(float)得到同样的结果。,(3)编译系统根据变量被定义的类型检查该变量进行运算的合法性。例如上述整型变量a、b、c和max均可以参与求余运算,例如b对c求余的结果赋给a: a=b%c; 是合法的,而实型变量f参加求余运算将是非法的。,26,变量定义有以下作用(续),(4)可以给变量赋初始值。如果没有给变量赋初始值,普通变量将存储随机值,直到给它赋值为止。 定义变量应注意以下问题: (1)变量名可以是任何合法的标识符。例如a、b2、c_1、_3y等均是合法的变量名,而#abc、.com、¥b1、5fd2、for等均是不合法的变量名。尽管除了关键字以外的标识符均可以作为合法的变量名,但应尽量做到“见名知义”,例如用max表示最大值变量,用sex表示性别变量等。另外还要注意,在C语言中大小写不同的变量名将表示不同的变量;尽管变量名中可以出现大写字母,但C语言习惯在变量名中使用小写字母。 (2)在一个函数中,同一个变量不能被定义两次,无论两次定义的类型是否相同,否则编译时将提示出错信息。,27,二、实型变量,语言的实型变量,分为两种: 1、单精度型 关键字为:float,占字节(32位)、提供位有效数字 2、双精度型 关键字:double,占个字节(64位)、提供1516位有效数字,28,字符型变量用来存放字符常量,请注意只能放一个字符。类型说明符是char. 字符变量存放字符ASCII码 char与int数据间可进行算术运算 一个字符变量在内存中占一个字节. 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。,三、字符变量,例 int a; char ch; a=D; /* a=68; */ ch=8+0; /* ch=8; */ ch=E+a-A /* ch=e; */ ch=65; /* ch=A; */,没有字符串变量,用字符数组存放,29,例如: char c1,c2; c1=a; c2=b; 字符a的ASCII代码为97,b为98,在内存中变量c1、c2的值如图(a)所示。实际上是以二进制形式存放的,如图(b)所示,30,#define PRICE 12.5 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=d,例子,31,四、变量的赋值和类型转换,1.变量赋初值 变量的赋值就是给变量的存储单元存储一定的值。给变量赋值有两种方式,一种方式是在定义变量时给变量初始化赋值; 例如: int a=3; float x=3.56; char ch1=a; int a,b,c=5; 另一种方式是在程序运行时用赋值语句给变量赋值,如: int a,b,c; a=2;b=5;c=10;,32,2.变量类型转换:自动转换和强制转换 (1)自动转换,遵循右图,33,char ch; int i; float f; double d;,ch/i + f*d - (f+i),例,34,一般形式:(类型名) 例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,显式转换(强制转换),结合性:从右向左,例: (double)a (int)(x+y) (float)5/3 注意: 表达式一定要加括号(因强制类型转换是单目运算,优先级高),例如上面最后一个表达式中只是将5转变成float型,而不是将5/3转变成float型。 若对变量实型显式转换,将得到新类型的一个值,原变量的类型及其存储值均不变。,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,35,2.6 数据的输入和输出,C语言无I/O语句,I/O操作由标准I/O函数实现,#include ,36,格式:printf(“控制字符串”,参数1,参数2,) 功能:按控制字符串,将参数转换成一定格式输出 返回值:正常,返回输出字节数;出错,返回EOF(-1),参数:合法的表达式,可以缺省 控制字符串,包含两种信息: 格式说明: %修饰符转换字符 ,用于指定输出格式 普通字符:(包括转义字符):原样输出(或执行),一、格式输出函数printf,37,int a=567; printf ( “%d”,a);,int a=255; printf(“%x”,a);,int a=65; printf(“%o”,a);,int a=567; printf(“%u”,a);,char a=65; printf(“%c”,a);,printf(“%s”, “ABC”);,float a=567.789; printf(“%e”,a);,float a=567.789; printf(“%f”,a);,float a=567.789; printf(“%g”,a);,567,ff,101,567,A,ABC,5.67789e+02,567.789000,567.789,说明: 转换字符决定数据输出类型 转换字符与输出项个数应相同,按先后顺序一一对应 输出转换:转换字符与输出项类型不一致,自动按指定格式输出,格式字符,38,附加格式说明符(修饰符)可缺省,格式说明: -0m.nh/l 注意:其中不得有空格;顺序不当,格式说明会无效,格式控制字符串,39,例 int a=1234,c=-1; long b=2269978; printf(“%dAn”,a); printf(“%8dAn”,a); printf(“%-8dAn”,a); printf(“%08dAn”,a); printf(“%8ldAn”,b); printf(“%u,%dn”,c,c);,整型数输出,/*ch2_6.c*/ 例 int a=123; printf(“%d,%o,%Xn”,a,a,a);,例,/1234A,/1234 A,/00001234A,/123,173,7B,例,/ 2269978A,/ 1234A,/65535,-1,40,例 float f=123.456; printf(“%fn”,f); printf(“%010.2fn”,f); printf(“%0.2fn”,f); printf(“%10.2en”,f);,浮点数输出,/*ch2_6.c*/ 例 char c=W; int i=87; printf(“%c,%dn”,c,c); printf(“%d,%cn”,i,i); printf(“%-5c,%5cn”,c,c);,例 字符输出,/123.456000,/0000123.46,/W,87,例,/ 1.23e+02,/123.46,/87,W,/W , W,41,例 printf(“%s!n”,“123456789”); printf(“%.8s!n”,“123456789”); printf(“%12.8s!n”,“123456789”); printf(“%-12.8s!n”,“123456789”);,字符串输出,例 long a=65536; printf(“%8ld,%dn”,a, a);,例 l,/123456789!,/12345678!,/ 12345678!,/12345678 !,/ 65536,0,例,42,格式: scanf(“控制字符串”,地址表) 功能:从键盘读入数据,按控制字符串中所指定格式来解释它们,并将结果存到相应参数指定的存储单元中 返回值:正常,返回输入数据个数;出错返回0,地址表:变量的地址,它指出转换后的输入数据应存储的位置。常用取地址运算符& 控制字符串:包含两种信息 格式说明:%修饰符转换字符 ,用于指定解释数据的格式 普通字符(不能是%):输入时原样输入 转换字符: d , o , x , c , s , f , e,例 scanf(“%d”, 输入:10 则 a=10,例 scanf(“%x”, 输入:11 则 a=17,二、格式输入函数scanf,43,附加格式说明符(修饰符) % * m l/h ,l,修饰符,功 能,h,m,*,用于d,o,x前,指定输入为short型整数,用于d,o,x前,指定输入为long型整数,用于e,f前,指定输入为double型实数,指定输入数据宽度,遇空格或不可转换字符则结束,抑制符,指定输入项读入后不赋给变量,例 scanf(“%4d%2d%2d”, 输入 19991015 则1999yy, 10 mm, 15 dd,44,一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式说明间的其他字符,输入时要原样输入,例 scanf(“%d:%d:%d”, 输入 12:30:45 则12 h, 30 m, 45 s,例 scanf(“%d,%d”,&a,&b) 输入 3,4 则3a, 4 b,例 scanf(“a=%d,b=%d,c=%d”, 输入 a=12,b=24,c=36 ,输入分隔符的指定,例 scanf(“%d%o%x”, 输入 123 123 123 输出 a=123,b=83,c=291,45,字符型数据,输入时不能有分隔符,否则分隔符会被当作有效字符输入,输入数值数据时,遇以下情况认为该数据结束: 遇空格、TAB、或回车 遇宽度结束 遇非法输入,例 int x; char ch; scanf(“%d”, 执行:123 输出:x=123,ch=10,说明:,如 scanf(“%c%c%c”, 若输入abc 则 a c1, c2, b c3,如 scanf(“%d%c%f”, 若输入1234a123o.26 则 1234 a, a b, 123 c,46,#include main() float a,b,area; scanf(“%f,%f“, ,输入:3.0,4.0 输出:a= 3.00, b= 4.00 The area is 12.00,例 输入一长方形的二边长,求面积,47,#include “stdio.h“ main() char c1,c2; c1=getchar(); printf(“%c,%dn“,c1,c1); c2=c1+a-A; printf(“%c,%dn“,c2,c2); ,输入:A 输出:A,65 a,97,例 从键盘输入大写字母,用小写字母输出,48,#include “stdio.h“ main() int x,y,temp; scanf(“%d%d”, ,输入:56 87 输出:x=56,y=87 x=87,y=56,例 交换两个变量的值,49,格式: c=getchar( ) 功能:从键盘读一个字符 返回值:正常, 返回读取的字符;出错, 返回EOF(-1),字符输入函数,例,#include main() int c; printf(“Enter a character:“); c=getchar(); printf(“%c-hex%xn“,c,c); ,运行结果: Enter a character:A A-hex41,三、单字符输入输出函数,50,格式:putchar( char ch ) 参数:ch为字符常量、变量或表达式 功能:把字符ch输出到显示器上 返回值:正常,为输出的字符ch;出错,为EOF(-1),字符输出函数,#include main() int c; printf(“Enter a character:“); c=getchar(); putchar(c); ,运行结果: Enter a character:A A,51,2.7 基本运算符和表达式,一、 运算符、表达式、优先级和结合性 1.运算符的种类 C语言的运算符非常丰富,共有13类45个运算符,52,53,2.优先级和结合性 学习运算符要注意几个方面问题: (1)运算符的功能; (2)运算符与操作对象即操作数(包括常量、变量、函数调用等)的关系: 要求操作数的个数(单目、双目、三目); 要求操作数的类型(如求余运算符%要求操作数是整型); 结合方向(操作数到运算符)::左结合、右结合(单目、赋值类、条件运算符); (3)运算符的优先级; (4)运算结果的数据类型:不同类型数据运算将发生类型转换,54,C语言运算符的优先级和结合性,55,基本算术运算符:+ -(减号) * / % -(负号) - 单目运算符; + - * / % 双目运算符 结合方向:+ - * / % 自左向右;- 自右向左 优先级: -(负号) - * / % - + -(减号) 说明: 两整数相除,结果为整数,舍小数部分;否则为double型 %要求两侧均为整型数据,例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,二、算术运算符和算术表达式,2,-2.5,1,-1,1,0,(),56,算术表达式 用算术运算符和括号将运算对象(也称操作数)连接起来的、符合c语法规则的式子,称c算术表达式。运算对象包括常量、变量、函数等。,注意: 1、双目运算符两侧运算对象要一致。 2.乘号不能省略 3.使用合法标识符 4.内容书写在同一行,不允许有分子分母形式 5.不允许使用 和 ,57,算术表达式的计算,说明: 1圆括号优先级最高,有多层圆括号从内向外运算; 2(类型名)(表达式)为强制类型转换运算; 3先按运算符的优先级由高到低进行,如5*-2相当于5*(-2),结果为-10; 4同级的运算符按结合方向进行,58,例:设有变量声明float a=3.0; int b=2;计算表达式2+sqrt(1.0+a)*b+/2,算术表达式的计算,解: 2+sqrt(1.0+a)*b+/22+sqrt(4.0)*b+/22+2.0*2/22+4.0/22+2.04.0即表达式的值为4.0,同时b的值变为3,a的值不变。,59,简单赋值运算符 符号: = 格式: = 作用:将的值赋给,例 a=3; d=func(); c=d+2;,三、赋值运算符和表达式,60,例 /* e2_12.c */ #include main() int i=5; float a=3.5,a1; double b=123456789.123456789; char c=A; printf(“i=%d,a=%f,b=%f,c=%cn“,i,a,b,c); a1=i; i=a; a=b; c=i; printf(“i=%d,a=%f,a1=%f,c=%cn“,i,a,a1,c); 程序运行结果: i=5,a=3.500000,b=123456789.123457,c=A i=3,a=123456792.000000,a1=5.000000,c=,61,main() int i=2,j=3,k,n,m; k=i+j; printf(“%d“,k); k=k+1; printf(“%d“,k); n=k*3; printf(“%d“,n); m=n%j; printf(“%d“,m); m=m-i; printf(“%d“,m); n=k/j; printf(“%d“,n); ,【例】,写出下面程序的运行结果,62,赋值表达式是表达式,则可嵌套,其值就是被赋值后变量的值,结合方向:自右向左 优先级: 2 左侧必须是数值变量、结构成员、间接指针和数组分量中的一个,不能是常量或其它表达式,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例 3=x-2*y; a+b=3; ,例 int i; i=2.56; /结果i=2;,例: 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,/表达式值5, b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,赋值运算符说明(1):,例 float f; int i; i=10; f=i; 则 f=10.0,例: int a=2; a%=4-1; a=12; a+=a-=a*a,/a=-264 等价于a=a+(a=a-(a*a),/a=2,63,复合赋值运算符 种类:+= -= *= /= %= = = &= = |= 含义: var1 op= exp1 var1 = var1 op exp1,/* e2_13.c */ #include main() int a=3,b=4,c=5,d=6,x; a+=b*c; b-=c/b; printf(“%d,%d,%d,%dn“,a,b,c*=2*(a-c),d%=a); printf(“x=%dn“,x=a+b+c+d); ,程序运行结果: 23,3,180,6 x=212,64,自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前置 +i,-i (先执行i=i+1或i=i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i=i+1或i=i-1),例 j=3; k=+j; j=3; k=j+; a=3; b=5; c=(+a)*b; a=3; b=5; c=(a+)*b;,j=j+1; k=j; /k=4,j=4,k=j; j=j+1; /k=3,j=4,/c=20,a=4,/c=15,a=4,65,说明: + - 不能用于常量和表达式,如5+,(a+b)+ + - 结合方向: 自右向左 优先级:- + - -* / % -+ -,66,main( ) int m,n, k; m=5; n=10; k=(-m)+(-n); printf(“m=%d,n=%d,k=%dn“,m,n,k); m=5, n=10; k=(m-)+(n-); printf(“m=%d,n=%d,k=%dn“,m,n,k); ,【例】,分析下面程序的运行结果,67,关系运算符 种类:= = != 结合方向:自左向右 优先级别: 关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc),例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,四、关系运算符和关系表达式,68,例 若a=0; b=0.5; x=0.3; 则 a=x=b的值为,0,例 5278在C中是允许的, 值为,0,例 int i=1, j=7,a; a=i+(j%4!=0); 则 a=,2,例:字符数据的比较按其ASCII码进行 a0 结果为 A100 结果为,1,0,关系运算注意(1),69,例 注意区分“=”与“= =” int a=0,b=1; if(a= =b) printf(“a equal to b”); else printf(“a not equal to b”);,例 应避免对浮点数作相等或不等的判断 原因:判定两个浮点数是否相等时,由于计算机存储上出现的误差,会出现错误的结果 如: 1.0/3.0*3.0=1.0 可改写为:fabs(1.0/3.0*3.0-1.0)1e-6,关系运算注意(2),70,逻辑运算符 种类: !(逻辑非) &(逻辑与) |(逻辑或) 逻辑运算真值表,C语言中,运算量: 0表示“假”, 非0表示“真” 运算结果: 0表示“假”, 1表示“真”,六、逻辑运算符和表达式,71,例 ab&xy a=b|x=y !a|ab,优先级:,结合方向:,/ (a=x) & (x=b),/(ab)&(xy),/(a=b)|(x=y),/(!a)|(ab),逻辑运算符和表达式(2),72,优先级:,结合方向:,例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d,/ 值为1,/ 值为0,/ 值为1,/ 值为1,/ 值为1,/ 值为1,/(53)&2)|(8(4-(!0) 值为1,逻辑运算符和表达式(3),73,短路特性:&和|是短路运算符,在进行逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,例 a,/结果 x=2,y=z=1,逻辑运算符和表达式(4),优先级:,结合方向:,/结果 x=y=2,z=1,74,形式:, 结合性:从左向右 优先级:1 逗号表达式的值:等于的值,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 低延迟命令行解析技术-洞察及研究
- 金融业智能客服系统方案
- 重难点解析江西省樟树市中考数学真题分类(实数)汇编综合练习试卷(含答案详解版)
- 综合解析四川省广汉市中考数学真题分类(勾股定理)汇编同步测评试题
- 2026届安徽省合肥九中化学高一第一学期期末综合测试模拟试题含解析
- 游戏直播领域直播平台技术架构设计与优化实施
- 珠宝行业个性化定制与品牌营销策略
- 贵州省遵义市绥阳中学2026届化学高一上期中监测试题含解析
- 社区公益活动组织及执行方案
- 三农田保护与治理技术指南
- 【完整版】2025年二级建造师《建筑实务》考试真题及答案
- 水库维修承包合同协议书范本
- 2025年浙江省中考英语真题(解析版)
- 2025年广西中考道法真题卷含答案解析
- 2025年国企中层干部竞聘笔试题及答案
- 2025年人民检察院公开招聘用制书记员考试题及答案
- 数学小升初试卷真题打印版
- 医院学术委员会组织职责
- 国际经济法课件马工程版
- 重庆临时摊点管理办法
- 3.4中国的海洋资源课件-八年级地理上册商务星球版
评论
0/150
提交评论