当前位置:文档之家› C 表达式和语句解析

C 表达式和语句解析

c++程序设计
上海大学通信与信息 工程学院
2018/10/15
第三章 表达式和语句
第一节 表达式
第一节 表达式
表达式与运算符
表达式:用运算符和括号将运算对象(常量、变量和 函数等)连接起来的符合C++语法规则的式子。 2+3+(5*sizeof(int))/345 表达式根据某些约定、结合和优先级计算 约定:类型转换的约定: float a;
,
右至左
左至右
赋值运算;复合赋值运算
顺序求值运算
第一节 表达式
参与运算对象个数和运算符的种类
•单目运算符:只有一个对象参与运算 ++、 --、!、~ 等 •双目运算符:参与运算的对象有两个 +、-、*、/ 等 •三目运算符:要有三个对象参与运算(只有一个) ?: (条件运算符号)
第一节 表达式
语句
a=5/2; //a=? 结合:相同优先级时的求值顺序。
d=a+b-c; //从左至右 d=a=3; //从右至左 优先级:不同优先级的运算符,总是先做优先级 高的运算 d=a+b*c;
第一节 表达式
左值与右值
左值(lvalue):能够出现在赋值表达式左边的变量 和表达式。
int a=3; //a是变量,a是左值 a=10 ; //√ const int b=4; //b是常量,b不是左值 b=10 ; //× 右值(rvalue):只能出现在赋值表达式右边的常量、 变量和表达式。左值表达式也可作为右值表达式 int a,b=6; a=b; //a、b都是左值,b此处作为右值 a=8 ; //8是常量,只能作为右值 (a=4)=28; //左值表达式可以再赋值
复合语句
⑨ return
(从函数返回语句)
第一节 表达式
6种类型语句
声明语句 控制语句 函数和流对象调用语句 sort(x,y,z); cout<<x<<endl;
表达式语句
空语句
复合语句
第一节 表达式
6种类型语句
声明语句 控制语句 函数和流对象调用语句
表达式语句
空语句
a=b+1;
第二节 赋值运算与赋值表达式
赋值过程中的类型转换(p38)
char short int long int float
unsigned char
unsigned short unsigned int unsigned long
double
long double
转换总是朝表达数据能力更强的方向,且转换总是逐 个运算符进行。
第一节 表达式
运算符的优先级与结合性
运算符 :: 结合性 左至右 名称或含义 命名空间选择操作符;类对象选择操作符
优先级 1
2
3
() [] . ->
- + ++ -- ! ~ (t) * & sizeof new delete 单目操作符 . * -> * * / % + -
左至右
右至左
圆括号;数组下标;结构体成员;用指针访 问结构体成员
第二节 赋值运算与赋值表达式
赋值运算符与赋值表达式(p36)
赋值运算符:= 赋值表达式:V=e
–赋值表达式的值等于运算符右边的表达式的值 –其作用是将表达式的值存入变量V。 复合赋值运算符:由赋值运算符之前再加一个双目运算 符构成 格式: V op= e 等价于: V = V op e 例如: a+=5, 等价于 a=a+5 复合赋值运算符有10个,最常用的是以下5个: +=、-=、*=、/=、%=
第一节 表达式
6种类型语句
•在C/C++中语句是程序功能的基本执行单位。多个语句结 合在一起可以完成一些特定的功能。 声明语句 控制语句 函数和流对象调用语句 int a,b; int a,b=2;
表达式语句
空语句
复合语句
第一节 表达式
6种类型语句
C++有9种控制语句,即
声明语句 控制语句 函数和流对象调用语句
负号;正号;自增;自减;逻辑非;按位取 反;类型转换;地址求内容;求变量地址; 求变量的长度 对象成员访问;通过指针访问对象成员 乘;除;求余 加和减
4 5 6
左至右 左至右 左至右
7
8 9 10
<< >>
< <= > >= == != &
左至右
左至右 左至右 左至右
左移/流插入运算符;右移/流提取运算符
•在C/C++中语句是程序功能的基本执行单位。多个语句结 合在一起可以完成一些特定的功能。 •最基本的语句由表达式和分号组成。 var = 2; •可以是空语句,仅有一个分号,空语句要单独成行,最 好能加上注释,解释原因,增加代码的可读性。 ; •块(复合语句),是包含在花括号{}内的多个语句的集 合。从语法上讲块可以被认为是单个语句。块可以嵌套使 用。

① if( )~else~
② for( )~ ③ while( )~
(条件语句)
(循环语句) (循环语句)
④ do~while( ) (循环语句)
⑤ continue (结束本次循环语句) ⑥ break (中止switch或循环语句) ⑦ switch ⑧ goto
表达式语句
空语句
(多分支选择语句) (转向语句)
第二节 赋值运算与赋值表达式
赋值过程中的类型转换(p38)
234×456=106704
隐式转换
float f=3.5; 两字节最大有符号整 int n=6; 数:32767 long k=21; Double ss=f*n+k/2; //ss值为31,而不是31.5 long m=234*456/6; //m的值为-4061(16位机),17784(32位)
复合语句
第一节 表达式
6种类型语句
声明语句 控制语句 函数和流对象调用语句
表达式语句
空语句
;
复合语句
第一节 表达式
6种类型语句
声明语句 控制语句 函数和流对象调用语句 { z=x+y;
表达式语句
空语句
if(z>100) z=z-100;
cout<<z;
复合语句
}
第二节 赋值运算与赋值表达式
关系运算(比较) 等于和不等于比较 按位与
11
12 13
^
| &&
左至右
左至右 左至右
按位异或
按位或 逻辑与(并且)
第一节 表达式
运算符的优先级与结合性
运算符 || ? : 结合性 左至右 右至左 名称或含义 逻辑(或者) 条件运算
优先级 14 15
16
17
= += -= *= /= %= >>= <<= &= ^= |=
相关主题