(C/C++学习笔记) 六. 表达式
六. 表达式
● 表达式
表达式 expression |
An expression consists of a combination of operators and operands. (An operand is what an operator operates on.) The simplest expression is a lone operand, and you can build in complexity from there. E.g.: 4 -6 4+21 a*(b + c/d)/20 q = 5*2 x = ++q % 3 q > 3 |
表达式的副作用 对于因操作数计算的次序不同产生不同结果的表达式为带副作用的表达式。在计算时会影响其他操作数的值,引起副作用的运算符为带副作用的运算符。如++、--以及各种赋值运算符为带副作用的运算符。例如: x=1,(x+2)*(++x) //先计算x+2表达式的值为6; //若先计算++x,由于修改了x+2中x的值,计算结果为8。 |
● 语句
语句 statement |
语句是程序中可以独立执行的最小单元,类似于自然语言中的句子。 语句一般由分号结束。 ※ 有下面几种语句: ① 表达式语句; ② 赋值语句; ③ 空语句; ④ 说明语句; ⑤ 块语句 语句通常是由表达式构成的,表达式尾部加上分号构成表达式语句。 a=b+c; //由赋值表达式构成的语句,通常称其为赋值语句。 i+j; //由算术运算表达式构成的语句。 ; //由一个空的表达式构成的语句叫做空语句。空语句常用于在程序中某处根据语法要求应该有一条语句,而实际上又没有什么操作可执行的场合。 //空语句的案例: 例如 while(getchar()!='\n'); //一般的while()条件后面本来是不能加分号的 //本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句 变量的说明必须以分号结束,所以变量的说明也是语句,叫做说明语句。 由一对花括号{}括起来的多条语句叫做一个块语句。块语句也叫复合语句,它在语法上等价于一条语句。主要用于在程序的某处只允许存在一条语句,而需要执行一项必须由多条语句才能完成的操作。 例如: { int i=5; //变量说明语句。 i=(i+5)/2; 条语句构成一个块语句。 } |
● 运算符和运算表达式的综合案例
#include <iostream.h> void main() { int a=10; int b = a+5.2/3.0-9/5; cout<<"b= "<<b<<endl; int x=10,result; double y=8.5; result=x++; //递增表达式 cout<<"result= "<<result<<"\t"<<"x= "<<x<<endl; //"\t"表示不可显示的ASCII字符(跟可以显示的字符一样也是字符常量),类似的字符称为 //转义字符(escape character)/转义序列(escape sequence) result=--x; //递减表达式 cout<<"result= "<<result<<"\t"<<"x= "<<x<<endl; result=x>y; //关系表达式 cout<<"result= "<<result<<endl; result=x>0&&y<0; //逻辑表达式 cout<<"result= "<<result<<endl; result=!x || y<1; //逻辑表达式 cout<<"result= "<<result<<endl; result=(x++,y+=x,x-y); //逗号表达式 cout<<"result= "<<result<<"\t"<<"x= "<<x<<"\t"<<"y= "<<y<<endl; result=(x>y?x++:y); //条件表达式;此时逻辑表达式为假,因此(x>y?x++:y)这整个条件表达式的值为y的值,因为 //result为int型,所以y原来的值19.5转换成了19 cout<<"result= "<<result<<"\t"<<"x= "<<x<<endl; } |
|
● 条件运算符与条件表达式
#include <iostream.h> int main() { int score; //一定要先声明下面即将用到的变量score的数据类型 cout<<"Input score:"<<endl; cin>>score; cout<<(score>=60?"pass":"fail")<<endl; return 0; } |
|
● 自增与自减
#include <iostream> using namespace std; int main() { int x=10,y; y=2*x++; //first, multiply x by 2 assign to y; then, increment x by 1 cout<<"y="<<y<<"\t"<<"x="<<x<<endl; return 0; } #include <iostream> using namespace std; int main() { int x=10,z; z=2*++x; //first, increment x by 1; then, multiply x by 2 and assign to z cout<<"z="<<z<<"\t"<<"x="<<x<<endl; return 0; } #include <iostream> using namespace std; int main() { int x=10,y,z; y=2*x++; z=2*++x; cout<<"x="<<x<<"\t"<<"y="<<y<<"\t"<<"z="<<z<<endl; return 0; } |
++i: 先让i加1, 再让i参加其它运算 i++: 先让i参加其它运算, 然后i加1 前置形式 int i=5; x=++i; y=i; // i 先加1(增值)后再赋给x (i=6, x=6,y=6) int i=5; ++i; x=y=i; // (i=6, y=6,x=6) 后置形式 int i=5; x=i++; y=i; // i 赋给后再加1(x=5, i=6,y=6) int i=5; i++; x=y=i; // (i=6, y=6,x=6) 再如, 前缀运算是先变化后运算,后缀运算是先运算后变化。 |
(C/C++学习笔记) 六. 表达式的更多相关文章
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- 【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
- # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)
目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...
随机推荐
- Python全栈开发-Day5-常用模块学习
本节大纲: 模块介绍 time &datetime模块 random os sys shutil shelve xml处理 pyyaml处理 configparser hashlib re正则 ...
- LFU Cache
2018-11-06 20:06:04 LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”. ...
- 网格视图GridView的使用
网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...
- 架构探险笔记6-ThreadLocal简介
什么是ThreadLocal? ThreadLocal直译为“线程本地”或“本地线程”,如果真的这么认为,那就错了!其实它就是一个容器,用于存放线程的局部变量,应该叫ThreadLocalVariab ...
- python-day76--django-中间件
什么是中间件?中间件应用场景?和装饰器区别? 中间件 对于所有批量的请求用中间件合适,而对于某些请求个数少用装饰器合适 - 中间件是什么? - 是一个类 - 方法名必须是process_request ...
- SEND EMAIL SO_DOCUMENT_SEND_API1
FUNCTION zcrm_send_email_and_attach . *"------------------------------------------------------- ...
- 【LeetCode】矩阵操作
1. 矩阵旋转 将 n × n 矩阵顺时针旋转 90°. 我的思路是 “ 从外到内一层一层旋转 ”. 一个 n × n 矩阵有 (n + 1) / 2 层,每层有 4 部分,将这 4 部分旋转. 顺时 ...
- HDFS - Shell命令
HDFS - Shell命令 最近学习比较忙,本来想做一个搭建集群笔记,今天先记录HDFS-shell命令,明天,最迟明天下午我一定会做一个搭建集群的笔记.. 介绍一个我的集群搭建:一主三从 3个虚拟 ...
- noip2013转圈游戏
题目描述 n个小伙伴(编号从 0到 n−1)围坐一圈玩游戏.按照顺时针方向给 n个位置编号,从0 到 n−1.最初,第 0号小伙伴在第 0号位置,第 1号小伙伴在第 1 号位置,……,依此类推. 游戏 ...
- 【转】JS常用函数整合库 lutils
lutils 此工具包是在 outils 的基础上,加上个人平时收集的代码片段进行的二次整合 outils的GitHub:https://github.com/proYang/outils/blob/ ...