好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

c语言第2章c语言基础.ppt

61页
  • 卖家[上传人]:公****
  • 文档编号:571763587
  • 上传时间:2024-08-12
  • 文档格式:PPT
  • 文档大小:755.50KB
  • / 61 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    •                          第2章 C语言基础 1本章本章要求:要求:Ø理解变量与常量的概念、掌握变量的定义和使用;理解变量与常量的概念、掌握变量的定义和使用;Ø掌握常用数据类型的数据在内存中的存放形式;掌握常用数据类型的数据在内存中的存放形式;Ø掌掌握握算算术术运运算算符符、、关关系系运运算算符符、、逻逻辑辑运运算算符符、、赋赋值值运运算算、、逗号运算规则及优先级别;逗号运算规则及优先级别;Ø掌握各种表达式的运算及简单的运用;掌握各种表达式的运算及简单的运用;本章本章难点:难点: 各种数据类型的数据在内存中的存放形式各种数据类型的数据在内存中的存放形式本章本章重点:重点: 变量与常量的概念、各种表达式的运算变量与常量的概念、各种表达式的运算第第2章章  C语言基础语言基础                           第2章 C语言基础 2第第2章章  基本的程序基本的程序语句句 一、一、CC语言的数据类型语言的数据类型二、二、  常量常量三、三、  变量变量四、四、 运算符与表达式运算符与表达式五、五、  数据类型转换数据类型转换                          第2章 C语言基础 31 1、、 C语言数据类型概述C语言数据类型概述 一、C一、C语言的数据言的数据类型型        数据的组织形式是数据结构,数据结构的表现形式是数据的组织形式是数据结构,数据结构的表现形式是数据类型数据类型,在程序中表现数据必须指定其数据类型。

      在程序中表现数据必须指定其数据类型        数据类型决定数据在内存的空间大小,数据的表示形数据类型决定数据在内存的空间大小,数据的表示形式,数据的取值范围以及可参与运算的种类式,数据的取值范围以及可参与运算的种类        C语言的数据类型丰富,可以表示复杂的数据结构语言的数据类型丰富,可以表示复杂的数据结构                          第2章 C语言基础 4    数据类型数据类型基本类型基本类型整型整型实型实型 (浮点型浮点型)字符型字符型枚举类型枚举类型单精度单精度双精度双精度构造类型构造类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型指针类型指针类型空类型空类型一、C一、C语言的数据言的数据类型型(int)(char)(float)(double)(void)                          第2章 C语言基础 5C语言中的数据有语言中的数据有常量常量和和变量变量之分        常量常量是在程序运行过程中,其值不能被改变的量是在程序运行过程中,其值不能被改变的量        变量变量是在程序运行过程中,其值可以被改变的。

      是在程序运行过程中,其值可以被改变的        常量和变量是数据的外在存储形式,数据最终以这两种方常量和变量是数据的外在存储形式,数据最终以这两种方常量和变量是数据的外在存储形式,数据最终以这两种方常量和变量是数据的外在存储形式,数据最终以这两种方式之一出现,但它们都要归属于某种数据类型式之一出现,但它们都要归属于某种数据类型式之一出现,但它们都要归属于某种数据类型式之一出现,但它们都要归属于某种数据类型          变量是在程序中定义的,代表变量是在程序中定义的,代表某个存储空间及其某个存储空间及其所存储的数据所存储的数据一、C一、C语言的数据言的数据类型型                          第2章 C语言基础 62 2、、 基本数据类型基本数据类型 基本数据类型是构成基本数据类型是构成C语言的数据类型的最基本要素语言的数据类型的最基本要素包括:包括:整型整型((intint)) 实型实型((float float 和和 doubledouble)) 字符型字符型((charchar))例如:整型数据的取值和取值范围例如:整型数据的取值和取值范围类型说明符类型说明符                                 数的范围数的范围                                   分配字节数分配字节数 int                                            -32768~32767                                         2字节字节 short int/short                           -32768~32767                                      2字节字节 long                                     -2147483648~2147483647                         4字节字节unsigned int /unsigned                      0~65535                                       2字节字节unsigned short int                               0~65535                                      2字节字节unsigned long  int                           0~4294967295                                4字节字节注意:注意:注意:注意:VisualC++6.0VisualC++6.0中,基本整型与长整型所占字节中,基本整型与长整型所占字节中,基本整型与长整型所占字节中,基本整型与长整型所占字节数及表示范围对应相同。

      数及表示范围对应相同数及表示范围对应相同数及表示范围对应相同一、C一、C语言的数据言的数据类型型                          第2章 C语言基础 7二、二、 常量常量(一)数值常量(一)数值常量 1.1.整型常量整型常量           在C语言中,使用的整常数有在C语言中,使用的整常数有八进制八进制、、十六进制十六进制和和十进制十进制三种 ((1 1)). .十进制整常数十进制整常数               237    -568    0    1627 ((2 2)). .八进制整常数八进制整常数           八进制整常数必须以八进制整常数必须以0开头,即以开头,即以0作为八进制数的前缀作为八进制数的前缀               015(十进制为十进制为13)   0101(十进制为十进制为65)                        079 和和  08001不合法的八进制数不合法的八进制数定义定义: : 在程序运行时,其值不能被改变的量叫常量在程序运行时,其值不能被改变的量叫常量 如如 5, 3.14159, 5, 3.14159, ‘‘a a’’ 等等                          第2章 C语言基础 8二、二、 常量常量        ((3 3)).   十六进制整数的前缀为十六进制整数的前缀为0X0X。

      0X0X2A(2A(十进制为十进制为42) 42) 0X0XA0 (A0 (十进制为十进制为160)160) 0X0XFFFF (FFFF (十进制为十进制为65535)65535) 以下各数是以下各数是不合法不合法的十六进制整常数:的十六进制整常数: 5A 0X3H5A 0X3H若要表示长整型(若要表示长整型(long)整数,整数,在数的最后加表示长整型在数的最后加表示长整型的后缀修饰符号字母的后缀修饰符号字母““l”l” 如:如:125        0125l      0X0X125l  等价于等价于125、、(125)8、、(125)16           思考:思考:2525和和25l25l的区别?的区别? 说明:说明:前前者者用用2字字节节存存储储,,后后者者则则使使用用4个个字节存储字节存储                          第2章 C语言基础 9(二)(二)实型常量实型常量实实型型也也称称为为浮浮点点型型。

      实实型型常常量量也也称称为为实实数数或或者者浮浮点点数数在在CC语言中,实数只采用十进制语言中,实数只采用十进制               它有两种形式:它有两种形式:    小数形式小数形式与与指数形式指数形式((1 1)). .小数形式小数形式 由数码由数码0 - 90 - 9和小数点组成和小数点组成例如:例如:0.123 .123 123.0 -1230.123 .123 123.0 -123等均为合法的实数等均为合法的实数2 2)). .指数形式指数形式 由十进制数,加阶码标志由十进制数,加阶码标志““e”e”或或““E”E”以及阶码组成以及阶码组成 其一般形式为其一般形式为a E n a E n 值为值为 a*10a*10±n n二、二、 常量常量                          第2章 C语言基础 10二、二、 常量常量例如:例如:1.25E+3            1.25e+3            1.25××103 1250.0说明说明::Ø当幂为正数时,正号可以省略。

      即当幂为正数时,正号可以省略即1.25E+3等价于等价于1.25E3;Ø同同一一个个实实数数可可以以有有多多种种表表示示形形式式,,例例如如::1250.0可可以以用用0.0125E+5,,0.125E+4,,1.25E+3,,12.5E+2, 125E+1Ø字母字母e(或或E)之前必须有数字,且之前必须有数字,且e后面指数必须为整数后面指数必须为整数a E n                          第2章 C语言基础 11二、常量二、常量(三)字符常量(三)字符常量字字 符符 常常 量量 是是 用用 单单 引引 号号 括括 起起 来来 的的 一一 个个 字字 符符 例例 如如'a','b','=','+','?'都是合法字符常量都是合法字符常量         在C语言中,字符常量有以下特点:在C语言中,字符常量有以下特点:    1.字字符符常常量量只只能能用用单单引引号号括括起起来来,,不不能能用用双双引引号号或或其其它它括号;括号;    2.字符常量只能是单个字符,不能是字符串字符常量只能是单个字符,不能是字符串;;    3.字字符符可可以以是是字字符符集集中中任任意意字字符符。

      但但数数字字被被定定义义为为字字符符型之后就不能参与数值运算型之后就不能参与数值运算如如'5'和和5 是不同的是不同的                          第2章 C语言基础 12 二、二、 常量常量(四)字符串常量(四)字符串常量C语言中的字符串常量是由一对语言中的字符串常量是由一对双引号双引号括起来的字符序列括起来的字符序列每个字符串最后有一结束标志每个字符串最后有一结束标志 ' \0'例如:例如: "ABC",   "A",  "123lkdf "        字符串常量在内存中存储时,系统自动在字符串的末字符串常量在内存中存储时,系统自动在字符串的末尾加一个尾加一个“串结束标志串结束标志“,,因此在程序中,因此在程序中,长度为长度为n n个字符个字符的字符串常量,在内存中占有的字符串常量,在内存中占有n+1n+1个字节的存储空间个字节的存储空间                           第2章 C语言基础 13二、二、 常量常量例如例如 ::  'a'与与"a"是是C语言中两种完全不同类型的数据语言中两种完全不同类型的数据aa \0'a'与与"a"在内存的存储形式在内存的存储形式注意注意::不要将不要将字符常量字符常量和和字符串常量字符串常量混淆混淆例如,字符串例如,字符串“ABCDEF”有有6 6个字符,个字符,存储于内存中时,共占存储于内存中时,共占7 7个字节个字节 ,最后一个字节为,最后一个字节为" \0 "                          第2章 C语言基础 14(五)转义字符(五)转义字符       转转义义字字符符是是一一种种特特殊殊的的字字符符常常量量。

      转转义义字字符符以以反反斜斜线线“\”开头,后跟一个或几个字符开头,后跟一个或几个字符       转转义义字字符符主主要要用用来来表表示示那那些些用用一一般般字字符符不不便便于于表表示示的的控控制制代码常用的转义字符及其含义:代码常用的转义字符及其含义:(p12)        转义字符转义字符         转义字符的意义转义字符的意义\n              回车换行回车换行       \t        横向跳到下一制表位置横向跳到下一制表位置\v              竖向跳格竖向跳格                 \b              退格退格\r              回车回车                         \f              走纸换页走纸换页\\              反斜线符反斜线符“\”            \'              单引号符单引号符\a              鸣铃鸣铃       \ddd            三位八进制数的值所代表的三位八进制数的值所代表的ASCII字符字符\xhh            两位十六进制数所代表的两位十六进制数所代表的ASCII字符字符二、二、 常量常量                          第2章 C语言基础 15例:例:main( ){  printf(“a b c\td e\bfghi\n”);printf(“a=65 b=\101 c=\x41\n”);}输出结果输出结果:a b  cd e fghia=65  b=A   c=A二、二、 常量常量                          第2章 C语言基础 16(六)符号常量(六)符号常量符号常量符号常量: : 可以使用一个符号表示一个可以使用一个符号表示一个多次常用多次常用的常量的常量 C C 语言中使用命令语言中使用命令#define#define来定义:来定义: 格式:格式: #define #define 符号常量名标识符符号常量名标识符 常数表达式常数表达式   优点:优点: 符号常量使程序易于阅读和修改。

      符号常量使程序易于阅读和修改例如,一个程序中多处用到学生人数例如,一个程序中多处用到学生人数6060,当有学生人数改变,当有学生人数改变为为6565,修改这个程序很困难而使用符号常量,只要将,修改这个程序很困难而使用符号常量,只要将 #define NUM 60 #define NUM 60 改为改为 #define NUM 65#define NUM 65,,就可以了就可以了 无分号无分号二、二、 常量常量                          第2章 C语言基础 17例:求一个半径为例:求一个半径为r的球的体积和表面积的的球的体积和表面积的C程序程序#define  PI  3.14159       /* 定义定义PI为符号常量,值为为符号常量,值为3.1415 */void main( ){ float v,s,r;    scanf(“%f”,&r);    v=4.0/3.0*PI*r*r*r    s=4*PI*r*r;  printf("v=%f, s=%f\n",v,s);}说明说明::      ((1)符号常量名常常用大写字)符号常量名常常用大写字母、变量名用小写字母。

      母、变量名用小写字母      ((2)符号常量不能在其作用域)符号常量不能在其作用域范围内重新赋值范围内重新赋值二、二、 常量常量                          第2章 C语言基础 18三、三、 变量量 (一)(一) 变量的定义变量的定义简单定义简单定义:在程序运行时,其值能被在程序运行时,其值能被改变改变的量叫变量的量叫变量变量包括:变量包括:一个名字一个名字和和相应的数据类型相应的数据类型        通过名字来引用一个变量,而数据类型则决定了该变通过名字来引用一个变量,而数据类型则决定了该变量的存储方式和在内存中占据存储单元的大小量的存储方式和在内存中占据存储单元的大小 说明:说明:变量名变量名和和变量值变量值这两个概念的区别这两个概念的区别           定义:定义: int  x=20;                          第2章 C语言基础 19    C语言中使用的变量都要作类型强制定义,即要求语言中使用的变量都要作类型强制定义,即要求“先定先定义,后使用义,后使用”的原则     其目的:其目的:1)保证程序中变量名使用的正确性)保证程序中变量名使用的正确性                      2)编译程序为其分配相应的储存单元)编译程序为其分配相应的储存单元                      3)保证运算的合法性)保证运算的合法性      定义形式:定义形式:类型说明符类型说明符 变量名列表变量名列表; ;三、三、 变量量                          第2章 C语言基础 20实型变量:实型变量:   1.  单精度实型单精度实型:float   a;             4个字节个字节   2.  双精度实型双精度实型:double   a;         8个字节个字节char ch ;;             /*定义定义ch为字符型变量为字符型变量 */int i,j;             /*定义定义i,j为基本整型变量为基本整型变量 */long k,n,m;          /*定义定义k,n,m为长整型变量为长整型变量 */float x,y,z;         /*定义定义x,y,z单精度实型变量单精度实型变量 */double sum,t;        /*定义定义sum,t双精度实型变量双精度实型变量 */三、三、 变量量                          第2章 C语言基础 21(二)(二)变量的赋初值变量的赋初值 C C语言中,当定义一个变量后,系统只是按定义的数语言中,当定义一个变量后,系统只是按定义的数据类型分配其相应的存储单元,据类型分配其相应的存储单元,并不对其单元初始化并不对其单元初始化,如,如果在果在赋初值之前直接使用该变量,则是一个不定值赋初值之前直接使用该变量,则是一个不定值 。

      例如:例如:void main( ){    int k;     printf(“k=%d\n”,k);  }程序运行,输出程序运行,输出k的值就是一个无意义的的值就是一个无意义的不定值,并在不同系统不定值,并在不同系统环境下运行的结果也可环境下运行的结果也可能完全不同能完全不同三、三、 变量量                          第2章 C语言基础 22赋初值的一般形式为:赋初值的一般形式为:       ((1))类型说明符类型说明符     变量变量1=值值1,变量,变量2=值值2,,……;;      ((2))类型说明符类型说明符     变量变量1,,变量变量2,,变量变量3;;                                         变量变量1=值值1;变量;变量2=值值2;;……                           例如:例如:            int a=10,b=10,c=10;;      等价于等价于      int a,b,c;    a=10; b=10;c=10;注意:注意:在在说明说明中中不允许连续赋值不允许连续赋值,但在,但在变量定义变量定义后,可以后,可以 使使用用连续赋值连续赋值语句初始化语句初始化 ;;                       三、三、 变量量        如:如: int  a=b=c=1;   是不合法的;是不合法的;                int  a,b,c;     a=b=c=1;是合法的是合法的                          第2章 C语言基础 231.一个字符变量存放字符常量,在内存中是以一个字符变量存放字符常量,在内存中是以ASCII 码码的形的形式式 存存 储的。

      储的字符数据在内存中的存储形式及其使用方法:字符数据在内存中的存储形式及其使用方法:2.字符型数据与整型数据的关系字符型数据与整型数据的关系:二者可以进行转换二者可以进行转换1)一个字符数据既可以字符形式输出,也可以整数据形式输出一个字符数据既可以字符形式输出,也可以整数据形式输出2)二者可以互相赋值二者可以互相赋值3)字符型数据可以进行算术运算字符型数据可以进行算术运算三、三、 变量量                          第2章 C语言基础 24例例 1main( ){  char c1,c2;  int i;  c1=65;c2=66;i=‘C’;  printf(“%c,%c\n”,c1,c2);  printf(“%d,%d\n”,c1,c2);  printf(“%d,%c”,i,i);}例例 2main( ){  char ch;  int i;  ch=‘A’;  ch=ch+32;  i=ch;  printf(“%d is %c\n”,i,ch);  printf(“%c is %d\n”,ch,ch);}三、三、 变量量                          第2章 C语言基础 25四、四、  运算符与表达式运算符与表达式 C C语言中的运算符语言中的运算符语言中的运算符语言中的运算符 : :        C语言中运算符和表达式数量之多,C语言中运算符和表达式数量之多, 在高级语言中是少在高级语言中是少见的见的,正是丰富的运算符和表达式使C语言功能十分完善。

      正是丰富的运算符和表达式使C语言功能十分完善 这也是这也是C语言的主要特点之一语言的主要特点之一Ø 运算符的种类运算符的种类        C语言的运算符共有语言的运算符共有十三类十三类                          第2章 C语言基础 26常用运算符及表达式:常用运算符及表达式:常用运算符及表达式:常用运算符及表达式:                                                        算术运算符算术运算符        根据运算符的性质分类根据运算符的性质分类        逻辑运算符逻辑运算符                                                        关系运算符关系运算符                                                        赋值运算符赋值运算符                                                        位运算位运算                                                                                       单目运算符单目运算符     根据所需的运算对象即操作数的个数分类根据所需的运算对象即操作数的个数分类          双目运算符双目运算符                                                                                        三目运算符三目运算符 四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 27运算运算——对数据的加工(基本操作)。

      对数据的加工(基本操作)运算符运算符——描述运算的符号,即操作符描述运算的符号,即操作符运算量运算量——操作数,被运算的对象(数据)操作数,被运算的对象(数据)表达式表达式——由运算符和运算量组成的式子由运算符和运算量组成的式子        CC语语言言的的运运算算符符不不仅仅具具有有不不同同的的优优先先级级,, 而而且且还还有有一一个个特点,就是它的特点,就是它的结合性结合性        因此,在表达式中,各运算量参与运算的先后顺序不仅因此,在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符要遵守运算符优先级优先级的规定,还要受运算符的规定,还要受运算符结合性结合性的制约,的制约,以便确定是自左向右进行运算还是自右向左进行运算以便确定是自左向右进行运算还是自右向左进行运算四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 28(一)算术运算符与算术表达式(一)算术运算符与算术表达式 ((1 1)) C C语言的基本算术运算符:语言的基本算术运算符:    加法    加法 + +    减法    减法 - -    乘法    乘法 * *    除法    除法 / / 求余求余 % % 其中:求余其中:求余% %运算要求两个运算量均为运算要求两个运算量均为intint 当当““/”/”被用于整数或字符被用于整数或字符时时,,结结果取整果取整 例如:例如:5/25/2结果=结果=2 2,,1/21/2的结果=的结果=0 0 1.  关于关于 %的说明:的说明:     运算符运算符%两边的操作数必须为整数两边的操作数必须为整数     结果为两操作数整除后的余数结果为两操作数整除后的余数     余数的符号与被除数符号相同余数的符号与被除数符号相同     例如:例如:        12  % (-7) =  5                      (-12) %   7   = -52.  关于关于 / 的说明:的说明:     如果两操作数均为整数,则其结果为整数如果两操作数均为整数,则其结果为整数     如果其中一个操作数为实型数,则其结果为如果其中一个操作数为实型数,则其结果为 double 型。

      型     例如:例如:          6    / 4 = 1                           6.0 / 4 = 1.500000四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 29++,,- -运算符为单目运算,运算符为单目运算,要求运算对象只能是要求运算对象只能是要求运算对象只能是要求运算对象只能是变量变量变量变量结合方向:为由右至左结合方向:为由右至左优先级:优先级: 高于双目运算高于双目运算可有以下几种形式:可有以下几种形式:++i        变量变量i自增自增1后再参与其它运算后再参与其它运算i++        变量变量i 参与运算后,参与运算后,i 的值再自增的值再自增1            --i         变量变量i自减自减1后再参与其它运算后再参与其它运算 i--         变量变量i 参与运算后,参与运算后,i 的值再自减的值再自减12 2)) 自增,自减运算符自增,自减运算符     自增运算符:自增运算符:++    其功能是使变量的值自增其功能是使变量的值自增1。

           自减运算符:自减运算符: - -    其功能是使变量值自减其功能是使变量值自减1四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 30例例2-3::main(){    int x,y;     x=10;y=++x;     printf(“%d,%d”,x,y);   }程序运行后,输出结是:程序运行后,输出结是: 11 ,1111 ,11思考:思考:如果将程序的第如果将程序的第2 2行改为:行改为:x=10x=10;;y=x++y=x++ ;;           结果如何?结果如何?四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 31【【【【注意注意注意注意】】】】 ::::((1 1)自增自减运算符的优先级较高,和单目运算符相)自增自减运算符的优先级较高,和单目运算符相同其结合方向是同其结合方向是““自右向左自右向左””(右结合性)右结合性)v例如:表达式例如:表达式-i++-i++ 由于由于““- -””和和““++++””优先级相同,均为右结合性,因此相优先级相同,均为右结合性,因此相当于当于-(i++)-(i++)。

      2 2)) 尽管自增自减运算符给程序员带来了方便,但尽管自增自减运算符给程序员带来了方便,但同时也带来了副作用同时也带来了副作用v例如例如: :printf("%d,%d\n",i,iprintf("%d,%d\n",i,i++);++); 在不同的编译环境下结果有可能不同若在不同的编译环境下结果有可能不同若i i的值为的值为3 3,则,则结果可能是结果可能是““3,33,3”” (Visual C++6.0) (Visual C++6.0) ,也可能是,也可能是““4,34,3”” (TC) (TC) 四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 32四、四、  运算符与表达式运算符与表达式 【【【【注意注意注意注意】】】】 :::: ((3)例如)例如:  i+++j C编译在处理时尽可能多地自左而右将若干个编译在处理时尽可能多地自左而右将若干个字符组成一个运算符(在处理标识符和关键字时字符组成一个运算符(在处理标识符和关键字时也按同一原则处理),将解释为也按同一原则处理),将解释为(i++)+j,而不是,而不是i+(++j)。

                               第2章 C语言基础 33算术表达式算术表达式定义:定义:由由算术算术运算符、括弧、内部函数及数据运算符、括弧、内部函数及数据组组成的式子成的式子需要掌握的书写原则:需要掌握的书写原则: ((1 1))表表达达式式中中的的所所有有运运算算符符和和操操作作数数必必须须并并排排书书写写不不能能出现上下标出现上下标( (如如x x2 2,,x x2 2等等) )和数学中的分数线和数学中的分数线 ((2 2)在)在C C表达式中表达式中不能省略乘号不能省略乘号(如(如2ab2ab、、xyxy等) ((3 3))要要注注意意各各种种运运算算符符的的优优先先级级别别,,为为保保持持运运算算顺顺序序,,在在写写C C表表达达式式时时需需要要适适当当添添加加括括号号(()),,若若要要用用到到库库函函数数,,必必须须按库函数要求书写按库函数要求书写四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 34 v(二)(二)关系运算符与关系表达式关系运算符与关系表达式Ø 关系运算符及优先级别关系运算符及优先级别v 比较两个量的运算符称为比较两个量的运算符称为关系运算符关系运算符。

      在C语言中有以下关系运算符:在C语言中有以下关系运算符:v < < < < ,,,,<= <= <= <= ,,,,> > > > ,,,,>= >= >= >= ,,,,= == == == = ,,,,!=!=!=!=v 关系运算符的优先级:关系运算符的优先级:   (1) (1) > >、、>=>=、、< <、、<=<=优优先先级级相相等等,,= = = =、、!=!=优优先先级级相相等等,,前前者高于后者者高于后者 (2)(2)算术运算符算术运算符 > > 关系运算符关系运算符 > > 赋值运算符赋值运算符 四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 35Ø 关系表达式的一般形式为:关系表达式的一般形式为: 表达式表达式 关系运算符关系运算符 表达式表达式 关系表达式的值是关系表达式的值是: : 关系成立为关系成立为““真真””,, 不成立则为不成立则为““假假”” C C语言中用语言中用 ““1” 1” 表示表示 “ “真真” ” “ “0” 0” 表示表示 “ “假假”” 例如:例如:      a+b>c-d                  x>3/2                 ‘a’+1

      都是合法的关系表达式四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 36Ø例如:当例如:当 a=5, b=4, c=3 时时a<(b>c)a!=!=(c= == =b)Ø   又如:又如:      (a=3)>(b=5)Ø 又如:又如:           当当 a=5, b=4 时时                           a =a+(3

      非运算符非运算符!为单目运算符,具有为单目运算符,具有右结合性右结合性     ((1)逻辑运算符优先级表示如下:)逻辑运算符优先级表示如下:                         !      >     &&   >    ||       而且:而且:  &&, || 低于关系运算符低于关系运算符                      !高于算术运算符!高于算术运算符 四、四、  运算符与表达式运算符与表达式 ! (非非) (高)(高)算术运算符算术运算符关系运算符关系运算符&&和和 ||赋值运算符赋值运算符 (低)(低)                          第2章 C语言基础 39按照运算符的优先顺序可以得出:按照运算符的优先顺序可以得出:     a>b && c>d            !b= =c||dc && x+yb) && (c>d)((!b)= =c)||(dc)  && ((x+y)

      示 四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 40((3)关于逻辑运算的说明)关于逻辑运算的说明Ø 表达式表达式  a && b && c  的求解过程的求解过程     只有只有a为真时,才判别为真时,才判别b的值;只有的值;只有a和和b均为真时,才判别均为真时,才判别c的值         只要只要a为假,就不再判别为假,就不再判别b和和c的值,直接求得表达式的值为假的值,直接求得表达式的值为假.Ø表达式表达式a || b || c的求解过程的求解过程      只要只要a为真,就不再判别为真,就不再判别b和和c的值,直接求得表达式的值为真的值,直接求得表达式的值为真    只有只有a为假时,才判别为假时,才判别b的值;只有的值;只有a和和b均为假时,才判别均为假时,才判别c的值的值.四、四、  运算符与表达式运算符与表达式 如:设如:设a是一合法表达式是一合法表达式 0&&a           1||a                          第2章 C语言基础 41(四)赋值运算符与赋值表达式(四)赋值运算符与赋值表达式 1.简单赋值运算符与表达式简单赋值运算符与表达式        其一般形式为:其一般形式为:    变量变量=表达式表达式        功能:计算表达式的值再赋予左边的变量。

      功能:计算表达式的值再赋予左边的变量       整个赋值表达式的值整个赋值表达式的值为为::左边变量的值左边变量的值     例如:例如:      x=a+b                   w=sin(a)+sin(b)赋值运算符的结合方向:由右至左赋值运算符的结合方向:由右至左因此因此 a=b=c=5可理解为:可理解为:      a=(b=(c=5))优先级优先级:低于条件运算符:低于条件运算符 ?:?:,高于逗号运算符,高于逗号运算符 ,在在赋值表达式的未尾加上分号,就构成为赋值表达式的未尾加上分号,就构成为赋值赋值语句语句. . 四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 42说明说明:: 如如果果赋赋值值运运算算符符两两边边的的数数据据类类型型不不相相同同, ,系系统统将将自自动动进进行行类类型型转换,即转换,即把赋值号右边的类型换成左边的类型把赋值号右边的类型换成左边的类型 具体转换规定如下:具体转换规定如下: 1 1)实型赋予整型,舍去小数部分。

      实型赋予整型,舍去小数部分 2 2))整整型型赋赋予予实实型型,,数数值值不不变变,,但但将将以以浮浮点点形形式式存存放放,, 即即增增加加小数部分小数部分( (小数部分的值为小数部分的值为0)0) 3) 3) 字字符符型型赋赋予予整整型型,,由由于于字字符符型型为为一一个个字字节节,,整整型型为为二二个个字字节,故将字符的节,故将字符的ASCIIASCII码值放到整型量的低八位中,高八位为码值放到整型量的低八位中,高八位为0 0 4) 4) 整型赋予字符型,只把低八位赋予字符量整型赋予字符型,只把低八位赋予字符量四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 43例例: :用程序验证不同类型变量的赋值的类型转换用程序验证不同类型变量的赋值的类型转换void main()void main(){ { intint a,b,c=322; a,b,c=322; float x,y=3.14; float x,y=3.14; char ch1='a',ch2; char ch1='a',ch2; a=y; x=c; b=ch1; ch2=c; a=y; x=c; b=ch1; ch2=c; printf("%d,%f,%d,%c",a,x,b,ch2); printf("%d,%f,%d,%c",a,x,b,ch2);} }程序运行结果是:程序运行结果是: a=3,  x=322.000000,  b=97,  ch2=B四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 44在在赋赋值值符符“=”之之前前加加上上其其它它二二目目运运算算符符可可构构成成复复合合赋赋值值符符。

            如:如:+=, - =, *=, //=, %=, <<=, >>=, &=, ^=, |=优先级别:仅高于逗号(,)运算符优先级别:仅高于逗号(,)运算符 例如:例如:            a+=5        等价于等价于   a=a+5                        x*=y+7    等价于等价于   x=x*(y+7)                        r%=p      等价于等价于   r=r%p      复合赋值符的优先级和结合方向与赋值运算符(复合赋值符的优先级和结合方向与赋值运算符(=)相同)相同2.复合赋值运算符复合赋值运算符与表达式与表达式四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 45 (五)逗号运算符和逗号表达式(五)逗号运算符和逗号表达式在在CC语语言言中中逗逗号号“,,”也也是是一一种种运运算算符符,,称称为为逗逗号号运运算算符符 其其功功能能是是把把两两个个表表达达式式连连接接起起来来组组成成一一个个表表达达式式,, 称称为为逗逗号号表达式。

      表达式其一般形式为:其一般形式为:           表达式表达式1,表达式,表达式2 ,…,表达式表达式n          其其求求值值过过程程是是分分别别求求表表达达式式1、、表表达达式式2…表表达达式式n的的值值,,并并以最后一个表达式以最后一个表达式n的值作为整个逗号表达式的值的值作为整个逗号表达式的值  四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 46 例题例题2-5  main( )  {   int a=2,b=4,c=6,x,y,z;       y=(x=a+b),(b+c);        z=(y=(x=a+b),(b+c));      printf("y=%d,x=%d,z=%d",y,x,z);   }结果:结果:y=6,x=6,z=10四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 47v运算规则运算规则 ::四、四、  运算符与表达式运算符与表达式 (五)位运算(五)位运算与与      或或     异或异或   取反取反                          第2章 C语言基础 48其运算过程为:其运算过程为:56((00111000)) ~56(~00111000)        199(11000111)1.按位取反按位取反v【【格式格式】】~x四、四、  运算符与表达式运算符与表达式 【【例例2-2】】分析下面程序的运行结果分析下面程序的运行结果main(){ unsigned char x=56,y;y=~x;printf("%d \n",y);   }                          第2章 C语言基础 492.按位与按位与v【【格式格式】】x&y四、四、  运算符与表达式运算符与表达式 【【例例2-3】】分析下面程序的运行结果分析下面程序的运行结果main(){ unsigned char x=56,y=157,z;z=x&y;printf("%d \n",z);   }                                       其运算过程为:其运算过程为:其运算过程为:其运算过程为:                                                56: 00111000                                          &157: 10011101                                                      00011000          24                          第2章 C语言基础 50其运算过程为:其运算过程为:    56:  00111000  |157: 10011101           10111101          1893.按位或按位或v【【格式格式】】x | y                                                 【【例例2-4】】分析下面程序的运行结果分析下面程序的运行结果main(){ unsigned char x=56,y=157,z;z=x|y;printf("%d \n",z);   }四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 514.按位异或按位异或v【【格式格式】】x ^ y四、四、  运算符与表达式运算符与表达式 其运算过程为:其运算过程为:                                                       56: 00111000                                                  ^ 157: 10011101                                                              10100101          165【【例例2-5】】分析下面程序的运行结果。

      分析下面程序的运行结果main(){ unsigned char x=56,y=157,z;z=x^y;printf("%d \n",z);   }                          第2章 C语言基础 525.左位移左位移v【【格式格式】】x<<要位移的位数要位移的位数v【【功功能能】】把把操操作作对对象象的的二二进进制制数数向向左左移移动动指指定定的的位,并在右面补上相应的位,并在右面补上相应的0,高位溢出高位溢出v【【示例示例】】如如x=00001111,,y=x<<2,则,则y=00111100v【【注注意意】】左左移移会会引引起起数数据据的的变变化化,,具具体体地地说说,,左左移移一一位位相相当当于于对对原原来来的的数数值值乘乘以以2左左移移n位位相相当当于于对对原原来来的的数数值值乘乘以以2n但但此此结结论论只只适适用用于于该该数数左左移被溢出舍弃的高位中不包含移被溢出舍弃的高位中不包含1的情况四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 536.右位移右位移v【【格式格式】】x>>要位移的位数要位移的位数v【【功功能能】】把把操操作作对对象象的的二二进进制制数数向向右右移移动动指指定定的的位位,,移移出出的的低位舍弃;高位则:低位舍弃;高位则:(1) 对无符号数和有符号中的正数,补对无符号数和有符号中的正数,补0;;(2) 有有符符号号数数中中的的负负数数,,取取决决于于所所使使用用的的系系统统::补补0的的称称为为“逻逻辑辑右右移移”,,补补1的的称称为为“算算术术右右移移”。

      Turbo C和和其其它它一一些些C编译采用的是算术右移编译采用的是算术右移v【【示例示例】】如如x=01010001,,y=x>>2,则,则y=00010100v【【注注意意】】右右移移会会引引起起数数据据的的变变化化,,具具体体说说,,右右移移一一位位相相当当于于对对原原来来的的数数值值除除以以2右右移移n位位相相当当于于对对原原来来的的数数值值除除以以2n但但此此结结论论只只适适用用于于该该数数右右移移被被溢溢出出舍舍弃弃的的低低位位中中不不包包含含1的的情况四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 54【【说明说明】】(1) 复合赋值运算符复合赋值运算符除按位取反运算外,其余除按位取反运算外,其余5个位运算符均可与赋值运个位运算符均可与赋值运算符一起,构成复合赋值运算符:算符一起,构成复合赋值运算符: &=、、|=、、^=、、<<=、、>>=a<<=2相当于相当于a=a<<2))(2) 不不同同长长度度数数据据间间的的位位运运算算──低低字字节节对对齐齐,,短短数数的高字节按最高位补位:的高字节按最高位补位:①① 对无符号数和有符号中的正数,补对无符号数和有符号中的正数,补0;;②② 有符号数中的负数,补有符号数中的负数,补1。

      四、四、  运算符与表达式运算符与表达式                           第2章 C语言基础 55v位运算应用位运算应用 ::四、四、  运算符与表达式运算符与表达式 清零取数要用与,某位置一可用或清零取数要用与,某位置一可用或若要取反和交换,轻轻松松用异或若要取反和交换,轻轻松松用异或课后填空课后填空4 5 6 74 5 6 7                          第2章 C语言基础 56五、五、数据类型转换数据类型转换转换规则 高 double float long unsigned 低 int char,short 1 1、类型自动转换、类型自动转换 v图图中中横横向向向向左左的的箭箭头头表表示示必必定定的的转转换换,,纵纵向向的的箭箭头表示当运算对象为不同类型时转换的方向头表示当运算对象为不同类型时转换的方向。

                                 第2章 C语言基础 572、、 赋值类型转换赋值类型转换(1) 当当整整型型数数据据赋赋给给浮浮点点型型变变量量时时,,数数值值上上不不发发生生任任何何变变化化,,但有效位增加但有效位增加 (2) 当当单单、、双双精精度度浮浮点点型型数数据据赋赋给给整整型型变变量量时时,,浮浮点点数数的的小小数部分将被舍弃数部分将被舍弃3)当当长长度度长长的的整整型型数数据据赋赋给给长长度度短短的的变变量量时时,,将将进进行行截截断断赋值 (4) 当整型数据赋给长度相同的变量时,将进行原样赋值当整型数据赋给长度相同的变量时,将进行原样赋值五、数据类型转换                          第2章 C语言基础 58(5) 将字符型数据赋给整型变量时,由于字符只占一个将字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为字节,而整型变量为4个字节,因此将字符数据(个字节,因此将字符数据(8位)放位)放到整型变量低到整型变量低8位中①① 将将unsigned char型数据赋给型数据赋给unsigned int或或int型变量型变量时,高时,高24位补位补0。

      ②② 将将char型数据赋给型数据赋给unsigned int或或int型变量时,若字型变量时,若字符值最高位为符值最高位为0,则高,则高24位补位补0;若字符值最高位为;若字符值最高位为1,,则高则高24位全补位全补1五、数据类型转换例例2-7 2-7                          第2章 C语言基础 59强制类型转换的一般形式为:强制类型转换的一般形式为:    (类型名类型名)   (表达式表达式)【【【【注意注意注意注意】】】】::::(1) 表达式应该用括号括起来表达式应该用括号括起来 五、数据类型转换3、强制类型转换、强制类型转换 main( ){  float x=5.5;  int i;  i=(int)x%3;  printf(“%d”,i);}例如例如:  1/2=0        ((float))1/2=0.500000                          第2章 C语言基础 60(2) 经强制类型转换后,得到的是一个所需类型的中间变量,经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。

      原来变量的类型并没有发生任何变化例例2-10】】分析下面程序的运行结果分析下面程序的运行结果main(){ int a;  float b=3.5;  a=(int)b;  printf("a=%d,b=%f\n",a,b);}五、数据类型转换                          第2章 C语言基础 61上机练习:上机练习:P22 P22 例例2-62-6P24 P24 例例2-8 2-8 例例2-92-9P25 P25 例例2-10 2-10 例例2-11 2-11 例例2-122-12 。

      点击阅读更多内容
      相关文档
      【全国硕士研究生入学统一考试政治】2020年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2015年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2010年考研政治真题.docx 【全国硕士研究生入学统一考试政治】1996年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2001年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2016年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2000年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2007年考研政治真题.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2004年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2003年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2019年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2009年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2001年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2021年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2014年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2018年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2008年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2011年考研政治真题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.