![[工学]第2章C语言.ppt_第1页](http://file.renrendoc.com/FileRoot1/2018-12/23/c66426fb-a7d2-466f-aabe-34d346bf40a4/c66426fb-a7d2-466f-aabe-34d346bf40a41.gif)
![[工学]第2章C语言.ppt_第2页](http://file.renrendoc.com/FileRoot1/2018-12/23/c66426fb-a7d2-466f-aabe-34d346bf40a4/c66426fb-a7d2-466f-aabe-34d346bf40a42.gif)
![[工学]第2章C语言.ppt_第3页](http://file.renrendoc.com/FileRoot1/2018-12/23/c66426fb-a7d2-466f-aabe-34d346bf40a4/c66426fb-a7d2-466f-aabe-34d346bf40a43.gif)
![[工学]第2章C语言.ppt_第4页](http://file.renrendoc.com/FileRoot1/2018-12/23/c66426fb-a7d2-466f-aabe-34d346bf40a4/c66426fb-a7d2-466f-aabe-34d346bf40a44.gif)
![[工学]第2章C语言.ppt_第5页](http://file.renrendoc.com/FileRoot1/2018-12/23/c66426fb-a7d2-466f-aabe-34d346bf40a4/c66426fb-a7d2-466f-aabe-34d346bf40a45.gif)
已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章,数据类型、运算符与表达式,2.1 概述,2.1.1 程序语言中数据的作用 一个程序应包括以下两方面内容: (1)对数据的描述 (2)对操作的描述 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。,2.1.2 数据类型及其作用 程序所能够处理的基本数据对象被划分为一些集合。属于同一集合的各数据对象称为数据类型。 每一数据类型具有同样的性质,例如它们能够做同样的操作,它们都采用同样的编码方式,占用同样大小的存储空间等等。,2.1.3 C语言数据类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,已经使用过的!,定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 C语言的关键字不能用作变量名 大小写敏感 长度:有效长度为32个字符。随系统而异,但至少前8个字符有效 命名原则: 变量名和函数名中的英文字母一般用小写,以增加可读性 见名知意 不宜混淆 如l与I, o与0,在TC2.0及BC3.1中,变量名(标识符)的有效长度为个字符,缺省值为,但在VC中其长度可达到255,例:判断下列标识符号合法性 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,.字符非法,数字3不可作首字符,#字符非法,char是关键字,字符非法,$不可作首字符,2.2. 基本概念和预备知识,2.2.1 C语言的标识符,2.2. 基本概念和预备知识,2.2.1 C语言的标识符,C语言中变量和函数都有自己的名字,它们都必须是合法的标识符。 标识符就是一个名字,C语言规定标识符只能由字母、数字和下划线三中字符构成,并且第一个字符必须是字母或下划线。 C语言是大小写敏感的语言,因此hello和Hello是不同的标识符。 C语言中有一些特别的标识符,它们的用途已经事先规定好了,程序员不能再将它们另做它用。这些特别的标识符被称为关键字(也称保留字)。到目前为止,我们见过的关键字有void、int、main、if、else、return。以后随着学习的深入,我们将会遇到越来越多的关键字。,2.2 基本概念和预备知识 2.2.2 常量 定义:程序运行时其值不能改变的量(即常数) 常量的分类 : 直接常量( 值常量) 整型常量: 10、15、-10、-30,比如:1=10; 实型常量: 12.5、 30.0、-1.5 字符常量: A、b、c 字符串常量: “sum”、“A”、“123” 2.2.3 符号常量 用标识符来代表常量。 其定义格式为:,#define 符号常量 常量,#define NUM 20 #define PI 3.1415926,#include #define PRICE 234500 void main ( ) int num, total,discount; num = 150; total = num * PRICE; printf (“total = %d“, total); discount=number* PRICE*0.15; printf(“total=%dn”,total); Printf(“discount=%dn”,discount); ,行尾不能有分号 define前面一定要有# 符号常量名最好使用大写 符号常量名最好有意义,使用符号常量的好处有哪些?,2.2.4 变量 定义:程序运行时其值可以被改变的量 变量的要素 :变量名 、变量值、变量类型、地址等 变量的定义格式 : 变量的初始化:定义时赋初始值 变量的使用规则:先定义,后赋值 变量定义位置:一般放在函数开头,数据类型(类型说明符) 变量名1,变量名2,变量名n;,int x, y, z; float radius, length, area; char ch;,决定分配字节数 和数的表示范围,合法标识符,例: 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;,例1: int student; stadent = 19; /书写错误,初学者一定要特别注意!,例2: int a,b; float c;/系统根据变量类型检查该变量的合法性 a = c - b; /不合法,2.2 基本概念和预备知识 变量的值从可以从哪里来?,以后还将学到通过函数返回值得到!,#include #define PRICE 234500 void main ( ) int num, total,discount; num = 150; total = num * PRICE; printf (“total = %d“, total); scanf(“%d”, ,在程序中被赋值,在程序中通过计算得到,通过用户输入得到,2.2.5 C语言的运算符,变量用来存放数据,运算符则用来处理数据。用运算符将变量和常量连接起来的符合C语法规则的式子被称为表达式。,运算符的分类: 单目运算符:只带一个操作数的运算符。如:+、-运算符。 双目运算符:带两个操作数的运算符。如:+、-运算符。 三目运算符:带三个操作数的运算符。如:?运算符。,学习运算符时应注意: 运算符的功能:该运算符主要用于做什么运算。 与运算量关系:要求运算量的个数及运算量的类型。 运算符的优先级:表达式中包含多个不同运算符时运算符运算的先后次序。 运算符的结合性:同级别运算符的运算顺序(指左结合性还是右结合性)。 运算结果的类型:表达式运算后最终所得到的值的类型。,有关这些运算符的作用以及运算顺序会在后面逐渐学习和深入!,例如: x = 8; a = b = c = 5; 注意:在变量定义时不能这样写:int a=b=c=5;,定义:赋值表达式在其后面加分号就构成了赋值语句。,赋值运算符及赋值表达式的使用,多个变量连续赋值,例如: a = b = c = 10;,a = (b = (c = 10);,结果:a、b、c的值都为10,赋值表达式的嵌套,例如: a = (b = 2) + (c = 3),( a = (b = 2) + (c = 3),结果:b为2,c为3,a为b+c即5,注意: 赋值语句“=”左边必须是变量名或对应某特定内存单元的表达式(后面的章节会遇到这样的表达式),不能是常量或其它表达式。 例如:30 = a; b + 2 = 5; 都是错误的。 赋值语句中的“=”表示赋值,不是代数中相等的意思。要表示相等的意思则应用关系运算符“=”表示,二者切勿混淆!,2.2.6 赋值运算符和赋值表达式,2.2.6 赋值运算符和赋值表达式,赋值运算符(“”,双目运算符),一般形式:,变量 = 常量或变量或表达式,功能:将右边常量或变量或表达式的值赋给左边变量,例如: int x, y, z; x = 20; y = x; z = x + y;,赋值表达式,定义:,由赋值运算符或复合赋值运算符(后面即将介绍),将一个变量和一个表达式连接起来的表达式,称为赋值表达式。,一般格式:,变量 (复合)赋值运算符 表达式,赋值表达式的值:被赋值变量的值。,例如:“a = 5”这个赋值表达式,变量a的值“”就是它的值。,2.2.7 数据的输入和输出,输入和输出是程序中必不可少的重要环节,C语言本身不提供输入输出的语句,输入和输出有(编译环境自带)的库函数来实现,例如: printf(“请输入折扣!n”); scanf(“%d”,适当的使用输出语句可以给用户提示,使用规则:#include ,可以帮助程序员了解程序运行的中间状态,#include #define PRICE 234500 void main ( )/该程序需要求result的值 int x1=0,x2=1,x3,reuslt; x3=x1+x2; x2=x2+x3; result=x2+x3; printf(“x3=%dn”,x3); /x3是计算过程中的中间变量,打印该值,可以让程序员了解程序是否计算正确! printf (“result = %d“, result); ,2.2.8 简单的格式化输出printf函数,一般格式,printf (“格式控制字符串“,表达式1,表达式2,表达式n);,功能,按照“格式控制字符串”的要求,将表达式1,表达式2,表达式n的值显示在计算机屏幕上。,说明,格式控制字符串用于指定输出格式。它包含两类字符: 常规字符:包括可普通(显示)字符和用转义字符表示的字符。 格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:,%修饰符格式转换字符,例: long int x = 0x8AB6; printf (“The Value of x is %ldn”, x);,常规字符,常规字符 (转义符): 以“n”开始的一些特殊的控制符,格式控制符 (修饰符),格式控制符 (格式转换符),printf使用时的注意事项,(1) 格式控制字符串可以不包含任何格式控制符。 (2) 当格式控制字符串中既含有常规字符,又包含有格式控制符时,则表达式的个数应与格式控制符的个数一致。此时,常规字符原样输出,而格式控制符的位置上输出对应的表达式的值,其对应的顺序是:从左到右的格式控制符对应从左到右的表达式。 (3) 如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制符的值将是不确定的。 (4) 不同类型的表达式要使用不同的格式转换符,同一表达式如果按照不同的格式转换符来输出,其结果可能是不一样的。,printf (“how are you?n”); /只有一个字符串参数, 输出为:how are you? printf (“how old are you?n”, 20); /带有两个参数,20没有意义, 输出为:how old are you?,char ch = A; printf (“ch = %c“, ch); /输出结果:ch = A (以字符形式输出) printf (“ch = %d“, ch); /输出结果:ch = 65 (以A字符的ASCII码形式输出),printf函数中的格式转换字符及其含义,2.2.9 简单的格式输入函数scanf函数,一般格式,scanf (“格式控制字符串”,变量1的地址,变量2的地址, ,变量n的地址);,功能,第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在变量1、变量2、变量n中 。,格式控制符与后续参数中的变量地址的对应关系,使用scanf函数注意事项,(1) 如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。 (2) 格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。 (3) 为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf( )函数输出一个提示信息,再用scanf( )函数进行数据输入 。 (4) 当格式控制字符串中指定了输入数据的域宽width时,将读取输入数据中相应的width位,但按需要的位数赋给相应的变量,多余部分被舍弃。,例如: scanf (“%d%d“, 假设给num1输入12,给num2输入36,则正确的输入操作为: 1236 或者 12 36 使用“”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。,例如: scanf (“%d:%d:%d“, 假设给h输入12,给m输入30,给s输入10,正确的输入操作为: 12:30:10,例如: scanf (“num1=%d, num2=%dn“, 假设给num1输入12,给num2输入36,正确的输入操作为: num1=12,num2=36n,例如: 将scanf (“num1=%d, num2=%dn“, ,例如: scanf (“%3c%3c“, 假设输入abcdefg,则系统将读取的“abc”中的a赋给变量ch1;将读取的“def“中的d赋给变量ch2。,使用scanf函数注意事项,(5) 当格式控制字符串中含有抑制符*时,表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。 (6) 使用格式控制符%c输入单个字符时,空格和转义字符均作为有效字符被输入。 (7) 输入数据时,遇到以下情况,系统认为该数据结束: 遇到空格,或者回车键,或者Tab键。 遇到输入域宽度结束。例如“%3d”,只取3列。 遇到非法输入。比方说,在输入数值数据时,遇到字母等非数值符号。 (8) 当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,那么,这种非法输入将影响后面数据的输入,导致数据输入失败。,例如: scanf (“%2d%*2d%3d“, 假设输入123456789 输出结果为:num1=12, num2=567。,例如: scanf (“%c%c%c“, 假设输入:ABC,则系统将字母A赋值给ch1,空格赋值给ch2,字母B赋值给ch3。,例如: scanf (“%d“, a); 如果输入为:12a3,a的值将是12。,例如: scanf (“%d,%d“, 如果输入为:12a34,那么a的值将是12,b的值将无法预测。 正确的输入是:12,34,2.3. 整型(int),只讲一种,其他见后续,整型变量的定义,int 变量名, 变量名2,变量名n;,int必须小写,至少一个空格,必须为合法的标识符,以逗号,分隔,以分号;结尾,定义时可以赋初值,方法:在变量名后面增加“= 数值”,例: int a; int x, y, z; int m = 2, y = -3;,当程序中定义了一个变量时,计算机会为这个变量分配一个相应大小的内存单元。因此,这个变量是有值的,它的值就是对应内存单元的值。如果定义时没有赋初值,则这个值程序员是无法预知的。,整型变量的分类,修饰符 控制变量是否有符号:signed(有符号)和unsigned(无符号) 控制整型变量的值域范围 :short(短)和long(长)。,有符号基本型(int) int a = -2; /定义一个有符号整型变量a,并赋初值-2 占一个机器字大小的内存单元。TC下,变量占2个字节(16位)的内存单元;.net中的C+占4个字节。,如果定义变量时,不指定signed,也不指定unsigned,则默认为signed(有符号),2.3. 1整形十进制常量同日常理解,2.3. 2整形变量,2.3. 1整形十进制常量同日常理解,2.3. 2整形变量,2.3. 整型(int)只讲一种,其他见后续,#include #define PRICE 234500 void main ( )/该程序用于显示int 型变量所占的字节数 printf(“变量所占字节数位“); printf(“整数为:%d 个字节n“,sizeof(int); ,sizeof()是一个运算符(见后)。作用是计算x在内存中所占字节数,x可以变量、常量以及类型标识符,2.3. 2整形变量,2.3. 2整形变量,装不下会怎样!,#include #define PRICE 234500 void main ( )/该程序用于显示展示整形数据溢出现象 int a,b; a=2147483648;/这是个字节整数所能表示的最大值 b=a+1; printf(“na=%d,a+1=%dn“,a,b); a=-2147483648;/这是个字节整数所能表示的最小值 b=a-1; printf(“na=%d,a+1=%dn“,a,b); ,+、-、*:与常见相同,例: int a=8,b=3; int a=a%b / a的值为2,负号与常见相同,2.3. 3(整形)的运算符和表达式,除法:注意仍然是整数,即只取整,求模(取余):%,例: int a,b,c; scanf(“%d %d %d”,2.3. 4(整形)的输入,有符号整数的输出,一般形式:, :表示可选项,可缺省。 :表示输出的数据左对齐,缺省时是右对齐。 :输出正数时,在数的前面加上号。 数字0:右对齐时,如果实际宽度小于width,则在左边的空位补0。 width:无符号整数,表示输出整数的最小域宽(即占屏幕的多少格)。若实际宽度超过了width,则按照实际宽度输出。,说明:,2.3. 5(整形)的输出,【例】有符号整数的格式化输出,#include void main ( ) int a = 123; printf (“ 12345678901234567890n“); printf (“a=%d-(a=%d)n“, a); printf (“a=%6d-(a=%6d)n“, a); printf (“a=%+6d-(a=%+6d)n“, a); printf (“a=%-6d-(a=%-6d)n“, a); printf (“a=%-06d-(a=%-06d)n“, a); printf (“a=%+06d-(a=%+06d)n“, a); ,12345678901234567890 a=123-(a=%d) a= 123-(a=%6d) a= +123-(a=%+6d) a=123 -(a=%-6d) a=123 -(a=%-06d) a=+00123-(a=%+06d),运行结果:,2.4 实型(float 和double),只说明float 和double,其他见后,2.4.1 常量和2.4.2. 实型变量,实型常量(实数或浮点数),十进制小数形式:由数字09和小数点组成 . 如:0.0,5.6,-5. 指数形式:由十进制数,加阶码标志e或E以及阶码(只能为整数,可以带符号)组成. 其一般形式为:aEn 其中:a为十进制数,n为十进制整数,都不可缺少。其可表示为a10n,合法的实数表示: 2.1E5 表示2.1105,3.7E-2 表示3.710-2。,非法的实数表示: 345(无小数点) ,E7(阶码标志E之前无数字) , -5(无阶码标志) ,50.-E3(负号位置不对),实型变量,单精度实型(float) float f = 3.14, g; 这种定义的变量在内存中占4个字节(32位)的存储单元。 双精度实型(double) double x, y; 这种定义的变量在内存中占8个字节(64位)的存储单元。,注意: 三种实数类型中,其精度是 float double ; 所有的实型常量按照double类型处理。,实数在计算机中保存时存在舍入误差,为什么?,+、-、*:与常见相同,例: int i1=1,i2=2; float f; f=i1/i2; / f的值为0 f=1.0*i1/i2;/ f的值为0.5 i1=f/i2; /是错的,负号与常见相同,2.4. 3(实形)的运算符和表达式,除法:与常见相同,但要注意以下情况:,为什么?,例: float a,b,c; scanf(“%f %f%f”,2.4. 4(实形)的输入,输入数据不能规定精度:,例如:float a; scanf (“%7.2f“, 如果输入为:12345.67。 (不合法),输入整数将会自动转换为实数:,如果格式控制符为整数,程序不会报错!,例如:float a; scanf (“%d“, 如果输入为:100。则a可能无法赋值(有可能为0);,若输入一个整数时,其格式控制符为%f,程序也不会报错,但整形变量的值为随机数:,例如:float a; int x; scanf (“%f“, 如果输入为:10.67。 x 为随机数,例如:float a; scanf (“%f“, 如果输入为:10。 a 为10.0,2.4. 5(实形)的输出,%f整数部分按实际长度输出,小数部分6位输出:,例如:float a=123456789.0; double b=123456789.0; printf (“%f%lf“, a,b); b 的输出精度高于a,%mf:m为指定的字段宽度,默认右对齐,-m 为左对齐,更多参见教材P31页,2.5 字符类型(char),2.5.1. 字符常量 2.5.3 转义字符,字符型常量,定义:用单引号括起来的单个普通字符或转义字符.,如 a A ? n 101,字符常量的值:该字符的ASCII码值,如 A65, a97, 048 , n10,转义字符:反斜线后面跟一个字符或一个代码值表示,例: 转义字符举例 #include void main ( ) printf (“101 x42 Cn“); printf (“I say:“How are you?“n“); printf (“C Programn“); printf (“Visual C“); ,运行结果:(屏幕显示) A B C I say:”How are you?” C Program Visual C,补充:字符在计算中怎么存储的? ASCII码值是什么? 教材P337页附录,字符型数据类型符是char(字符character) 在内存中占1个字节 字符变量存放字符ASCII码 char与int数据间可进行算术运算 存在有符号和无符号之分。默认情况下为有符号,例: char ch; unsigned char C = B;,例: a = D; / a = 68; x = A + 5; / x = 65 + 5; s = ! + G / s = 33 + 71;,2.5.2. 字符变量,对字符类型进行算术运算,实际上就是ASCII的运算,没有乘法、除法,2.5. 4字符的运算符和表达式,例: char a; scanf(“%c”,2.5. 5(字符)的输入,getchar():,例如:char a; a=getchar();,例: char a=a; printf(“%c”,a);,2.5. 6(字符)的输出,putchar():,例如:char a=a; putchar();/ 注意该函数的使用格式,范例分析:教材P36-39页的三个例题,2.6 字符串,定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志,例1: 字符串“HELLO”在内存中,例2: 空串 “”,0,字符常量与字符串常量不同,例: char ch; ch = “A”;,例: char ch; ch = A;,2.6. 1(字符串)常量,C语言没有字符串变量(要用数组来处理),例: printf(“%sn”,”这是需要输出的字符串”);,2. 6.2(字符串)的输出,字符串怎么输入?,由于没有字符串变量,所以必须要用数组来解决(见后续学习),2.7 数据类型转换,简化了教材的描述,为什么存在数据之间的转换?,转换的基本原则是什么?,什么是自动类型转换?,如果自动类型转换无法进行怎么办?,什么是强制类型转换?,(1)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。 (2)不提倡平凡使用,建议在定义时就仔细考虑变量类型。 (3)自动转换是系统自动允许和进行的,一般来讲都是占字节少的类型向占字节多的类型的转换。 (4)强制转换可能导致程序出错!,说明事项:,2.8几种特殊算术表达式,C语言规定了10种复合赋值运算符:,例: a-=8; x*=y+6; x/=2;,/a=a-8;,/x=x*(y=+6),/x=x/2;,2.8.1 复合的赋值运算符,在赋值运算符之前加上其他运算符,可以构成复合的运算符,怎样看待这些复合的赋值运算符,2.8.1复合赋值运算符,复合赋值运算符,种类: += -= *= /= %= = &= = |= 含义: exp1 op= exp2 exp1 = exp1 op exp2,定义:将算术运算符、位运算符与赋值运算符组合在一起就构成了复合赋值运算符。复合赋值运算符即包含了算术运算或位运算,又包含了赋值操作。,例: a=12; a+=a-=a*a;,/a=-264 等价于a=a+(a=a-(a*a),例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=0 等价于a=a+(a=a*(a=a-(a=a*3),怎样看待这些复合的赋值运算符,自增、自减运算符+ - 作用:使变量值加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+; 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,2.8.2 自增自减运算符,尽量不要在输出函数的实参表中使用+和赋值表达式,在不同系统版本中会有一些区别:,自增、自减运算符注意事项 +和-运算符只能用于变量,不能用于常量和表达式。 因为+和-蕴含着赋值操作。 例如:5+、-(a+b)都是非法的表达式。 负号运算符、+、-和强制类型转换运算符的优先级相同,当这些运算符连用时,按照从右向左的顺序计算,即具有右结合性。 两个和之间不能有空格。 在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。 例如:+i+是非法的。 自增、自减运算,常用于循环语句中,使循环控制变变量加(或减)-,以及指针变量中,使指针指向下(或上)一个地址。,2.8.2 自增自减运算符,例: int p, i = 2, j = 3; p = -i+; p = ? i = ? p = i+j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+i+; p = ? i = ? p = +i+(+i); p = ? i = ?,值分别为多少? 在程序中应该尽量避免出现这种情况!,2.8.3. 逗号运算符、逗号表达式,运算符:, 逗号表达式:用逗号连接起来的表达式。其一般形式为:,表达式1,表达式2,表达式k,优先级:优先级最低。 结合性:左结合性 。即逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值。 逗号表达式的值:最后一个表达式的值就是整个逗号表达式的值。 用途:常用于循环for语句中。,例如:a+3, b=4, b+,例: a = 3 * 5, a * 4 a = 3 * 5, a * 4, a + 5 例: x = (a = 3, 6 * 3) x = a = 3, 6 * a 例:a = 1; b = 2; c = 3; printf (“%d,%d,%d”, a, b, c); printf (“%d,%d,%d”, (a, b, c), b, c);,/a=15( 赋值号优先级要高),表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,例: int a =6,b=3,c=8,y; y=(a-b,b+c); 例: int a=6,b=3,c=8,x,y,z; y=(x=a-b,(z=a*c,b+x);,/y的值为11,/x的值为3,y的值为6,z的值为48,2.9 关系运算符和关系表达式,2.9 关系运算符和关系表达式,关系运算符,关系表达式,用关系运算符连接起来的式子称为关系表达式。 关系表达式的一般形式为:表达式 关系运算符 表达式,例:a + b c d x 3 / 2 a + 1 c i 5 * j = k + 1,注意: C语言用0表示假,非0表示真。 一个关系表达式的值不是0就是1,0表示假,1表示真。,关系运算符的优先级,例如: c a + b 等价于: a b != c 等价于: a = b c 等价于:,c (a + b),(a b) != c,a = (b c),a = (b c),已知:a = 1; b = 2; c = 3; 问:d = a != c = a b c;的值?,答:d 的值为1。 等价于:d = (a != c) = (a b) c);,例:int a = 3, b = 2, c = 1, d, f; a b (a b) = c b + c b f = a b c,/表达式值1,/表达式值1,/表达式值0,/d = 1,/f = ((ab)c),f=0,关系运算注意:,例 若a = 0; b = 0.5;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 检测公司委托协议书范本
- 互联网企业典当质押贷款协议
- 民用建筑租赁合同范本及详细条款
- 转租合同协议书样板范本
- 免除房款协议书范本
- 车辆牌照租赁与绿色出行激励政策合同
- 甜品店品牌区域代理合作协议
- 绿色制造厂房租赁安全与节能减排协议
- 财务结算财务担保合同范本
- 住宅小区新能源汽车充电桩车位租赁合同
- 未来中国检测市场发展趋势简析(精)
- 2025年福建省粮食行业职业技能竞赛(粮油保管员)备赛试题库(含答案)
- 四川电网新建电源并网服务指南(2025年)
- 建筑工程修缮培训课件
- 2025年主管护师考试真题试题及答案
- 2025全国英语等级考试(PETS)二级试卷真题汇编与解析
- 2024北森图表分析题库
- 税务智税竞赛试题及答案
- 成都银河磁体股份有限公司高精度、高洁净度硬盘用粘结钕铁硼磁体扩建项目环评报告
- 企业内部控制体系构建与优化研究
- 电力巡检机器人市场调研报告2025
评论
0/150
提交评论