六. 表达式

● 表达式

表达式 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++学习笔记) 六. 表达式的更多相关文章

  1. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  2. Java8学习笔记----Lambda表达式 (转)

    Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家       本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...

  3. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  4. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  6. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  7. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  8. Linux学习笔记(六) 进程管理

    1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...

  9. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

随机推荐

  1. 回车、换行、空格的ASCII码值—(附ASCII码表)

    回车.换行.空格的ASCII码值 回车,ASCII码13换行,ASCII码10空格,ASCII码32 Return   =   CR   =   13   =   '\x0d'NewLine   = ...

  2. 雷林鹏分享:jQuery EasyUI 表单 - 创建树形下拉框

    jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务 ...

  3. MP4介绍与基本AVC编码(x264)教程

    MP4介绍与基本AVC编码(x264)教程(最后更新: 2006.03.25)为日益增加的对MP4 H264/AVC编码的需求,本人做了一个简单的MP4介绍与基本AVC编码(使用x264)教程最后更新 ...

  4. 机器学习基石(台湾大学 林轩田),Lecture 2: Learning to Answer Yes/No

    上一节我们跟大家介绍了一个具体的机器学习的问题,以及它的内容的设定,我们今天要继续下去做什么呢?我们今天要教大家说到底我们怎么样可以有一个机器学习的演算法来解决我们上一次提到的,判断银行要不要给顾客信 ...

  5. Ftp服务端安装-Linux环境

    目的 为什么要搭建FTP服务器,进入maven仓库下载Jar包时点击相应的链接进去会看到目录结构,这个就是ftp站点.可以随意的下载. 环境 Linux系统为CentOS6.5 安装步骤 查询是否已安 ...

  6. python记录_day30 多进程

    1.什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 同一个程序执行两次,就会产生两个进程 ## 进程调度算 ...

  7. python记录_day04(补充)

    列表删除 切片删除 del lis[1:3]  # 删除索引是1,2的元素 修改 索引切片修改 # 修改 lst = ["太白", "太", "五&q ...

  8. php-fpm.conf文件的位置在哪里

    在php的安装目录下的etc目录下:

  9. windows远程以及文件共享方法总结

    文件共享部分 紧接着下一步[允许使用空密码] 参考这个链接 https://jingyan.baidu.com/article/7f766dafa8c5ee4100e1d071.html 在我们使用w ...

  10. php 中输入输出提交

    </head> <body> 输出的两个位置 <? echo $_POST['sub']; ?> <form action="" meth ...