上游充通大皇 C++程序设计与实践 上海交通大学 机械与动力工程学院 2014.9-2015.个 上浒充通大¥ ANGHA IMO TONG UNIVERSITY 1920 第2讲C+程序的流程控制 1.运算符和表达式 2. 程序设计基本结构 3. 选择结构程序设计 4. 循环结构程序设计 5.标准文件输入输出
1 C++程序设计与实践 上海交通大学 机械与动力工程学院 2014.9-2015.1 第 2 讲 C++程序的流程控制 1. 运算符和表达式 2. 程序设计基本结构 3. 选择结构程序设计 4. 循环结构程序设计 5. 标准文件输入输出
算术运算符 口完成各种类型数据的加、减、乘、除及模(求余数)运算 口双目算术运算(两个运算对象参加的运算) 运算符合 运算规则 示例 蓋 + 加 2+3 若操作数均为整 减 a-b 数,运算结果舍 去小数部分 米 乘 2*(-a 如果是负数,向 川 除 12/3.0 乘号不能省略 零取整! % 取模 15%4 只能对整型或字符型数据运算 不能用于f1oat和doub1e类型 -12%5-→-2 -12%(-5) 余数符号与被除数相同 0 周上泽大通大淫 12%(-5)367 优先级与混合运算 口优先级与结合性 √先乘除后加减:() % √左结合性:先左后右 double —float 口混合运算 高 不同类型的数据要先转换成同一类 long 型,然后进行运算 unsigned 低 int char,short 周上濟文通大¥ 4/67 2
2 3/67 完成各种类型数据的加、减、乘、除及模(求余数)运算 双目算术运算(两个运算对象参加的运算) 运算符合 运算规则 示例 + 加 2+3 - 减 a-b * 乘 2*(-a) / 除 12/3.0 % 取模 15%4 注意:乘号不能省略 ! -12%(-5) 只能对整型或字符型数据运算 不能用于float和double 类型 余数符号与被除数相同 若操作数均为整 数,运算结果舍 去小数部分 如果是负数,向 零取整! 12%(-5) -12%5-2 算术运算符 4/67 优先级与结合性 先乘除后加减:() * / % + — 左结合性:先左后右 混合运算 不同类型的数据要先转换成同一类 型,然后进行运算 优先级与混合运算
优先级与混合运算 假设已指定i为整型变量,f为float变量,d为double型变 量,e为long型,有下面表达式: 10+'a'+i*f-d/e 运算次序为: ①进行10+'a'的运算,先将'a转换成整数97,运算结果为107。 ②进行i*f的运算。先将i与f都转换成double?型,运算结果为 double型。 ③整数107与i*f的积相加。先将整数107转换成双精度数(小数 点后加若干个0,即107.000..00),结果为double型。 ④将变量c转换成double型,d/e结果为double型。 ⑤将10+'a'+i*的结果与d/e的商相减,结果为double型。 周上海文通大学 5/67 自增(+)、自减(-)运算符 i=6;it+;∥i=i+1i=7 i=6;++i; ∥i=i+1i=7 L7 7 i i i=6;i--;∥i=i-1i=5 i=6;--i;∥ii-1 i=5 int i,j; ò4 int i,j; 4 3 i=3; i=3; j=++i; j=i++; e4j=4 i=4j3 +在前,先运算,后赋值 +在后,先赋值,后运算 周上濟文通大¥ 6/67 3
3 5/67 注意: 假设已指定i为整型变量,f为float变量,d为double型变 量,e为long型,有下面表达式: 10+′a′+i*f-d/e 运算次序为: ①进行10+′a′的运算,先将′a′转换成整数97,运算结果为107。 ②进行i*f的运算。先将i与f都转换成double型,运算结果为 double型。 ③整数107与i*f的积相加。先将整数107转换成双精度数(小数 点后加若干个0,即107.000…00),结果为double型。 ④将变量e转换成double型,d/e结果为double型。 ⑤将10+′a′+i*f的结果与d/e的商相减,结果为double型。 优先级与混合运算 6/67 i 6 i 3 int i, j; i=3; j = ++i; i=4 j=4 ++在前, 先运算,后赋值 int i, j; i=3; j = i++; i=4 j=3 ++在后, 先赋值,后运算 j 4 4 i 3 j 4 3 i=6; i++; // i=i+1 i=7 i=6; ++i; // i=i+1 i=7 i=6; i--; // i=i-1 i=5 i=6; --i ; // i=i-1 i=5 i 67 自增(++)、自减(--)运算符 7
自增(++)、自减(一)运算符 口自增、自减运算符只能用于变量,不可用于常量和表达式 √常量所占的空间不能重新赋值 √表达式在内存内没有具体空间 3++ (x+y)+ (一i)++ 口结合方式自右至左,优先级最高,向右取最大 一i++ 一(i++) 若i=3,j=2(1+)+j等于5 i=4,j=2 若i=3, 一++等于3 i=4 圈上海大通大学 7167 强制类型转换运算符 口(类型名)(表达式) (double)a (int)(x+y) (int)6.2%4=2 口在强制类型运算后原变量不变,但得到一个所需类型的中间变量。 如:intX; X=5 y的值没有改变, float y=5.8; 仍是单精度浮点型 x=(int)y; y=5.8 周上泽文通大¥ 8/67 4
4 7/67 自增、自减运算符只能用于变量,不可用于常量和表达式 常量所占的空间不能重新赋值 表达式在内存内没有具体空间 3++ (x+y)++ (-i)++ 若i=3, j=2 (i++) +j 等于 5 i=4, j=2 结合方式自右至左,优先级最高,向右取最大 -i++ -(i++) 若i=3 , -i++ 等于 -3 i=4 自增(++)、自减(--)运算符 8/67 (类型名)(表达式) (double) a (int) (x+y) (int) 6.2%4=2 在强制类型运算后原变量不变,但得到一个所需类型的中间变量。 如:int x; float y=5.8; x=(int)y; x=5 y=5.8 y的值没有改变, 仍是单精度浮点型 强制类型转换运算符
赋值运算符 口赋值运算符“-” 格式:V=e表达式的值为e; 其作用是将表达式的值存入变量V。 口复合赋值运算符 格式:Vop=e 等价于:V=Vope 例如:a+=5,等价于a=a+5 口复合赋值运算符包括: +=、-=、*=、/仁、%=、<=、>=、&=、∧=、=等10个 周上濟大道大学 9167 赋值运算符 口ijm*n: 计算表达式m*n的值,将其结果存入变量j中,然后再将结果 存入变量中。 口temp=a; a=b; b=temp; 交换a和b的值,temp是个中间变量。 ▣a+=3 a=a+3 ▣x*=y+3 X=x*y+3) ▣x/=x-4 x=x/(x-4) 口“=”的结合性为自右至左 图上海夫通大学 10/67 5
5 9/67 赋值运算符 “=” 格式: V = e 表达式的值为e; 其作用是将表达式的值存入变量V。 复合赋值运算符 格式: V op = e 等价于: V = V op e 例如: a += 5, 等价于 a = a + 5 复合赋值运算符包括: +=、- =、*=、/=、%=、<<=、>>=、&=、∧=、|=等10个 赋值运算符 10/67 i=j=m*n; 计算表达式m*n的值,将其结果存入变量j中,然后再将结果 存入变量i中。 temp=a; a=b; b=temp; 交换a和b的值,temp是个中间变量。 a+=3 a=a+3 x*=y+3 x=x*(y+3) x/=x-4 x=x/(x-4) “=”的结合性为自右至左 赋值运算符