在程序设计语言中一条命令执行语句通常由两个部分组成,命令操作和操作数。表达式就是由一个或者多个操作数以及应用在这些操作数之上的操作构成的。最简单的表达式如用来赋值的常量、变量,通过如下所示的语句定义,初略的理解下表达式的概念。
int id = 3; //定义整型变量id,用数值3来赋值
double PI = 3.1415926; //定义浮点型变量PI,用数值3.1415926来赋值
int count = id; //定义整型变量count,用整型变量id来赋值
以上变量定义的以及赋值作为右值的操作符或者数值都可以视为表达式,比如上述的整型常量3、浮点型常量的3.1415926以及作为右值赋值的整型变量id。这里需要区分一个概念,那就是程序的左值和右值。简单的说左值就是变量所要表示的内容在内存中存放的地址;右值则为该变量所代表的内容。以上3、3.1415926以及id都为右值,分别存储在变量id、PI和count地址中。可见表达式的结果通常都是作为右值出现的。
另外,除了单个的操作数之外,具有运算符的计算式也属于表达式的一种。几个定义实例如下所示。
3 + 7 //两个常量相加表达式
count1 + count2 //两个变量相加的表达式(变量中的值相加)
count1/count2*2 //两个变量相除再乘以常量2的表达式
count1 + count2/id //复杂运算的表达式
以上定义都可以用作程序操作的表达式定义,计算出表达式的结果可以作为右值。由操作数加运算符构成的表达式可以是任意类型的操作,也就是根据每个操作数的类型,在其之上自然会有适当的操作应用在这些操作数上。
下面通过一个实际表达式计算例子,比较直观的理解表达式在C++语言程序中的应用情况。
1 准备实例
打开UE编辑器,新建空白文件另存为chapter0408.cpp。随后连同makefile编译文件一起通过FTP工具传输至Linux服务器。客户端通过scrt访问操作。实例程序代码编辑如下所示。
/**
* 实例chapter0408
* 源文件chapter0408.cpp
* 表达式操作程序
*/
#include <iostream>
#include <string> //使用到字符串操作,需要包含此头文件
using namespace std;
/*主程序入口*/
int main()
{
intcount1,count2,count3; //定义3个整型变量
count1= 2; //分别给3个整型变量赋值
count2= 3;
count3= 4;
count1= count2 + count3; //计算表达式count2+count3,并将结果赋给count1
cout<<"Thecount result:"<<count1<<endl; //打印count1的值
stringprefix = "test"; //定义2个字符串变量,同时给其赋值
stringsuffix = ".txt";
stringfilename = prefix + suffix; //计算2个字符串变量,并将其结果赋给filename
cout<<"Thefile name:"<<filename<<endl; //打印filename的值
return0;
}
上述实例主要演示整型变量、字符串变量表达式计算情况,其中整型数已经在上述章节介绍过。字符串变量这里仅仅作为表达式计算实例演示使用,后续章节会专门介绍字符串的使用情况。
2 编辑makefile
Linux平台下需要编译源文件为chapter0408.cpp,相关makefile工程文件编译命令编辑如下所示。
OBJECTS=chapter0408.o
CC=g++
chapter0408: $(OBJECTS)
$(CC)$(OBJECTS) -g -o chapter0408
clean:
rm -fchapter0408 core $(OBJECTS)
submit:
cp -f -rchapter0408 ../bin
cp -f -r*.h ../include
上述makefile文件套用前面的模板格式,主要替换了代码文件、程序编译中间文件、可执行程序等。在编译命令部分-g选项的加入,表明程序编译同时加入了可调式信息。
3 编译运行程序
当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至实例bin目录,执行该程序文件运行结果如下所示。
[developer @localhost src]$ make
g++ -c -o chapter0408.o chapter0408.cpp
g++ chapter0408.o -g -o chapter0408
[developer @localhost src]$ make submit
cp -f -r chapter0408 ../bin
cp -f -r *.h ../include
[developer @localhost src]$ cd ../bin
[developer @localhost bin]$ ./chapter0408
The count result:7
The file name:test.txt
上例中,主要定义实现了几类表达式作为右值的操作。首先,定义3个整型变量,使用常量数值2、3、4作为右值表达式赋值,此时常量的2、3、4数值就可以看作是表达式了。其次,两个整型变量相加作为表达式计算其结果给count1赋值。最后,使用了字符串部分的操作,Linux下文件开发时文件名的命名也是不可缺少的一个部分,一般由前缀、后缀以及必要的中间串构成。这里简单的就以前缀加后缀来表示。同样,定义了两个字符串变量,使用字符串常量表达式作为右值给其赋值。后将两个字符串变量值相加(即相互串连)作为表达式计算其结果赋给filename变量,最后打印结果。字符串的操作暂不详细描述,后面会有章节涉及该部分,这里主要先熟悉一下其使用方式。
在C++语言中表达式的包含面比较广,用运算符连接的常量、变量以及函数等运算成分形成的式子都可以称为表达式。更多的内容会在后续的程序例子中不断的提及该概念,让初学者对表达式有个比较全面的认识。