C++语句,空语句,复合语句

表达式

C++表达式是在C++程序中执行某种操作并返回一个值的语句。

它由操作数、运算符和操作符的优先级和结合性(决定了运算符的执行顺序)组成。C++表达式可以用于执行各种操作,如算术运算、逻辑运算、条件判断等。

C++表达式可以包含一个或多个操作数,操作数可以是字面值、变量、函数调用或其他表达式的结果。运算符可以是算术运算符(如+、-、*、/等)、关系运算符(如==、!=、>、<等)、逻辑运算符(如&&、||、!等)等。

C++表达式会根据运算符的优先级和结合性进行求值。优先级指定了运算符的执行顺序,而结合性则决定了相同优先级的运算符如何结合。例如,乘法运算符的优先级高于加法运算符,因此表达式 "2 + 3 * 4" 中的乘法会先于加法运算进行。

C++表达式的结果类型由操作数的类型和运算符的要求决定。例如,两个整数相加的表达式的结果类型是整数,两个浮点数相加的结果类型是浮点数。

下面这些都是表达式

a+2
a*b
a<<2

简单语句

C+语言中的大多数语句都以分号结束,

ival+5//表达式

一个表达式末尾加上分号就变成了表达式语句,表达式语句的作用是执行表达式并丢弃求值结果

ival + 5; //一条没什么实际用处的表达式语句
cout << ival; // 一条有用的表达式语句


第一条语句没什么用处,因为虽然执行了加法,但是相加的结果没被使用。比较普遍的情况是,表达式语句中的表达式在求值时附带有其他效果,比如给变量赋了新值或者输出了结果。

空语句

最简单的语句是空语句,空语句中只含有一个单独的分号:

 ;//空语句


如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。

一种常见的情况是,当循环的全部工作在条件部分就可以完成时,我们通常会用到空语句。例如,我们想读取输入流的内容直到遇到一个特定的值为止,除此之外什么事情也不做:

// 重复读入数据直至到达文件末尾或某次输入的值等于 sought
while (cin >> s && s != sought)
;// 空语句


while 循环的条件部分首先从标准输入读取一个值并且隐式地检查 cin,判断读取是否成功。假定读取成功,条件的后半部分检查读进来的值是否等于sought的值。如果发现了想要的值,循环终止;否则,从cin中继续读取另一个值,再一次判断循环的条件。

 使用空语句时应该加上注释,从而令读这段代码的人知道该语句是有意省略的

别漏写分号,也别多写分号

因为空语句是一条语句,所以可用在任何允许使用语句的地方。

由于这个原因,某些看起来非法的分号往往只不过是一条空语句而已,从语法上说得过去。

下面的片段包含两条语句:表达式语句和空语句。

ival = v1 + v2;;//正确;第二个分号表示一条多余的空语句


多余的空语句一般是无害的,但是在if的条件后面限了一个额外的分分号就可能完全改变程序员的初衷。例如下面这个代码就会循环进行下去

// while循环体是那条空语句
//出现了糟糕的情况:额外的分号,循环体是那条空语句 
while (iter != svec.end());//递增运算不属于循环的一部分
++iter;

复合语句(块)

复合语句是指用花括号括起来的(可能为空的)语句和声明的序列,复合语句也被称作块。

一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块里访问。通常,名字在有限的区域内可见,该区域从名字定义处开始,到名字所在的(最内层)块的结尾为止。

如果在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句,则应该使用复合语句。

例如,while或者for的循环体必须是一条语句,但是我们常常需要在循环体内做很多事情,此时就需要将多条语句用花括号括起来,从而把语句序列转变成块。
举个例子

while (val <=10) {
sum += val; //把sum + val的值赋给sum。
++val; //给val加1
}


程序从逻辑上来说要执行两条语句,但是while循环只能容纳一条。此时,把要执行的语句用花括号括起来,就将其转换成了一条(复合)语句。

块不以分号作为结束。

所谓空块,是指内部没有任何语句的一对花括号。空块的作用等价于空语句:
 

while (cin >> s && s!= sought)
{}//空块 

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值