7.表达式与语句

一、前言

表达式语句是两个很有意思、但可能也很无聊的概念。

原因就在于,在大部分编程语言中,这两个其实你看不出太大的差别:因为它们两个很多时候都是同时出现的。

但了解它们之间的区别有时候又是有必要的,比如在rust这门语言中,表达式就拥有了一个特殊的能力:作为返回值。

二、表达式与语句

首先来聊聊表达式,表达式是一个编程结构,一般情况下,它都会产生一个值。

比如赋值、函数调用、构造一个对象等等,这都属于表达式的范畴。

a=10
2+3
fun()
Object obj

而语句呢,代表这一种指令或者操作,通常用于执行某些任务或控制程序的流程。

最直接的形式就是,在大部分编程语言中,只要将;作为结尾,其就是一个语句。

因此上面的所有表达式,只需要在后面添加一个;即是一条语句:

a=10;
2+3;
fun();
Object obj;

这就是在执行某些任务。

除此之外,还有一些控制程序流程的语句,比如正常编程语言中都有的条件判断语句循环语句等等。

一般用到的关键字都是ifwhile等等。

它们的作用就是来控制程序的执行流程。

因为正常来说,程序都是从第一条语句开始,顺序执行到最后一条语句结束,这就是顺序结构

而在1966年,计算机科学家 BohmJacopini 证明了这样的事实:任何简单或复杂的算法都可以由顺序结构选择结构循环结构这三种基本结构组合而成。

因此只有顺序结构肯定是不够的,正常编程语言都会有选择结构循环结构,只是用到的关键字、语法等等可能会略有差别。

三、应用

正如本文开头所说,其实在大部分语言中,语句表达式这两者基本上就是你中有我、我中有你的情况,并不用太在意。

但在rust语言中却将表达式拥有返回值这一特点利用上了。

比如一个正常的函数返回值:

fn fun()->int{
	return 100+100;
}

但考虑到表达式本身就有返回值,那么上面的代码可以简写为这样:

fn fun()->int{
	100+100
}

rust中,这样的例子随处可见。

但也要注意,这种代码只能存在于最后,如果它的后面还有其它语句、表达式,那编译器其实是无法识别它的,只会将其与后面的代码尝试放在一起解析,肯定就会报错。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux