冯毅程序设计基础cc2_第1页
冯毅程序设计基础cc2_第2页
冯毅程序设计基础cc2_第3页
冯毅程序设计基础cc2_第4页
冯毅程序设计基础cc2_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章第二章字母字母english language单词单词短语短语句子句子段落段落文章文章c language字母、数字与字母、数字与特殊符号特殊符号常量、变量常量、变量与运算符与运算符表达式表达式语句语句函数函数程序程序ch2 数据描述数据描述 data representation in c预备知识预备知识c 基本元素基本元素c 数据类型数据类型常量与变量常量与变量数据类型转换数据类型转换运算符与表达式运算符与表达式2.0 预备知识计算机中数的表示及进制转换v数码、基与权l数码:表示数的符号l基:数码的个数l权:每一位所具有的值v数制语言程序设计 第二章数据描述cv各种进制之间的转换l二

2、进制、八进制、十六进制转换成十进制u方法:按权相加10012345259212120212121111011)()(例10012894868381136)()(例1001231679781610162161516121)()(例af语言程序设计 第二章数据描述cv各种进制之间的转换(整数)l二进制、八进制、十六进制转换成十进制u方法:按权相加l十进制转换成二进制、八进制、十六进制u原理:的余数是2)2.22(222.22).(00012110011112011naaaaaaaaaaaaannnnnnnnnnnu方法:连续除以基,从低到高记录余数,直至商为0例例 把十进制数把十进制数59转换成二

3、进制数转换成二进制数5922921427232120(59)10=(111011)21101111 1 1 0 1 1余余余余余余余余余余余余例例 把十进制数把十进制数159转换成八进制数转换成八进制数1598198280(159)10=(237)82 3 7 余余 7余余 3余余 2例例 把十进制数把十进制数459转换成十六进制数转换成十六进制数4591628161160(459)10=(1cb)161 c b 余余11余余12余余 1语言程序设计 第二章数据描述cl二进制与八进制之间的转换u二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制u八进制转换成二进制:用3位

4、二进制数代替每一位八进制数例例 (1101001)2=(001,101,001)2=(151)8例例 (246)8=(010,100,110)2=(10100110)2000 0001 1010 2011 3100 4101 5110 6111 7语言程序设计 第二章数据描述cl二进制与十六进制之间的转换u二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制u十六进制转换成二进制:用4位二进制数代替每一位十六进制数例例 (11010101111101)2=(0011,0101,0111,1101)2=(357d)16例例 (4b9e)16=(0100,1011,1001

5、,1110)2=(100101110011110)20000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 a1011 b1100 c1101 d1110 e1111 f语言程序设计 第二章数据描述c字节和位v内存以字节为单元组成v每个字节有一个地址v一个字节一般由8个二进制位组成v每个二进位的值是0或101234567012345678910.语言程序设计 第二章数据描述c6532140数值的表示方法原码、反码和补码v原码:最高位为符号位,其余各位为数值本身的绝对值v反码:l正数:反码与原码相同l负数:符号位为1,其余

6、位对原码取反v补码:l正数:原码、反码、补码相同l负数:最高位为1,其余位为原码取反,再对整个数加13126912457810119-5=49+7=16=(14)12语言程序设计 第二章数据描述c原码反码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000数的范围0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)(用一字节表示数)v

7、负数补码转换成十进制数:最高位不动,其余位取反加1例例 补码:补码:11111001 取反:取反:10000110 加加1: 10000111=-7语言程序设计 第二章数据描述c2.1 basic elements of cv组成:组成:l只能由只能由字母字母、数字数字、下划线下划线组成,且第一个字母必须组成,且第一个字母必须是字母或下划线是字母或下划线l大小写敏感大小写敏感l不能使用关键字不能使用关键字v长度:最长长度:最长32个字符个字符v命名原则:命名原则:l常用取简常用取简 专用取繁专用取繁 见名知意见名知意l不宜混淆不宜混淆 如如l与与i, o与与0标识符标识符 identifier

8、sv用来标识变量、常量、函数等的字符序列用来标识变量、常量、函数等的字符序列. .基本符号基本符号 basic symbols in c: 1、字母字母 :26 (大小写敏感大小写敏感) 2、数字数字 :10(09) 3、特殊符号特殊符号: ; () “” # _ % : + - * / 等等.例例. . 判断下列标识符合法性判断下列标识符合法性sum sum m.d.john day date 3daysstudent_name #33 lotus_1_2_3int ab _above $123m.d.john3days#33int$123abbasic elements in c:iden

9、tifiers 标识符标识符keywords 关键字关键字white space 空白字符空白字符comments 注释注释delimiters 分隔符分隔符constants 常量常量operators 运算符运算符/*calculate the sum of a and b */#include main() int a, b, product; a=12; b=5; product=a*b; printf(product is %dn,product);关键字关键字 keywordsv定义:由系统内部使用,不能重作其它定义定义:由系统内部使用,不能重作其它定义vc关键字共有关键字共有32

10、个个空白字符空白字符 white spacev即程序中标识符与标示符之间即程序中标识符与标示符之间,行与行之间的空白间隔行与行之间的空白间隔字符,包括字符,包括blanks, tab, newlines,等等v作用:程序文本格式的编辑,提高可读性作用:程序文本格式的编辑,提高可读性v空白字符在编译时不产生代码空白字符在编译时不产生代码注释注释 comments (/*.*/)v辅助程序编辑过程中的记忆、阅读和理解辅助程序编辑过程中的记忆、阅读和理解v使用的位置:与使用的位置:与“空白字符空白字符”相同,可多行注释相同,可多行注释v不产生编译代码不产生编译代码2.1 basic elements

11、 of ckeywords:32 (arranged by usage)char int short long float doublesigned unsigned const struct union enum typedef sizeof voidif else switch case defaultwhile do for break continue goto returnauto register static extern volatile分隔符分隔符 delimiters2.1 basic elements of c数据类型决定:数据类型决定:1. 数据数据占内存字节数占内存字

12、节数2. 数据数据取值范围取值范围3. 其上可进行的其上可进行的操作操作构造构造composite基本基本basic指针指针pointervoidtypedef字符型字符型character: char枚举枚举 enum 整型整型 integer: int实型实型 real单精度单精度 : float双精度双精度 : double数组数组array 结构体结构体 struct 共用体共用体 union 2.2 c data typesc data types单精度单精度浮点型浮点型双精度双精度浮点型浮点型char int float doublel4 additional qualifiers

13、类型修饰符类型修饰符:intbasic data typescharranges size(bits)storage formatkeywords types 基本数据类型总表基本数据类型总表integer character floating (signed)int16/32-3276832767(signed)short16-3276832767(signed)long32-231 231-1unsigned int16/3206553532 0232-1unsigned longfloat32-3.4e-383.4e38double64-1.7e-3081.7e308char8-1281

14、27unsigned short16065535unsigned char02558二进制补码二进制补码ascii有效数字:有效数字:有效数字:有效数字: 15符号位符号位 .尾数尾数 .阶数阶数参见参见 limits.h 和和 float.h7-2147483648 2147483647常量常量 constants v程序运行时程序运行时其值不能改变其值不能改变的量(即常数)的量(即常数)v每个常量具有数据类型每个常量具有数据类型u整型整型常量常量 integer constants u浮点型浮点型常量常量 floating constants u字符字符常量常量 character con

15、stantsu字符串字符串常量常量 string literals u一般用大写字母一般用大写字母u是是宏定义宏定义预处理命令,不是预处理命令,不是c语句语句v符号常量符号常量 symbolic constants 用标识符代表常量用标识符代表常量#define identifier token-sequence why symbolic constants?2.3 常量与变量常量与变量(ch2_1.c)e.g. #define price 30#include #define pi 3.14main() float r, cir, area; scanf(%f, &r); cir=2 * 3

16、.14 * r; area=3.14 *r *r; printf(radius=%fn, r); printf(circumference=%fn, cir); printf(area=%fn, area);why?1. 可读性可读性2. 易于修改易于修改pipiv三种形式:三种形式:l十进制十进制decimal:由数字由数字09和和正负号正负号表示表示 e.g., 123, -456, 0l八进制八进制octal:由数字由数字0开头开头,后跟数字后跟数字07表示表示 e.g., 0123, 011l十六进制十六进制hexadecimal:由由0 x或或0x开头开头, 后跟后跟09,af,af

17、表示表示 e.g., 0 x123, 0xffv整型常量的类型整型常量的类型l取决于其取决于其形式形式, 值值 和和 后缀后缀l若无后缀,若无后缀,根据其值所在范围确定其数据类型l后缀后缀 u 或或 u, unsigned intl后缀后缀 l 或或 l, long int整型整型常量常量eg. 12 and 12leg. 30000 int 65536 int exercise:0377 = ( )100 x123 = ( )100xff = ( )10255291255v二种形式二种形式:l十进制形式十进制形式 decimal: (必须有小数点必须有小数点) e.g., 0.123, .1

18、23, 123.0, 0.0, 123.l指数形式指数形式 exponential: (e 或或 e 之前必须有数字;指之前必须有数字;指数必须为整数数必须为整数) e.g., 12.3e3 ,123e2, 1.23e4 , e-5 , 1.2e-3.5 v实型常量类型实型常量类型l默认默认: doublel后缀后缀 f 或或 f, floatl后缀后缀 l 或或 l, long double (10/8)浮点型浮点型常量常量v用用单引号单引号()括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符v字符常量的字符常量的值值:该字符的:该字符的ascii码码值值e.g., 101 -a

19、 012 -n 376 - 0 x61 -( ) x60 -( ) 483 -( )e.g.,a- 101- x41-65e.g., a a6565, a a9797, 0 048 , 48 , nn1010v转义字符转义字符:反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示nrt“ v bfaoooxhh回车换行回车换行 回车不换行回车不换行水平制表水平制表反斜线反斜线单引号单引号双引号双引号垂直制表垂直制表退格退格换页换页响铃响铃三位八进制数表示的字符三位八进制数表示的字符二位十六进制数表示的字符二位十六进制数表示的字符e.g., a a ? n 101 0null

20、 character字符字符常量常量v字符常量与字符串常量不同字符常量与字符串常量不同v用双引号用双引号(“”)括起来的零个或多个字符序列(含转义字符)括起来的零个或多个字符序列(含转义字符)v字符串常量数据类型是字符串常量数据类型是 “字符数组字符数组”a a 0e.g., aae.g., 空空串串 0e.g., char ch; ch=“a”; e.g., char ch; ch=a; v存储:每个字符串尾存储:每个字符串尾自动自动加一个加一个 0 作为字符串结束标志作为字符串结束标志“hello”“a”“”“hellonworld!”v转义字符转义字符用于用于字符串中特殊字符的表示字符串

21、中特殊字符的表示 i say:how are you?n c programne.g., 输出输出 :i say:how are you?c program字符串字符串常量常量h e l l o 0e.g., 字符串字符串 hello 在内存在内存22 bytes变量变量 variables v程序运行中,程序运行中,其值可以改变其值可以改变的量的量v内存与变量内存与变量l变量是对程序中数据存储空间的抽象变量是对程序中数据存储空间的抽象l程序中使用变量名对内存操作程序中使用变量名对内存操作ch2_005.c2.3 常量与变量常量与变量01int a;2000aa=100;100address.

22、int a; a=1;a2 bytes.memory 12.3 常量与变量常量与变量v每个变量有每个变量有名字名字和和类型类型v变量变量值:值:变量名对应的内存单元中存放的数据变量名对应的内存单元中存放的数据变量变量 variables v程序运行中,程序运行中,其值可以改变其值可以改变的量的量v内存与变量内存与变量l变量是对程序中数据存储空间的抽象变量是对程序中数据存储空间的抽象l程序中使用变量名对内存操作程序中使用变量名对内存操作定义定义 declarationv目的:通知编译程序为变量分配内存单元目的:通知编译程序为变量分配内存单元v原则:先定义,后使用原则:先定义,后使用e.g., i

23、nt a,b,c; float data;变量变量定义定义与与初始化初始化var_type var_name1, var_name2, var_name2 ;1. 数据数据占内存字节数占内存字节数2. 数据数据取值范围取值范围3. 其上可进行的其上可进行的操作操作合法标识符合法标识符e.g., float a,b,c; c=a%b; /illegal use of floating point in function main e.g., int student; stadent=19; /undefined symbol stadent in function main v变量定义位置:变量

24、定义位置:一般一般放在函数内第一条放在函数内第一条可执行语句可执行语句前面或前面或函数外函数外main() int a,b; float data; a=1; b=2; data=(a+b)*1.2; printf(“data=%fn”,data);declaration executable statementmain() int a,b; a=1; float data; b=2; data=(a+b)*1.2; printf(“data=%fn”,data);初始化初始化 initializationv定义时赋初值定义时赋初值v变量使用前必须先赋值变量使用前必须先赋值e.g., int

25、a=2,b,c=4; float data=3.67; char ch=a; int x=1,y=1,z=1; int x=y=z=1;.addrint a=1, b=-3,c;abc2bytes2bytes2bytesaddraddr.memory 1-3random ch2_005.c变量变量类型类型整型变量整型变量 integral variablesv占字节数与机器硬件有关占字节数与机器硬件有关,一般占一个机器字一般占一个机器字vshortintlongv可用可用sizeof(类型标识符类型标识符|变量名)测量变量名)测量e.g., void main() int intsize; i

26、ntsize = sizeof(int); /or sizeof(intsize) printf(“%d ”,intsize);浮点型变量浮点型变量 floating variablesvfloat : 4 bytesvdouble :8 bytesvlong double :8/10 bytes字符型变量字符型变量 character variablesv其其值值: ascii码值码值vchar 与与 int 可进行算术运算可进行算术运算if char c1=a, c2=32,c3;c3=c1-c2;then, c3=? e.g., a=0; /* a=48; */ x=a+5; /* x=

27、65+5; */ s=!+g /* s=33+71; */无无 字符串字符串型变量,用字符数组存放型变量,用字符数组存放#include #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);符号符号常量常量变量变量定义定义output :total=37.500000, ch1=d输出输出 memory .20002001200202003200420052006200720

28、08num3ch2dtotal*ch1*37.5d 手工模拟手工模拟is char completely the same as int?void main() char c1,c2; c1=a+32; c2=353; printf(“%c %c n”,c1,c2);0000000101100001output :a a(353)10 = (161)16353 16221611601 6 1 余余1余余6余余 197数据类型转换:在程序运行中,数据的类型改变成另一种数据类型转换:在程序运行中,数据的类型改变成另一种数据类型数据类型隐式转换隐式转换(自动转换)(自动转换)v什么情况下发生什么情况

29、下发生l算术转换算术转换 arithmetic-不同类型数据混合运算时不同类型数据混合运算时l赋值转换赋值转换 assignment-把一个值赋给与其类型把一个值赋给与其类型不同的变量时不同的变量时l输出转换输出转换 output-输出时转换成指定的输出格式输出时转换成指定的输出格式l函数调用转换函数调用转换 function-实参与形参类型不一致实参与形参类型不一致时转换时转换v运算转换规则运算转换规则:不同类型数据运算时先不同类型数据运算时先自动自动转换成同一转换成同一类型类型2.4 数据类型转换数据类型转换必定的转换必定的转换 类型不同时转换类型不同时转换eg. char ch; int

30、 i; float f; double d;ch/i + f*d - (f+i)intdoubledoubledoubledoubleintdoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i* f - d / leg. int i; float f; double d; long l;floatnarrowerwiderchar,shortdoublelongunsignedint 算术算术转换转换规则规则显式转换显式转换(强制转换)(强制转换)(type-name) expression #include void ma

31、in() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%dn”,x,i); 精度损失问题精度损失问题ch2_007.cch2_008.coutput:x=3.600000,i=3v强制转换得到所需类型的中间变量,原变量类型不变强制转换得到所需类型的中间变量,原变量类型不变. eg. (int)(x+y) (int)x+y (double)(3/2) (int)3.6eg. (int)(x+y) integer (int)x+y x to integer (double)(3/2) 1.0 (int)3.6 3较高类型向较低类型转换时可能发生较

32、高类型向较低类型转换时可能发生operators2.5 运算符与表达式运算符与表达式operatoroperandoperators: 34arithmetic operators:+ - * / % + -relational operators: = !=logical operators :! & |bitwise operators : | &assignment operators:= *= /= %= += -= = &= = |= conditional operator:?:comma operator :,pointer operator :* &sizeof :sizeof

33、type conversion :(type)field access operator:. -subscript operator: others :( ) -运算符运算符 operators:v运算符运算符功能功能v与与运算量关系运算量关系l要求运算量个数要求运算量个数(13)l要求运算量类型要求运算量类型v运算符运算符优先级别优先级别(15)v结合方向结合方向:即当运算符优先级别相同时,运算符与:即当运算符优先级别相同时,运算符与运算量的结合方向运算量的结合方向v结果的类型结果的类型表达式表达式 expressions: 运算符与运算量的组合式运算符与运算量的组合式v变量和常量都是表达式

34、变量和常量都是表达式v表达式都有值和类型表达式都有值和类型2.5 运算符与表达式运算符与表达式v基本算术运算符:基本算术运算符:+ - * / %l双目双目运算符运算符l结合方向:结合方向:从左向右从左向右l优先级:优先级: - (单目单目)- * / % - + - (双目双目) (2) (3) (4)说明:说明:l“-”可作为符号运算符可作为符号运算符(求相反数),此时为求相反数),此时为单目单目运算符运算符,右结合性,右结合性,优先级(优先级(2)l两整数相除,结果两整数相除,结果向零取整向零取整l%要求两侧均为整型数据要求两侧均为整型数据l括号括号“()”之内表达式优先级最高之内表达式

35、优先级最高(1)eg. 5/2 = -5/2.0 =eg. 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2 =eg. -a + b * c - d算术算术运算符与表达式运算符与表达式1-110( )2-2.5v自增、自减运算符自增、自减运算符 + -l作用:使变量值加作用:使变量值加1或减或减1l单目单目运算符运算符l种类:种类:u前置前置 +i,-i i=i+1 i=i-1 (先执行先执行i+1或或i-1,再使用再使用i值)值)u后置后置 i+,i- i=i+1 i=i-1 (先使用先使用i值值,再执行再执行i+1或或i-1)eg. j=3; k=+j; j=3; k=j+;

36、 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算术算术运算符与表达式运算符与表达式l说明:说明:u+ - 不能用于常量和表达式不能用于常量和表达式,如如5+,(a+b)+u前置与后置运算区别在于其前置与后置运算区别在于其表达式的值表达式的值不同不同u程序中尽量不要写容易引起歧义的表达方式程序中尽量不要写容易引起歧义的表达方式eg. j+k; (j+)+k;ch2_009.cch2_000.cl结合方向:结

37、合方向: 自右向左自右向左l优先级优先级:(2)v自增、自减运算符自增、自减运算符 + - -算术算术运算符与表达式运算符与表达式eg. -i+ i=3; printf(“%d”,-i+);eg. -i+ -(i+) i=3; printf(“%d”,-i+); /-3 v基本赋值运算符基本赋值运算符: var = expv作用:给变量赋值作用:给变量赋值v双目双目运算符运算符v结合方向:结合方向:自右向左自右向左v优先级:优先级:14v复合赋值运算符复合赋值运算符: += -= *= /= %= = = &= = |= var op= expa+=3a=a+3x*=y+8x=x*(y+8)x

38、%=3x=x%3eg. a=3 d=func() c=d+2var = var op exp赋值赋值运算符与表达式运算符与表达式v说明说明:l赋值运算符左面必须是变量,不能是赋值运算符左面必须是变量,不能是常量常量或或表达式表达式l赋值表达式可嵌套,其值与变量值相等赋值表达式可嵌套,其值与变量值相等l赋值运算符左面变量与右面表达式类型不同时,自动赋值运算符左面变量与右面表达式类型不同时,自动进行进行赋值转换赋值转换规则规则:使赋值号右边表达式值使赋值号右边表达式值自动自动转换成其左边变量转换成其左边变量的类型的类型eg. int i; i=2.56; /i=2;eg. a=b=c=5 a=(b

39、=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/5-c,c-b,b-a, 表达式值表达式值=a=5/ b=5;a=5/6-c,5+c-a,表达式值表达式值=a=11/表达式值表达式值=10,a=10,b=4,c=6/表达式值表达式值=5,a=5,b=10,c=2eg. 3=x*y a+b=3eg. float f; int i32; f=a+32;then f=97.0赋值赋值运算符与表达式运算符与表达式eg.: a=12; a+=a-=a*aeg.: int a=2; a%=4-1; a+=a*=a-=a*=3; / a=a+(a=a-(a*a)/a*a

40、=144,a=a-144=-132,a=a+(-132)=-264/a=0 a=a+(a=a*(a=a-(a=a*3)赋值赋值运算符与表达式运算符与表达式v说明说明:lexp1必须是变量,不能是必须是变量,不能是常量常量或或表达式表达式l赋值表达式可嵌套,其值与变量值相等赋值表达式可嵌套,其值与变量值相等lexp1与与exp2类型不同时,自动进行类型不同时,自动进行赋值转换赋值转换规则规则:使赋值号右边表达式值使赋值号右边表达式值自动自动转换成其左边变转换成其左边变量的类型量的类型eg.:int a=2,c=3; a*=5+ c%=a ;then a= c=121( )lsum= sum+1;

41、eg. a=3*5,a*4 a=3*5,a*4,a+5eg. x=(a=3,6*3) x=a=3,6*aeg. a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);vexp1,exp2,expnv作用:顺序计算表达式作用:顺序计算表达式1n的值的值v结合性结合性: 从左向右从左向右v优先级优先级: 15v逗号表达式的值:等于逗号表达式的值:等于表达式表达式n的值的值v用途:常用于变量定义和循环语句中用途:常用于变量定义和循环语句中/a=15,表达式值表达式值=60/a=15,表达式值表达式值= 20/赋值赋

42、值表达式值表达式值= 18,x=18/逗号逗号表达式值表达式值= 18,x=3/1,2,3/3,2,3逗号逗号运算符与表达式运算符与表达式eg. #include void main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);output :x=3逗号逗号运算符与表达式运算符与表达式vexp1,exp2,expnv作用:顺序计算表达式作用:顺序计算表达式1n的值的值v结合性结合性: 从左向右从左向右v优先级优先级: 15v逗号表达式的值:等于表达式逗号表达式的值:等于表达式n的值的值v用途:常用于变量定义和循环语句中用途:常用

43、于变量定义和循环语句中v = !=v作用:比较两个数值v双目运算符v结合方向:自左向右v优先级别:=!=(6)(7)v关系表达式的值:是逻辑值“真”或“假”,用1和0表示eg. ca+b ab!=c a=bc/c(a+b)/(ab)!=c/a=(bc)关系关系运算符与表达式运算符与表达式eg. int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/1/1/0/d=1/f=0关系关系运算符与表达式运算符与表达式v = !=v作用:比较两个数值v双目运算符v结合方向:自左向右v优先级别:=!=(6)(7)v关系表达式的值:是逻辑值“真”或“假”,用1和0表示eg. 若

44、若 a=0; b=0.5; x=0.3; 则则 a=x278 合法,值为合法,值为0eg. int i=1, j=7,a; a=i+(j%4!=0); 则则 a=2eg. a0 值为值为 a100 值为值为10eg. “=” vs. “=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);关系关系运算符与表达式运算符与表达式v & | !v 用于构造复杂表达式用于构造复杂表达式eg. a=x & xb&xy a=b|x=y !a|ab/ (a=x) & (xb)&(xy)/(a=b)|(x

45、=y)/(!a)|(ab)逻辑逻辑运算符与表达式运算符与表达式运算符运算符功能功能运算数运算数结合性结合性优先级优先级逻辑或逻辑或!|逻辑非逻辑非双目双目单目单目左左右右12& 逻辑与逻辑与 双目双目左左112v & | !逻辑逻辑运算符与表达式运算符与表达式运算符运算符功能功能运算数运算数结合性结合性优先级优先级逻辑或逻辑或!|逻辑非逻辑非双目双目单目单目左左右右12& 逻辑与逻辑与 双目双目左左112ab!a!ba&b a|b真真假假真真假假假假假假真真真真vc语言中语言中, 运算量运算量: 0-“假假”,非非0-“真真” 运算结果运算结果: 0-“假假”,1-“真真”真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真v逻辑运算真值表逻辑运算真值表eg. a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2|(8b)&(n=cd)v短路特性短路特性:逻辑表达式求解时,并非所有的逻辑运算符:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在都被执行,只是在必须执行下一个逻辑运算符才能求出必

温馨提示

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

评论

0/150

提交评论