版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第2章章 数据类型、运算符与表达式数据类型、运算符与表达式例例:求两个数的平均值求两个数的平均值/*该程序求两个数的平均值,这是一个自定义函数示例程序该程序求两个数的平均值,这是一个自定义函数示例程序*/#include /*定义函数定义函数average( )*/float average(float x, float y)float aver; /*定义变量定义变量aver类型为单精度实型类型为单精度实型*/ aver=(x+y)/2; return(aver);/*返回返回aver值,通过函数值,通过函数average带回调用处带回调用处 */ void main()float a,
2、 b, ave; a=6.5; b=4.2; ave=average(a, b); /*调用自定义函数调用自定义函数average()*/ printf( “average=f”,ave); /*输出结果输出结果*/主函数定义区主函数定义区函数定义区函数定义区3问题:一个问题:一个C+函数如何构成?函数如何构成?q函数说明部分(函数头)函数说明部分(函数头) + 函数体函数体示例:示例: float aver; /定义变量定义变量aver为单精度实型为单精度实型 aver=(x+y)/2; return(aver); /返回返回aver值至调用处值至调用处 说明语句:说明语句:数据类型名、变量
3、名、数据类型名、变量名、执行语句:执行语句:表达式语句、函数调用语句、表达式语句、函数调用语句、 复合语句、空语句、控制语句复合语句、空语句、控制语句重要成分:表达式(变量、常量、运算符)重要成分:表达式(变量、常量、运算符)示例示例 float average(float x, float y)重要成分重要成分数据类型名、函数名、形式参数名数据类型名、函数名、形式参数名问题:名字如何取?关键字、标识符问题:名字如何取?关键字、标识符42.1 C+C+的字符集和关键字(的字符集和关键字(1 1) q字符集字符集由由52个字母、个字母、10个数字、个数字、30个特殊字个特殊字符组成符组成所有所有
4、C+程序(程序(忽略换行符、制表符、忽略换行符、制表符、注释和字符串常量中的内容注释和字符串常量中的内容)都由字)都由字符集中的字符按一定规则构成符集中的字符按一定规则构成52.1 C+C+的字符集和关键字(的字符集和关键字(2 2) qC+标识符是满足如下条件的一串字符标识符是满足如下条件的一串字符由一个字母由一个字母 ( a z , A Z ) 或下划线或下划线 ( _ )开头;开头;其它部分可以由字母、下划线或数字其它部分可以由字母、下划线或数字(09)组成;组成;只有前只有前32个字符有效个字符有效, ,大小写有别大小写有别;qC+的的6363个关键字也是标识符,称为保留字,个关键字也
5、是标识符,称为保留字,不能作其它用不能作其它用。另外,。另外,C+还使用了一些标识还使用了一些标识符作预处理命令、库函数的名字,称为预定符作预处理命令、库函数的名字,称为预定义标识符,可以被重定义,但义标识符,可以被重定义,但不提倡不提倡。6标识符课堂练习q挑出一个不正确的标识符挑出一个不正确的标识符 ABC abc a_bc ab.cq选择一个正确的标识符选择一个正确的标识符 %x a+b a123 test!q挑出错误的标识符挑出错误的标识符 room3-1 _SUM student num1 Mr.Zhu _1_2_3 MyName myname my_name 2men72.2 基本数
6、据类型(基本数据类型(1 1) q每个每个C+程序中的数据对象(如程序中的数据对象(如2 2、x1x1、x1+2x1+2)都有确定的数据类型都有确定的数据类型qC+的数据类型包括基本数据类型和复的数据类型包括基本数据类型和复合数据类型合数据类型q基本数据类型有基本数据类型有整型、浮点型、字符型、布尔型整型、浮点型、字符型、布尔型q不同数据类型有自己的取值范围和所允不同数据类型有自己的取值范围和所允许的操作(运算)许的操作(运算)82.2 基本数据类型(基本数据类型(2 2) q整型(可进行算术、关系、逻辑等运算)整型(可进行算术、关系、逻辑等运算)signed short int (简写为简写
7、为 short )signed int (简写为简写为 int )signed long int (简写为简写为 long )unsigned short int (简写为简写为 unsigned short)unsigned int (简写为简写为 unsigned )unsigned long int (简写为简写为 unsigned long)补码q(1)正整数的补码与原码相同q(2)求负整数的补码,符号位不变,数值位各位取反,最后整个数加1。q求-5的补码。9因为给定数是负数,则符号位为因为给定数是负数,则符号位为“1”。后七位:后七位:-5的原码(的原码(10000101)符号位不变
8、符号位不变(10000101)数值位取反(数值位取反(11111010)加加1(11111011)所以所以-5的补码是的补码是11111011。10有符号数与无符号数举例void main()int i; unsigned j; i=-50; j=-50; i=i/2; /*-25*/ j=j/2; /*32743*/0111001111111111-50的补码的补码i,j/ 2/ 211100111111111111110011111111110i/2-25的补码的补码j/232743的补码的补码/ /原码原码112.2 基本数据类型(基本数据类型(3 3) q浮点型(实型)浮点型(实型)f
9、loat (浮点型浮点型)double (双精度型双精度型)long double (长双精度型长双精度型)均有符号均有符号不允许的操作:取余、位运算等不允许的操作:取余、位运算等实型数据在内存中的存放形式qfloat型的数据在内存中占4个字节(32位),其中符号位1位,指数位8位,尾数位23位q其表示的范围q有效位数为6或7位1213实型数据的舍入误差q由于实型数据表示的有效数字有限,将有效由于实型数据表示的有效数字有限,将有效位以外的数字舍去造成误差位以外的数字舍去造成误差q举例举例float a=123456.789e5, b;b = a + 20; /*b=12345678920?*/
10、printf(a=%fnb=%fn, a, b);a=12345678848.000000b=12345678868.000000142.2 基本数据类型(基本数据类型(4 4) q字符型字符型charsigned charunsigned char 实质是占一个字节的整型数(小整数)实质是占一个字节的整型数(小整数)允许的操作:和整型相同允许的操作:和整型相同152.2 基本数据类型(基本数据类型(5 5) q布尔型布尔型bool值为值为true和和false可以当作整数用(可以当作整数用( true一般为一般为1,false为为0)把其它类型的值转换为布尔值时,非把其它类型的值转换为布尔值
11、时,非零值转换为零值转换为true,零值转换为零值转换为false注意:各类型所占字节数和具体计算机有关类类型型符符号号关键字关键字数的表示范围数的表示范围所占字节数所占字节数整整型型字符型字符型实实型型有有无无signed int2-3276832767signed short2-3276832767signed long4-2147483648 21474836472unsigned int0 6553540 4294967295unsigned longunsigned short20 65535float43.4e-38 3.4e38有有double81.7e-308 1.7e308有
12、有unsigned char1-128 127无无signed char10 255long double163.4e-4932 3.4e4932表以表以1616位计算机为例位计算机为例但总是但总是 long型型int型型short型型char型型long double型型double型型float型型172.3 变量与常量变量与常量 程序运行过程中,程序运行过程中,其值是否其值是否能被能被改变?改变?变量变量是是常量常量不是不是18常量和变量示例#define PRICE 2.8void main() int num;float total=0; num =10; total = num *
13、 PRICE; printf(total=%f, total);常量常量变量变量19q定义定义程序运行过程中,其值不能被改变的量程序运行过程中,其值不能被改变的量q分类分类整型常量整型常量实型常量实型常量字符型常量字符型常量布尔型常量(布尔型常量(false,true)符号常量:用一个标识符代表的常量符号常量:用一个标识符代表的常量常 量字面常量:从字面形式字面常量:从字面形式即可判断即可判断常量示例常量示例#define PRICE 2.8main() int num;float total=0; num=10; total = num * PRICE; printf(total=%f, t
14、otal);符号常量符号常量total = num * 2.8;字面常量字面常量符号常量的定义格式符号常量的定义格式#define #define 符号常量符号常量 常量常量21符号常量q习惯上用习惯上用大写大写字母表示符号常量字母表示符号常量#define PI 3.14注意:在一个程序中不能对同一注意:在一个程序中不能对同一个符号常量定义多次个符号常量定义多次 如:如: #define PI 3.14 #define PI 3.141596q使用之前必须预先定义。使用之前必须预先定义。22例例1 计算圆的周长和面积计算圆的周长和面积#include void main( ) int r=2
15、; float s,l; l=2*3.14*r; s=3.14*r*r; printf(l=%f,s=%fn,l,s);符号常量的优点示例#define PI 3.14PIPI3.14159含义清晰含义清晰一改全改一改全改23整型常量q表示形式表示形式十进制整数:由数字十进制整数:由数字0 09 9组成,除组成,除0 0外不能以外不能以0 0开始开始八进制整数:以数字八进制整数:以数字0 0为前缀,由数字为前缀,由数字0 07 7 组成组成十六进制整数:以十六进制整数:以0 0X X或或0 0 x x为前缀,由数字为前缀,由数字0 09 9、A AF(F(或或a af)f)组成组成可以加整型后
16、缀(可以加整型后缀(P22P22),无后缀时),无后缀时作为作为intint类型数据类型数据12,30 045 0123, 040 039 0 x12A, 0X96 24u指数形式:由整数指数形式:由整数( (或小数或小数) )、e(e(或或E)E)、可、可选的正负号、整数顺序组成选的正负号、整数顺序组成q表示形式表示形式十进制小数:由十进制小数:由0 09 9和和小数点小数点( (必须必须) )组成,组成,整数和小数部分都可省略,但不能同时省略整数和小数部分都可省略,但不能同时省略举例举例:123.4e-5表示表示123.410-5错例错例:,e1、12e、1.2e3.4、.e5、e实型常量
17、(浮点常量)0.123,.123123.345e2 13.2E+2 .5e-2v注意:注意:e e或或E E前面必须有数字,后面必须是整前面必须有数字,后面必须是整数数( (可以带、可以带、) )v一个实数可以有多种指数表示形式一个实数可以有多种指数表示形式举例举例: 1234. 可表示成:可表示成: 1234e0 123.4E1 12.34 e2 .1234E4 1.234E3可以加浮点后缀,无后缀时可以加浮点后缀,无后缀时作为作为doubledouble类型数据类型数据25q字符常量字符常量u用用一对一对单引号单引号括起来的括起来的一个一个普通字符普通字符( 不包括不包括和和)或转义字符(
18、也称转义序列)或转义字符(也称转义序列) 包括包括字符常量字符常量和和字符串常量字符串常量字符型常量(1)a,?,3,# abc,啊啊 u转义字符是用一个转义标识转义字符是用一个转义标识 (反斜线)(反斜线)开头的字符序列。如:开头的字符序列。如: n n,xabxabu转义字符主要表示难以用一般字符表转义字符主要表示难以用一般字符表示的单个字节示的单个字节26转义字符注意:注意:1) 转义字符多用于转义字符多用于printf()函数中,而在函数中,而在scanf()函数中通常不用。函数中通常不用。 转义字符常量只代表一个字符(一个字节)。转义字符常量只代表一个字符(一个字节)。 反斜杠后的八
19、进制数可以不用反斜杠后的八进制数可以不用0开头开头 反斜杠后的十六进制数只能以小写字母反斜杠后的十六进制数只能以小写字母x开头,开头,不允许用大写字母不允许用大写字母X或或0 x开头开头n换行符换行符 x7a小写字母小写字母z例:例:101 A 134 27转义字符的使用示例转义字符的使用示例#include void main( ) putchar( ); putchar( n ); putchar( );注意:注意:如果反斜杠或单引号本身作为如果反斜杠或单引号本身作为字符常字符常量量,必须使用转义字符:,必须使用转义字符:、 。28转义字符的使用示例转义字符的使用示例#include vo
20、id main()printf(x4Fx4Bx21n); OK! printf(OK!n);printf(25 xABn);q一个字符常量占一个字节的空间一个字符常量占一个字节的空间q字符常量以其字符常量以其ASCIIASCII码形式存放码形式存放01100001a(ASCII=97)001100102(ASCII=50)字符常量在内存中的存放形式q作为作为char类型数据,实质上是一个字节长类型数据,实质上是一个字节长度的整型数据,数值是其度的整型数据,数值是其ASCIIASCII码码30u长度为长度为0 0的字符串(即一个字符都没有的字符串(即一个字符都没有的字符串)称为空串,表示为的字符
21、串)称为空串,表示为(一对(一对紧连的双引号)。紧连的双引号)。字符型常量(2)q 字符串常量字符串常量u 用一对用一对双引号双引号括起来的字符序列括起来的字符序列。u字符串中字符的个数称为字符串长度。字符串中字符的个数称为字符串长度。a,3.14, How are youn例如,例如,How do you do!How do you do!、Good morning!Good morning! ,都是字符串常量,其长度分别为都是字符串常量,其长度分别为1414和和1313(空格也(空格也是一个字符)。是一个字符)。注意:注意:如果反斜杠和双引号作为字如果反斜杠和双引号作为字符串中的有效字符,
22、则必须使用转义符串中的有效字符,则必须使用转义字符。字符。 C:msdosv6.22 C:msdosv6.22 printf(printf( C: C: msdosmsdos v6.22 v6.22 );); I say: I say: Goodbye! Goodbye! printf(printf( I say: I say: Goodbye!Goodbye! ););31q在内存中字符串中的每个字符以其在内存中字符串中的每个字符以其ASCIIASCII值值的二进制形式按顺序存放。的二进制形式按顺序存放。q系统自动在字符串的末尾加一个系统自动在字符串的末尾加一个空字符空字符00 ( (值为值
23、为0, 0, 即符号常量即符号常量NULL) NULL) 作为字符串的作为字符串的结束标志。结束标志。 00不可显示,也不引起任何不可显示,也不引起任何控制动作。控制动作。例如例如 字符串字符串 chinachina 在内存中的实际存储如下:在内存中的实际存储如下:字符串常量的存储形式字符串常量的存储形式注意:注意:n 在书写字符串常量时,在书写字符串常量时,不必加结束字符不必加结束字符00,否则画蛇添足。否则画蛇添足。n输出字符串时输出字符串时00不不输出输出china0010000110100100001001001010011100100001000000000实际占用字节而非字节内存空
24、间。实际占用字节而非字节内存空间。32课堂练习字符串存放 0a 00970aa97a a与与a是不同的是不同的33字符常量与字符串常量的区别字符常量与字符串常量的区别q定界符不同:字符常量使用单引号,而定界符不同:字符常量使用单引号,而字符串常量使用双引号;字符串常量使用双引号;q长度不同:字符常量的长度固定为长度不同:字符常量的长度固定为1 1,而,而字符串常量的长度,可以是字符串常量的长度,可以是0 0,也可以是,也可以是某个整数;某个整数;q存储要求不同:字符常量存储的是字符存储要求不同:字符常量存储的是字符的的ASCIIASCII码值,而字符串常量,除了要存码值,而字符串常量,除了要存
25、储串中字符的储串中字符的ASCIIASCII码值外,还要存储一码值外,还要存储一个结束标志个结束标志00 。34变量声明和使用举例1#include void main() char c; int i, j; c = a; /*c :97*/ i = c + 2; /*i :99*/ j = 2; /*j = 50*/ printf(%c, %dn, c, c); /*a, 97*/35变量声明和使用举例2#include void main() char c1,c2; c1 = a; c2 = b; c1 = c1 - 32; /不同类型数据的运算不同类型数据的运算 c2 = c2 - 32
26、; printf(%c, %cn, c1, c2); A , B36注意qC+中没有字符串变量中没有字符串变量q不能把一个字符串赋值给一个字符不能把一个字符串赋值给一个字符型变量型变量 char name; name=Mary; ()37变量值的获取方法q赋值运算赋值运算 int a;a=2;int a=2;char c=A;q初始化方法初始化方法 在声明变量的同时给变量置初值在声明变量的同时给变量置初值q输入输入 int a;scanf(“%d”,&a);或或cina;382.4 类型转换(类型转换(1 1) q举例举例(int)3.14 将将3.14转换成整数转换成整数3(doub
27、le)3 将将3转换成双精度浮点数转换成双精度浮点数 3.0double(3) 将将3转换成双精度浮点数转换成双精度浮点数 3.0(double)(3) 将将3转换成双精度浮点数转换成双精度浮点数 3.0以上的转换是强制类型转换,是一种运算以上的转换是强制类型转换,是一种运算注意:注意:n如果如果f是是float类型的变量,类型的变量,(int)f把把f的值去掉小数点作为的值去掉小数点作为(int)f的值的值(运算结果),(运算结果),f仍然是仍然是float类型类型392.4 类型转换(类型转换(2 2) q提升规则提升规则 如果要将数值转换成较低的类型如果要将数值转换成较低的类型,必须显式
28、地使用强制类型转换或赋必须显式地使用强制类型转换或赋值,如值,如(int) 3.14;如果将数值转换成较高的类型则可如果将数值转换成较高的类型则可以通过隐式的类型转换以通过隐式的类型转换, ,如如3.14+2提升规则是指当一个运算符的多个提升规则是指当一个运算符的多个操作数需要同类型时,总是把低类操作数需要同类型时,总是把低类型的操作数自动转换为高类型型的操作数自动转换为高类型 402.4 类型转换(类型转换(3 3) q隐式类型转换隐式类型转换当表达式中运算符所操作的数据的类型与实际要当表达式中运算符所操作的数据的类型与实际要求不符时,要进行隐式类型转换,使表达式中各求不符时,要进行隐式类型
29、转换,使表达式中各数据的类型符合要求数据的类型符合要求算术表达式中隐式类型转换规则是:算术表达式中隐式类型转换规则是: (1 1)表达式中如有)表达式中如有char、short和和enum类型的类型的数据时,自动将它们转换成数据时,自动将它们转换成int类型;类型; (2 2)把表达式中不同类型的数据转换成精度最高、)把表达式中不同类型的数据转换成精度最高、占用内存最多的那个数据的类型。占用内存最多的那个数据的类型。在类型不冲突的赋值表达式中,自动将赋值运算在类型不冲突的赋值表达式中,自动将赋值运算符右边表达式的值的类型转换成左边变量的类型。符右边表达式的值的类型转换成左边变量的类型。412.
30、4 类型转换(类型转换(4 4) q强制类型转换(又称显式类型转换)强制类型转换(又称显式类型转换)形式为:形式为: () 或或 ()例如:例如: (double)3/2 或或 double(3)/2 (double)(3/2)或或 double(3/2)42类型转换示例(1)v将实型数据将实型数据( (包括单精度、双精度包括单精度、双精度) )赋给整型赋给整型变量时,舍弃实数的小数部分。变量时,舍弃实数的小数部分。int i;i=3.56; /*i的值为的值为3*/v将整型数据赋给实型变量时,数值不变,但将整型数据赋给实型变量时,数值不变,但以浮点数形式存储到变量中。以浮点数形式存储到变量中
31、。float f ; double d; f=23; /* f的值为的值为23.00000*/d=23; /* d的值为的值为23.00000000000*/v将将double型数据赋给型数据赋给float型变量时,截取前型变量时,截取前面面7位有效数字,存储到变量中。位有效数字,存储到变量中。43类型转换示例(2)v将字符型数据赋给整型变量时,保持原值不将字符型数据赋给整型变量时,保持原值不变变v将将int、short、long型数据赋给字符型变量时,型数据赋给字符型变量时,将其低将其低8位原封不动地送到字符型变量。位原封不动地送到字符型变量。001000010010000100000001
32、int i=289;char c;c = i;ci442.5 运算符和表达式(运算符和表达式(1 1) q运算符的优先级和结合性运算符的优先级和结合性 q主要分为主要分为: 算术运算符、关系运算符、算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等逻辑运算符、位运算符、赋值运算符等 q根据组成表达式的运算符的不同,表达根据组成表达式的运算符的不同,表达式可以分为算术表达式、关系表达式、式可以分为算术表达式、关系表达式、逻辑表达式、位运算表达式、逗号表达逻辑表达式、位运算表达式、逗号表达式和赋值表达式等。式和赋值表达式等。 45q运算符的优先级运算符的优先级q结合性结合性优先级和结合性示
33、例a+b*cd/e 乘除比加减优先级高乘除比加减优先级高(a+b)*(c-d)/e用圆括号用圆括号( )改变运算符的执行次序改变运算符的执行次序u同一个表达式中不同运算符进行运算的先同一个表达式中不同运算符进行运算的先后次序后次序u表达式中运算符优先级相同时的运算顺序表达式中运算符优先级相同时的运算顺序u通常单目、三目和双目中的赋值运算符是通常单目、三目和双目中的赋值运算符是右结合性,其余为左结合性右结合性,其余为左结合性u通常单目运算符的优先级高于双目和三目通常单目运算符的优先级高于双目和三目运算符运算符a+b-c +和和-的结合方向都是从左向右,称的结合方向都是从左向右,称为为左结合性左结
34、合性a=b=1 =的结合方向是从右向左,称为的结合方向是从右向左,称为右右结合性结合性46优先级与结合性总结q不同优先级的运算符,运算顺序按优先级由不同优先级的运算符,运算顺序按优先级由高到低执行高到低执行q同一优先级的运算符,运算顺序按结合性的同一优先级的运算符,运算顺序按结合性的规定执行规定执行q可以使用圆括号可以使用圆括号()明确运算次序,明确运算次序,圆括号圆括号()具有最高的优先级具有最高的优先级47表达式q用运算符将操作数连接起来所构成的用运算符将操作数连接起来所构成的式子。式子。2.5*b-6/c+z- max(x,y)常量常量变量变量有返回值的有返回值的函数调用函数调用i=(b
35、a*c)表达式表达式 单个的操作数也是表达式单个的操作数也是表达式 注意:注意: 各运算符所能连接的操作数的个数、各运算符所能连接的操作数的个数、位置及类型都有各自的规定。位置及类型都有各自的规定。 每个表达式都有一个值(运算结果)。每个表达式都有一个值(运算结果)。482.5 运算符和表达式(运算符和表达式(2 2) q算术运算之一:一元算术运算算术运算之一:一元算术运算 + 正,运算结果同操作数;正,运算结果同操作数; - 负,运算结果为操作数的负数;负,运算结果为操作数的负数; + 自增运算符,操作数需左值性质;自增运算符,操作数需左值性质; - 自减运算符,操作数需左值性质;自减运算符
36、,操作数需左值性质;49自增、自减运算符示例+i, -i前缀形式:运算符在变量前面,前缀形式:运算符在变量前面,表示对变量先自增或自减,然后表示对变量先自增或自减,然后再参与其它运算,运算结果具有再参与其它运算,运算结果具有左值性质。左值性质。i+, i-后缀形式:运算符在变量后后缀形式:运算符在变量后面,表示变量先参与其它运面,表示变量先参与其它运算,再自增或自减。算,再自增或自减。50课堂练习 +、-运算符运算符a=1;b=a+;a=1;b=+ a;a=1;b=a-;a=1;b=-a;a为为2;b为为1;a为为2;b为为2;a为为0;b为为1;a为为0;b为为=0;51+、-运算符举例运算
37、符举例#include void main()int i=3,j=10,m,n,p,q; m=+i; n=i+; p=-j; q=j-; printf(”i=%d,m=%d,n=%dn”,i,m,n); printf(”j=%d,p=%d,q=%dn”,j,p,q);i=5,m=4,n=4j=8,p=9,q=952+、-运算符使用注意运算符使用注意u在有在有+和和-的表达式中,尽量不要使用难于的表达式中,尽量不要使用难于 理解或容易出错的表达式。理解或容易出错的表达式。q不能用于常量和一般表达式不能用于常量和一般表达式int a,b,c;a = (b+c)+; /* 非法非法! */a = 3
38、4+;/* 非法非法! */int k=3,j; j=(-k)+; /*j=2,k=3*/532.5 运算符和表达式(运算符和表达式(3 3) q算术运算之二:基本算术运算(二元)算术运算之二:基本算术运算(二元) + 加法,运算结果为两个操作数的和;加法,运算结果为两个操作数的和; - 减法,运算结果为左操作数减去右操作数减法,运算结果为左操作数减去右操作数 的差;的差; * 乘法,运算结果为两个操作数的乘积;乘法,运算结果为两个操作数的乘积; / 除法,运算结果为左操作数除以右操作数除法,运算结果为左操作数除以右操作数 的商;的商; 求余,运算结果为左操作数除以右操作求余,运算结果为左操作
39、数除以右操作 数的余数,只用于整型数据,其结果也数的余数,只用于整型数据,其结果也 是整型是整型 ; 542.5 运算符和表达式(运算符和表达式(4 4) q算术运算之二:基本算术运算算术运算之二:基本算术运算两个整数作两个整数作/运算,其结果为整数,但是具体结运算,其结果为整数,但是具体结果取决于果取决于C+在具体机器上的实现:一般来说,在具体机器上的实现:一般来说,大多数实现都采取大多数实现都采取“向零取整向零取整”,即直接截去商,即直接截去商的小数部分的小数部分对于整型数据的求余运算,其运算结果在不同对于整型数据的求余运算,其运算结果在不同C+的实现中也不一样。的实现中也不一样。C+规定
40、,如果两个操规定,如果两个操作数都是正的,那么结果一定是正的;否则,要作数都是正的,那么结果一定是正的;否则,要看看C+的具体实现,的具体实现,C+标准对这种情况未作明标准对这种情况未作明确规定,如在确规定,如在Microsoft C+实现中,求余运算实现中,求余运算%的结果总是与左操作数的符号一致。的结果总是与左操作数的符号一致。 55算术运算示例注意:注意:两个整数作两个整数作/ /运算,其结果为商的运算,其结果为商的整数部分,商的小数部分直接截去;整数部分,商的小数部分直接截去; 参与参与% %运算的操作数必须是整数,否则运算的操作数必须是整数,否则出错;其结果也是整数。出错;其结果也是
41、整数。7/5 结果为结果为 17% %5 结果为结果为 2 % %运算结果的符号同左操作数。运算结果的符号同左操作数。 20 % 6 20 % 6 结果为结果为 2 2 20 % -6 20 % -6 结果为结果为 2 2 -20 % 6 -20 % 6 结果为结果为 -2 -2 -20 % -6 -20 % -6 结果为结果为 -2 -2562.5 运算符和表达式(运算符和表达式(6 6) q逻辑运算逻辑运算 | | | & | | | ! | ()!、!、|、 & 的优先级和结合性的优先级和结合性逻辑表达式的逻辑表达式的“短路计算法短路计算法” 572.5 运算符和表达式(
42、运算符和表达式(7 7) q位运算位运算 | & | | | | | 操作数只能是整型或字符型数据,结果亦然操作数只能是整型或字符型数据,结果亦然符号位参加运算符号位参加运算向右移位运算,当左操作数是负数时,高位填向右移位运算,当左操作数是负数时,高位填0或或1582.5 运算符和表达式(运算符和表达式(7 7) q逗号运算逗号运算 , 二元运算,左结合二元运算,左结合先左后右计算表达式的值,取右表达式的值为运算先左后右计算表达式的值,取右表达式的值为运算 结果结果逗号的左、右表达式作为逗号运算符的操作数,逗号的左、右表达式作为逗号运算符的操作数, 类型可以不同类型可以不同注意:注意:并不是任何地方出现的逗号,都是并不是任何地方出现的逗号,都是 逗号运算符。很多情况下,逗号仅逗号运算符。很多情况下,逗号仅 用作分隔符。用作分隔符。 如:如:printf(%d %d,a,b); y=(b=2,3*2) (y=b=3,3*b) a=(b=2,+b,b+5)592.5 运算符和表达式(运算符和表达式(8 8) q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地下工程防水施工进度管理方案
- 2026年延安高新医院招聘(37人)考试参考试题及答案解析
- 地基施工振动监测与控制技术方案
- 2026年安徽省皖能电力运营检修股份公司校园招聘运行分公司英文翻译岗招聘考试备考题库及答案解析
- 2026国家华电陕西能源有限公司校园招聘(第二批)考试参考题库及答案解析
- 桩基孔底清理施工方案
- 室内给水系统调试技术方案
- 2026广东深圳市南山区教苑幼儿园招聘笔试备考题库及答案解析
- 2026春江西赣州市瑞金中专招聘12人笔试模拟试题及答案解析
- 2025年西藏自治区那曲市高职单招综合素质考试题库及答案解析
- 2025-2030中国建筑应用光伏(BAPV)行业市场发展趋势与前景展望战略分析研究报告
- 儿科医生进修汇报
- 2025年四川藏区高速公路有限责任公司招聘笔试参考题库含答案解析
- 妇女节女性健康知识讲座关爱女性健康主题宣教课件
- 第一单元第1课《辉煌成就》课件-七年级美术下册(人教版)
- 2025年春季学期三年级语文下册教学计划及教学进度表
- 板材加工项目可行性研究报告
- 2025年派出所教导员履职述职报告范文
- GB/T 33130-2024高标准农田建设评价规范
- 《创新方法及技巧》课件
- 基本医疗保险异地就医备案个人承诺书【模板】
评论
0/150
提交评论