第1讲 C语言基础_第1页
第1讲 C语言基础_第2页
第1讲 C语言基础_第3页
第1讲 C语言基础_第4页
第1讲 C语言基础_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础第第1讲讲C语言基础语言基础要求要求:(1) C程序的组成程序的组成(2) C语言的标识符是如何定义的。语言的标识符是如何定义的。(3) C语言有哪些基本数据类型?各种基本数语言有哪些基本数据类型?各种基本数据类型的常量和变量是如何定义的?据类型的常量和变量是如何定义的?(4) C语言有几种类型的表达式?各种类型表语言有几种类型的表达式?各种类型表达式是如何求值的?达式是如何求值的?(5) 在在C语言混合运算的表达式中,各种运算语言混合运算的表

2、达式中,各种运算符的优先级和结合性。符的优先级和结合性。浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础一、一、C程序的组成程序的组成C程程序序函数组成函数组成由若干函数说明部分函数说明部分函数体函数体函数类型说明函数类型说明函数名函数名函数形参函数形参形参类型说明形参类型说明变量定义部分变量定义部分执行部分执行部分 int sum( x, y ) int x, y; int z; z=x+y; retrun z; int sum(int x, int y) int z; z=x+y; re

3、trun z; 例如:例如:等价等价(函数首部)浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 1 C程序中程序中必有且仅有必有且仅有一个一个main( )函数,程序函数,程序从从main( )开始执行开始执行,并且,并且在在main( )中结束中结束。 2 每一个说明,每一个语句都必须以每一个说明,每一个语句都必须以分号分号“;”结尾结尾。但。但预处理命令,函数头和花括号预处理命令,函数头和花括号“”之后不能加分号。之后不能加分号。 3 C 语言的注释符是以语言的注释符是以“/*”开头并

4、以开头并以“*/”结尾的串。结尾的串。在在“/*”和和“*/”之间的即为注释。之间的即为注释。 在在TC+中,中,注释符以注释符以“/” 开始,到本行结束。开始,到本行结束。例如:例如: int a ,b; / 定义定义2个整型变量个整型变量浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 1. 数据的描述(数据结构)数据的描述(数据结构)一个程序应包括两个方面的内容一个程序应包括两个方面的内容: 2. 操作的描述(即操作步骤、算法)操作的描述(即操作步骤、算法) 数据是操作的对象,操作的结

5、果又会改变数据的状况。数据是操作的对象,操作的结果又会改变数据的状况。 数据结构与算数据结构与算法的结合才成为一个程序。法的结合才成为一个程序。 C语言提供的数据结构是以语言提供的数据结构是以数据类型数据类型形式出现的,形式出现的,C的数据类型有的数据类型有:C 的数据类型的数据类型 基本型基本型 (int)(int) 整型整型 短整型短整型 (short int)(short int) 长整型长整型 (long int)(long int) 无符号型无符号型 (unsigned int)(unsigned int) 基本类型基本类型 实型实型(浮点型浮点型) 单精度单精度 (float)(f

6、loat) 双精度双精度 (double)(double) 字符型字符型 (char) (char) 枚举型枚举型 (enum)(enum) 数组类型数组类型 (type ) (type ) 构造类型构造类型 结构体类型结构体类型 (struct) (struct) 共用体类型共用体类型 (union) (union) 指针类型指针类型 (type (type * *) ) 空类型空类型 (void) (void) 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础C语言的基本符号语言的基本符

7、号1. 基本符号基本符号: 26个英文字母个英文字母 包括包括大写和小写,大写和小写,C 中大小写字母被认为是两个不同的字符。中大小写字母被认为是两个不同的字符。 数字数字 09。 特殊符号:如特殊符号:如 初等量表达式操作符:初等量表达式操作符:( ),), ,. ,; 一元操作符:一元操作符:*,&,-,!,!,+ +,- -,sizeof( ); 二元操作符:二元操作符: , *,%,=,=, 1*24 +1*23 +0*22 +0*21 +1*20 = 16 + 8 + 0 + 0 + 1 = (25)10浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网

8、站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础1. 整型数椐在内存中存放形式整型数椐在内存中存放形式 数椐在内存中是以数椐在内存中是以二进制二进制形式存放的,每一个形式存放的,每一个整型变量整型变量在内存中占两个字节在内存中占两个字节。 如如 定义一个整型变量定义一个整型变量 i : int i=10; 10 的二进制表示为的二进制表示为1010, 内存中的存储形式为:内存中的存储形式为: 00000000 00001010实际上,在计算机中数值是以实际上,在计算机中数值是以补码补码表示的。一个表示的。一个正数正数的补码的补码和其原码相同,和其原码相同,负数的

9、补码负数的补码为其绝对值的二进制形式为其绝对值的二进制形式按位取反再加按位取反再加1。 例如,若例如,若 i=-10; 二进制表示为:二进制表示为:00000000 00001010 10的原码的原码 11111111 11110101 10的反码的反码 11111111 11110110 -10的补码的补码浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础补充补充 原码、反码、补码的概念原码、反码、补码的概念 原码原码 存储单元的最高位为符号位存储单元的最高位为符号位, ,其其0 0为正为正

10、,1,1为负为负, ,值为二进制值为二进制补码补码 补码补码= =反码反码+1反码反码 代码的代码的0 0变为变为1, 11, 1变为变为0 0注意注意 正数的原码、反码、补码是一样的正数的原码、反码、补码是一样的例例 (-10)10 1000 0000 0000 1010 - 原码原码 求反求反 1111 1111 1111 0101 - 反码反码 +1 1 - 1111 1111 1111 0110 - 补码补码 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础2. 整型变量的分类整型变

11、量的分类 可以根据数值的范围将整型变量定义为基本整型、短整型或长整型。可以根据数值的范围将整型变量定义为基本整型、短整型或长整型。 基本型基本型: 以以 int 表示,变量的值范围为表示,变量的值范围为 -3276832767。 短整型短整型: 以以 short int 或或 short 表示表示 长整型长整型: 以以 long int 或或 long 表示表示 为了充分利用变量的表数范围,可以不设符号位,而用全部二进为了充分利用变量的表数范围,可以不设符号位,而用全部二进位存放数据,只存放不带符号的整数,即定义位存放数据,只存放不带符号的整数,即定义无符号型无符号型。可以有无符。可以有无符号

12、整型号整型( unsigned int )、无符号短整型、无符号短整型( unsigned short )、无符号长整、无符号长整型型 ( unsigned long )。归纳起来,可以使用以下归纳起来,可以使用以下6 类整型变量:类整型变量: int unsigned int short int unsigned short int long int unsigned long intC 标准并没有具体规定以上各类数据所占内存字节数,只要求标准并没有具体规定以上各类数据所占内存字节数,只要求long型数据长度不短于型数据长度不短于int 型,型,short 型不长于型不长于int 型。型。浙

13、江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础例例1 整型变量的定义和使用整型变量的定义和使用 main( ) int a,b,c,d; /* 定义整型变量定义整型变量 */ unsigned int u; /* 定义无符号整型变量定义无符号整型变量 */ a=12; b=-24; u=10; c=a+u; d=b+u; printf(a+u=%d , b+u=%dn,c,d ); 运行运行结果结果:a+u=22, b+u=-14可以看到:不同种类的整可以看到:不同种类的整型数据可以进行算术

14、运算型数据可以进行算术运算.3. 整型变量的定义整型变量的定义(强制类型定义强制类型定义): int a, b; - a,b定义为整型定义为整型 unsigned short c, d; - c,d定义为无符号短整型定义为无符号短整型 long e, f; - e,f定义为长整型定义为长整型 变量定义一般放在函数的开头部分的变量定义一般放在函数的开头部分的声明部分声明部分。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 4. 整型数据的溢出整型数据的溢出 例例 2 整型数据的溢出整型数据

15、的溢出 main( ) int a,b; a=32767; b=a+1; printf(%d , %d , a,b ); a: 0111111111111111 32767b: 1000000000000000 -32768运行运行结果:结果: 32767 , -32768一个一个 整型变量只能容整型变量只能容纳纳 -3276832767 (-215 215-1 ) 范围范围内的数,无法表示大内的数,无法表示大于于32767 的数,遇此情的数,遇此情况就发生况就发生“溢出溢出”。(教材教材P43表表)浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitw

16、ww.Goit.Net.Net第第1讲讲C语言基础语言基础v 实型数据实型数据实型常量的表示法实型常量的表示法 C语言中的实数又称语言中的实数又称浮点数浮点数,有两种表示形式,有两种表示形式:1. 十进制数形式:十进制数形式:由数字和小数点组成(必须有小数点)。由数字和小数点组成(必须有小数点)。 如如 0.123 .123 123. 0.0 2. 指数形式指数形式:由数字、字母:由数字、字母E (或或 e ) 和小数点组成,且和小数点组成,且E 后面必须是后面必须是整数,整数,E 前面必须要有数字前面必须要有数字 。 如如 123e3 1.23e6 123.4E2 规范化的指数形式规范化的指

17、数形式:在字母:在字母e 或或E 之前的小数部分中,小数点左边之前的小数部分中,小数点左边有且只有一位非零数字。有且只有一位非零数字。如如 1.23e 选择题选择题:以下选项中,均是不合法的实型常量的选项是以下选项中,均是不合法的实型常量的选项是 ( )。A) 160. B) 123 C) -.18 D) -e3 0.12 2e4.2 123e4 .234 e3 . e5 0.0 1e3浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础实型变量实型变量1. 实型数据在内存中的存放形式实型数据在

18、内存中的存放形式 一个实型数据一般在内存中占用四个字节(一个实型数据一般在内存中占用四个字节(32位)位),按照指数形式,按照指数形式存储。存储。 例如,例如,3.14159 按照按照 “ +0.314159e1” 形式存储。形式存储。在在4个字节中,究竟用多少位来表示小数部分、多少位来表示指数个字节中,究竟用多少位来表示小数部分、多少位来表示指数部分,标准部分,标准C 并无具体规定,完全由各编译系统自定。小数部分占的位数并无具体规定,完全由各编译系统自定。小数部分占的位数越多,数的有效数字越多,精度越高。指数部分占的位数越多,则能表示越多,数的有效数字越多,精度越高。指数部分占的位数越多,则

19、能表示的数值范围越大。的数值范围越大。 单精度单精度float型(型(32 bit,67位有效数字)位有效数字) 2. 实型变量的分类实型变量的分类 双精度双精度double型(型(64 bit,1516位有效数字)位有效数字) 3. 实型变量的定义实型变量的定义: 每个实型变量也必须在使用之前定义每个实型变量也必须在使用之前定义 例如例如 float x,y; -定义定义 x 和和 y 为单精度型变量为单精度型变量 double z; -定义定义 z 为双精度型变量为双精度型变量 单精度与双精度只是数据的有效位数不同单精度与双精度只是数据的有效位数不同.。浙江科技学院教信系计算机基础教学网站

20、:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础4. 实型数据的舍入误差实型数据的舍入误差 由于实型变量是由有限的存储单元组成的,因此能提供的有效数由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,由此可能会产生误差字总是有限的,在有效位以外的数字将被舍去,由此可能会产生误差(四舍五入)。(四舍五入)。 例例3 main( ) float a,b; a=123456.789e5; b=a+20; printf( %f ,b); 运行结果:运行结果: 12345678848. 00

21、0000这是因为一个实型变量只能保证这是因为一个实型变量只能保证7位数字有效位数字有效。 注意:应避免将一个很大的数和一个很小的数相加或相减。注意:应避免将一个很大的数和一个很小的数相加或相减。 a:12345678900b:12345678920 ?浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础一、一、 字符常量字符常量 C的字符常量是指用的字符常量是指用单引号括起来的一个单引号括起来的一个字符字符, 如如 a, A, $ 等,等, 除上述字符常量之外,除上述字符常量之外,C中还允许一种

22、特殊字符常量,即以中还允许一种特殊字符常量,即以 开头的字符开头的字符序列,序列, 称为称为转义字符转义字符,意思是将,意思是将 “ ” 后面的字符转变成另外的意义。后面的字符转变成另外的意义。 n 换行换行 t 水平制表水平制表(跳到下一个跳到下一个tab位位) (一个一个tab位占位占8列列) v 竖向跳格竖向跳格(相当于换行相当于换行) b 退格,将当前位置移到前一列退格,将当前位置移到前一列 r 回车回车(到行首到行首,不换行不换行) f 走纸换页,将当前位置移到下页开头走纸换页,将当前位置移到下页开头 字符字符 “ ” 字符字符 “ ” ddd 13位八进制数所代表的字符位八进制数所

23、代表的字符 如如 074 xhh 12位十六进制数所代表的字符位十六进制数所代表的字符 如如 x74v 字符型数据字符型数据单引号单引号例例 A (65)10 = (101)8 101=A P374 换行符换行符 (10)10 = (12)8 012=n浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 选择题选择题:以下选项中,均是不合法的转义字符的选项是以下选项中,均是不合法的转义字符的选项是 ( )。A) B) 1011 C) 011 D) abc f 101 xf a x1f 选择题选

24、择题:以下选项中,正确的字符常量是以下选项中,正确的字符常量是 ( )。A) c B) C) 085 D) W 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础三、三、 字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法将一个字符常量存到一个字符变量中去,并不是把该字符本身放入内将一个字符常量存到一个字符变量中去,并不是把该字符本身放入内存单元之中,而是将该存单元之中,而是将该字符的相应的字符的相应的ASCII码码American national Standard

25、 Code for Information Interchange(美国国家信息交换标准代码)。(美国国家信息交换标准代码)。存放到存放到存储单元之中。存储单元之中。 例如例如: char c1, c2; c1=a; c2=b; 二、二、 字符变量字符变量 字符变量用来存放字符常量(字符变量用来存放字符常量(只能放一个字符只能放一个字符,而不是字符串)。,而不是字符串)。 字符变量的定义字符变量的定义: char c1, c2; 定义定义c1,c2为字符变量为字符变量内存中存放的不是内存中存放的不是a 和和 b,而,而是是 a 和和 b 的的ASCII码码 97 和和 98 由于字符数据以由于

26、字符数据以ASCII码存储,因此与整数有相同的形式,因此码存储,因此与整数有相同的形式,因此C 语语言中的言中的字符型数据和整型数据字符型数据和整型数据之间可以之间可以通用。通用。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础例例. char c1, c2;c1=a; 与与 c2=b; 对对c1、c2分别赋值,结果相同。分别赋值,结果相同。 至于是输出字符还是至于是输出字符还是整数取决于整数取决于格式控制符格式控制符。%d:十进制整型:十进制整型%c:字符型:字符型char c1, c2

27、;c1=97; c2=98;大小写字母转换。大小写字母转换。 main( ) char c1 , c2 ; c1=a ; c2=b ; c1=c1-32 ; c2=c2-32 ; printf(%c %c , c1 , c2) ; 从从ASCII码表中可以看到,码表中可以看到,每一个小写字母比它相应的大写每一个小写字母比它相应的大写字母的字母的ASCII大大32。因此有:。因此有:小写字母小写字母32 大写字母大写字母运行运行结果:结果: A B浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基

28、础四、四、 字符串常量字符串常量 v 字符串常量字符串常量:是一对是一对双引号双引号 括起来的括起来的字符序列字符序列。如如: How do you do. $123.45v字符串常量与字符常量字符串常量与字符常量: 字符常量是字符常量是一个字符一个字符,字符串常量是一对双引号,字符串常量是一对双引号 括起来的括起来的字符序列。字符序列。C 规定:在每一个字符串的结尾加一个规定:在每一个字符串的结尾加一个“字符串结束标志字符串结束标志”,以便系统椐,以便系统椐此判断字符串是否结束。此判断字符串是否结束。C 规定以字符规定以字符 0 作为字符串结束标志。作为字符串结束标志。 0 是是系统自动加上

29、的,在写字符串时不必加系统自动加上的,在写字符串时不必加 0 。a 与与 a 的区别的区别:字符串:字符串a实际上包含实际上包含2个字符:个字符:a 和和 0,占占2个字节;个字节;a占占1个字节。个字节。注意:注意:不要混淆字符常量与字符串常量不要混淆字符常量与字符串常量!字符串常量不能赋给一个字符变量。字符串常量不能赋给一个字符变量。如如: c=a; 是非法的,而应该是是非法的,而应该是 c=a;v C语言中的语言中的字符串用字符型数组来存放。字符串用字符型数组来存放。浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Ne

30、t第第1讲讲C语言基础语言基础 选择题选择题:以下选项中,均是正确的数值常量或字符常量的是以下选项中,均是正确的数值常量或字符常量的是 ( )。A) 0.0B) a C) 3 D) +001 0f 3.9E-205 011 0 xabcd 8.9e 1e1 0 xFF00 2e2 & 0a 50. 选择题选择题:下面不正确的字符串常量是下面不正确的字符串常量是 ( )。A) abcB) 1212 C) 0 D) 练习题练习题浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础v变量赋初值

31、变量赋初值程序中常常需要对一些变量预先设定初始值,程序中常常需要对一些变量预先设定初始值,C语言中规定,可以语言中规定,可以在在定义变量的同时使变量初始化定义变量的同时使变量初始化。如如 int i=3;float x=2.5;变量赋初值相当于变量定义与变量赋值两部分。变量赋初值相当于变量定义与变量赋值两部分。 如如: int i=3; 相当于相当于 int i; i=3;也可以使被定义的变量的一部分赋初值。也可以使被定义的变量的一部分赋初值。 如如: int a, b, c=5; (只对只对c 赋初值赋初值5) 如果对几个变量赋以同一个值,不能写成如果对几个变量赋以同一个值,不能写成int

32、a=b=c=3 ; 而应写成而应写成 int a=3,b=3,c=3 ; 变量初始化一般是在程序运行、执行本函数时赋予初值的。变量初始化一般是在程序运行、执行本函数时赋予初值的。而定义是在编译时执行的而定义是在编译时执行的浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础v各数据类型之间的混合运算各数据类型之间的混合运算高高 double -float 即即float必须先转换成必须先转换成double 以提高精度以提高精度(即使两个数同为即使两个数同为float long 型也必须转换为型也

33、必须转换为double后进行运算后进行运算) unsigned 低低 int - intint 实型赋给整型实型赋给整型, , 舍去小数舍去小数 i=3.56 - i=3i=3.56 - i=3不不“四舍五入四舍五入”B. int - floatB. int - float 数值不变数值不变, , 以浮点数形式储存以浮点数形式储存, , 补足补足0 0 f=23 - f=23.00000 f=23 - f=23.00000 ( (有效数字有效数字7 7位位) )浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲

34、C语言基础语言基础#include void main () int y; double d=3.4, x; x=(y=d/2.0)/2; printf(%0.2f,%d),x,y); getch();程序运行结果程序运行结果:A. (0.00,1) B.(0.85,1.7) C.(0.50,1) D. 以上都不对以上都不对例题例题v赋值运算符和赋值表达式赋值运算符和赋值表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础例:例: *=: a*=3 ; a=a*3 ; /=:x/=y+3

35、; x=x/(y+3);%=:a%=3 ; a=a%3 ;3. 复合的赋值运算符复合的赋值运算符 在赋值运算符之前加上其它运算符可以构成复合运算符在赋值运算符之前加上其它运算符可以构成复合运算符。 如如: 在在 = 之前加上之前加上 +, 则构成则构成 +=。 a+=3 相当于相当于 a=a+3 含义是含义是: a+=表达式表达式 相当于相当于 a=a+表达式表达式 如果表达式是由多项构成,则相当于有括号,即如果表达式是由多项构成,则相当于有括号,即 a=a+(表达式表达式) 凡是二元(二目)运算符都可以与凡是二元(二目)运算符都可以与 “ = ” 一起组成赋值运算。一起组成赋值运算。 C 语

36、言中规定可以用语言中规定可以用10 种复合赋值运算符种复合赋值运算符:+= -= *= /= %= = &= = |=浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础4. 赋值表达式赋值表达式v什么是什么是 赋值表达式赋值表达式 ?由(单一或复合)赋值运算符将一个变量和一个表由(单一或复合)赋值运算符将一个变量和一个表达式连接起来的式子。达式连接起来的式子。v一般形式一般形式: v 赋值表达式的求解过程是赋值表达式的求解过程是:先对运算符右侧的表达式求值,再将该值赋给运算符左边的变量

37、。先对运算符右侧的表达式求值,再将该值赋给运算符左边的变量。v赋值表达式的值:赋值表达式的值:就是被赋值的变量的值。就是被赋值的变量的值。 如如: a=5 的值是的值是5。v这里这里既可以是一个普通的表达式,也可以是一个赋值表达式。既可以是一个普通的表达式,也可以是一个赋值表达式。 如如: a=(b=5) 即表示即表示 b=5 和和 a=5由于赋值运算符是由于赋值运算符是自右至左结合自右至左结合,因此,因此 a=(b=5) 等价于等价于 a=b=5 例:例: a=(b=4)+(c=6)c=6 , b=4 , a=10a=(b=10)/ (c=2)c=2 , b=10 , a=5例:例: 有表达

38、式有表达式 a+=a-=a*a ,设,设 a=12,求,求 运行结果。运行结果。 (1) a-=a*a ,即,即a=a-a*a=-132 (2) a+=a ,即,即a=a+a=-264注意注意:如果在赋值表达式后面加上如果在赋值表达式后面加上 “ ; ” ,则成为赋值语句。,则成为赋值语句。浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础v逗号运算符和逗号表达式逗号运算符和逗号表达式用用 “ , ” 将两个表达式连接起来所构成的表达式称为逗号表达式将两个表达式连接起来所构成的表达式称为逗号表

39、达式。 如如: 3+5 , 6+8 逗号表达式的一般形式逗号表达式的一般形式: 表达式表达式1 , 表达式表达式2求解过程求解过程: 先求表达式先求表达式1的值,再求表达式的值,再求表达式2的值,的值,整个表达式的值是表整个表达式的值是表达式达式2 的值。的值。 如上式,结果是如上式,结果是14 又如:又如: a=3*5,a*4 结果是结果是a= 15, 表达式值是表达式值是60。一个逗号表达式可以与另一个逗号表达式组成新的逗号表达式。一个逗号表达式可以与另一个逗号表达式组成新的逗号表达式。 如:如: (a=3*5,a* 4) , a+5 即:即:(1) a=15 (2) ( 15 , 60)

40、 = 值为值为 60 (3) 60 ,20 = 整个表达式的值为整个表达式的值为 20 例:例: (1) x=(a=3,6*a) (2) x=a=3,6*a赋值表达式:赋值表达式:a为为 3 ,x 为为18 ;逗号表达式:逗号表达式:x为为 3,a为为 3。浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 逗号表达式可以推广到多个表达式的情况逗号表达式可以推广到多个表达式的情况 表达式表达式1 , 表达式表达式2, . , 表达式表达式n 它的值是它的值是 表达式表达式n 的值。的值。 由于

41、由于逗号运算符是所有运算符中级别最低的逗号运算符是所有运算符中级别最低的,因此书写表,因此书写表达式时要注意求解的次序。达式时要注意求解的次序。 注意:并非所有的注意:并非所有的 , 都是运算符都是运算符 如如: printf(%d,%d,%d,a,b,c); -这里的这里的, 都只是分隔符都只是分隔符 而而 printf(%d,%d,%d, (a,b,c), b, c); -这里这里(a,b,c)中的中的,是运算符是运算符v逗号运算符和逗号表达式逗号运算符和逗号表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第

42、第1讲讲C语言基础语言基础选择题选择题:下面符合下面符合C 语言语法的赋值表达式是语言语法的赋值表达式是 ( )。 A) d=9+e+f=d+9 B) d=9+e, f=d+9 C) d=(9+e, e+, d+9) D) d=9+e+=d+7 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础v关系运算符和表达式关系运算符和表达式一、关系运算符及优先级别一、关系运算符及优先级别 比较两个量的运算符称为关系运算符。比较两个量的运算符称为关系运算符。 在语言中有以下在语言中有以下关系运算符:关系

43、运算符: 小于,小于, = 大于大于 = 大于或等于大于或等于 = 等于等于 !=!= 不等于不等于 关系运算符的优先级:关系运算符的优先级:(1) (1) 、=、 、=c-d x3/2 a+1(bc), a!=(c=d) 等也都是合法的关系表达式。等也都是合法的关系表达式。二、关系表达式二、关系表达式v关系运算符和表达式关系运算符和表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础条件运算符为条件运算符为 ? : 它是一个三目运算符,即有三个参与运算它是一个三目运算符,即有三个参与运算

44、的量。由条件运算符组成的量。由条件运算符组成条件表达式的一般形式为条件表达式的一般形式为: 表达式表达式1? 表达式表达式2 :表达式表达式3 其求值规则如右图:其求值规则如右图:例如条件语句:例如条件语句: if(ab) max=a; else max=b; 可用条件表达式写为可用条件表达式写为 : max=(ab)?a:b; v条件运算符和条件表达式条件运算符和条件表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础使用条件表达式时,还应注意以下几点:使用条件表达式时,还应注意以下几点

45、: 1. 条件运算符的运算优先级条件运算符的运算优先级 低 于 关 系 运 算 符 和 算 术 运 算 符 , 高 于 赋 值 符 。低 于 关 系 运 算 符 和 算 术 运 算 符 , 高 于 赋 值 符 。 因 此因 此 max=(ab)?a:b可以去掉括号而写为可以去掉括号而写为 max=ab?a:b2. 条件运算符条件运算符? :是一对运算符,不能分开单独使用。:是一对运算符,不能分开单独使用。3. 条件运算符的条件运算符的结合方向是自右至左。结合方向是自右至左。例如:例如: ab?a:cd?c:d 应理解为应理解为 ab?a:(cd?c:d) 这也就是条件表达式嵌套的情形,即其中这

46、也就是条件表达式嵌套的情形,即其中的表达式的表达式3又是一个条又是一个条件表达式。件表达式。 v条件运算符和条件表达式条件运算符和条件表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础例例main()char ch; scanf(%c,&ch); ch=(ch=A & ch=A & chb & cd等价于等价于(ab) & (cd) !b=c|da等价于等价于(!b)=c)|(dc & x+yc) & (x+y)0 & 42

47、,由于由于50为真,为真,42也为真,其结果也也为真,其结果也为为“真真”,表达式的值为,表达式的值为1。(2)或运算)或运算| 参与运算的两个量只要有一个为真(非参与运算的两个量只要有一个为真(非0),结果就为真),结果就为真(值为(值为1)。)。 两个量都为假(值为两个量都为假(值为0)时,结果为假(值为)时,结果为假(值为0)。)。例如:例如:50 | 58, 结果也就为真(值为结果也就为真(值为1)。)。v逻辑运算符和表达式逻辑运算符和表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语

48、言基础(3)非运算)非运算! 参与运算量为真(非参与运算量为真(非0)时,结果为假(值为)时,结果为假(值为0);参与运);参与运算量为假(值为算量为假(值为0)时,结果为真(值为)时,结果为真(值为1)。)。 例如:例如:!(50)的结果为假(值为的结果为假(值为0)。)。 注意:注意:语言在逻辑运算值时,以语言在逻辑运算值时,以“1”代表代表“真真”,“0 ”代表代表“假假”。 在判断一个量是为在判断一个量是为“真真”还是为还是为“假假”时,以时,以“0”代表代表“假假”,以非,以非“0”的数值作为的数值作为“真真”。 例如:例如:5&3 的值为的值为“真真”,即为,即为1。 又如

49、:又如:5|0的值为的值为“真真”,即为,即为1。 v逻辑运算符和表达式逻辑运算符和表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础二、逻辑表达式二、逻辑表达式 逻辑表达式的一般形式为:逻辑表达式的一般形式为: 表达式表达式 &或或 | 表达式表达式 !表达式!表达式 逻辑表达式的值:各种逻辑运算的最后值,逻辑表达式的值:各种逻辑运算的最后值, 以以“1”和和“0”分别代表分别代表“真真”和和“假假”。 例如:例如: char c=k; int i=1,j=2,k=3; pri

50、ntf(%d n, i=5&c&(j=8); printf(%d n, x+y|i+j+k); v逻辑运算符和表达式逻辑运算符和表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础说明说明: 在逻辑表达式的求解中,并不是所有的逻辑运算符都执在逻辑表达式的求解中,并不是所有的逻辑运算符都执行,只有在必须执行下一个逻辑运算符才能求出表达式的值行,只有在必须执行下一个逻辑运算符才能求出表达式的值时,才执行下一个运算符。时,才执行下一个运算符。 (1) 表达式表达式1 &

51、表达式表达式2 a+b0 & b+ 如果:表达式如果:表达式1的值是的值是0,无论表达式,无论表达式2的值是什么,整个的值是什么,整个表达式的值都为表达式的值都为0,因此表达式,因此表达式2就不计算了。就不计算了。 (2)表达式表达式1 | 表达式表达式2 a+b0 | b+ 如果:表达式如果:表达式1的值是的值是1,无论表达式,无论表达式2的值是什么,整个的值是什么,整个表达式的值都为表达式的值都为1,因此表达式,因此表达式2就不计算了。就不计算了。v逻辑运算符和表达式逻辑运算符和表达式浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww

52、.Goit.Net.Net第第1讲讲C语言基础语言基础判断题:判断题: 表达式表达式 !x 等价于等价于 x!=1 表达式表达式 (z=0,(x=2)|(z=1),z) 的值是的值是 1 填空题:填空题: 执行表达式执行表达式 (z=0,(x=2)|(z=1),z)后变量后变量z 的值是的值是 v逻辑运算符和表达式逻辑运算符和表达式0浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 选择题选择题1:设设x, t 均为均为int 型变量,则执行以下语句后,型变量,则执行以下语句后,t 的值是的

53、值是 ( ).x=10; t=x&x10;A) 不定值不定值B) 10 C) 1 D) 0 选择题选择题2:设设x, y, z, t 均为均为int 型变量,则执行以下语句后,型变量,则执行以下语句后,t 的值是的值是 ( ).x=y=z=1; t=+x|+y&+z;A) 不定值不定值B) 2 C) 1 D) 0 v逻辑运算符和表达式逻辑运算符和表达式 选择题选择题3:设有整型变量设有整型变量 a,b,c, 其中其中 a,b 的值分别为的值分别为 10 与与 20, 计算表达式计算表达式 “ “c=(a%2=0)?a:b”后后 ,c 的值为的值为_A、 0 B、 5 C、10

54、D、20 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础位运算位运算 进行进行二进制位的运算二进制位的运算 。 运运 算算 符符 含含 义义& 按位与按位与| 按位或按位或 按位异或按位异或(一目运算符)(一目运算符) 按位取反按位取反 右移运算符右移运算符v位运算符和位运算位运算符和位运算说明:说明: 位运算符中除了位运算符中除了 以外,均为二目(元)运算符,即要以外,均为二目(元)运算符,即要求两侧各有一个运算量。求两侧各有一个运算量。 高于关系运算高于关系运算“ ,=”,底于

55、算术运算符,底于算术运算符“+,-” &底于关系运算底于关系运算“=, !=”,高于逻辑运算符,高于逻辑运算符“&” 运算量运算量只能是整型或字符型数据,不能为实型数据只能是整型或字符型数据,不能为实型数据 。高高底底浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础一一 、 “按位与按位与”运算符运算符 (&)参与运算的两个数据,按二进制参与运算的两个数据,按二进制位位进行进行“与与” 运算。运算。 运算规则运算规则 : 相应位都为相应位都为1 时,该位相与的结果为时

56、,该位相与的结果为1,否则为,否则为0,即,即 0 & 0 = 0 1 & 0 = 0 0 & 1 = 0 1 & 1 = 1 例如:例如:3 & 5 3 = 0 0 0 0 0 0 1 1 & 5 = 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 值为值为1 例如:例如: (-3) & ( -5) 先用补码表示,然后运算。先用补码表示,然后运算。(-3)= 1 1 1 1 1 1 0 1 & (-5)= 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1v位运算符和位运算位运算符和位运算浙江科技学院

57、教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 用途用途 : 清零:用清零:用 0 去去“与与”某一位,使某一位,使该位清零该位清零。 如想将一个单元清零,即如想将一个单元清零,即使其全部二进制位为使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件,只要找一个二进制数,其中各个位符合以下条件:原来数中为:原来数中为1 的位,新数中相应位为的位,新数中相应位为0,然后使二者进行,然后使二者进行& 运算运算 即可。即可。例如:使低例如:使低4 位为位为01 1 0 1 1 0 0 1

58、 & 1 1 1 1 0 0 0 01 1 0 1 0 0 0 0 低低4位为位为0 保留一个数中的某些位。用保留一个数中的某些位。用 1 去去“与与”某一位,某一位,保留该位保留该位。如:保留低如:保留低4位位1 0 1 0 1 1 0 0 & 0 0 0 0 1 1 1 10 0 0 0 1 1 0 0 保留低保留低4位位 v位运算符和位运算位运算符和位运算浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础 保留其中某些位,将它与这些位为保留其中某些位,将它与这些位为1 的

59、数作的数作“与与”运算。运算。 例如:有一数例如:有一数01010100,想保留其左起的第,想保留其左起的第 3、4、5、7、8 位,位,0 1 0 1 0 1 0 0 & 0 0 1 1 1 0 1 10 0 0 1 0 0 0 0计算机中的控制字各个位表示某些设备的状态,状态发生变计算机中的控制字各个位表示某些设备的状态,状态发生变化,各个位通过化,各个位通过位运算位运算改变数值。改变数值。v位运算符和位运算位运算符和位运算浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goit.Net.Net第第1讲讲C语言基础语言基础二、二、

60、 按位或运算符(按位或运算符(| ) 两个数的相应位两个数的相应位按位或按位或(1) 运算规则:运算规则: 相应位只要有一个为相应位只要有一个为1 ,该位相或的结果就为,该位相或的结果就为1,否则为,否则为0 , 即即 0 | 0 = 0 1 | 0 = 1 0 | 1 = 1 1 | 1 = 1例如:例如:1 1 0 1 1 0 0 1 |0 0 0 0 1 1 1 11 1 0 1 1 1 1 1(2) 用途:用途:用用 1去与某些位去与某些位“或或”,使某些位为使某些位为 1。例如:。例如:1 1 0 1 1 0 0 1 |0 0 0 0 1 1 1 11 1 0 1 1 1 1 1 低低 4 位为位为 1 用用 0去与某些位去与某些位“或或”,保留原位保留原位。例如:上例中例如:上例中 前前4 位保留原位位保留原位v位运算符和位运算位运算符和位运算浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goitwww.Goi

温馨提示

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

评论

0/150

提交评论