变量作为C++程序不可缺少的一部分,通常都会对其取一个名字,即变量名。即前面所讲述的标识符的一种。变量名命名按照一定的规则,通常在项目组中联合开发系统的时候往往都会制定相应的代码命名等规范,便于项目组统一联合开发。
变量的定义通常为计算机应用程序提供了一个有标识名称的内存空间。通过其名称,应用程序可以对其进行读、写和需要做的相应处理。同时针对需要,定义了几类变量类型。变量类型不同就意味着在内存中所占有大小、以及在其之上的操作的不同。C++语言提供了包括整型、字符型、布尔型和浮点型变量类型,下面分别通过相关概念讲述和实例讲解来理解相关变量类型的使用。
整型变量
假设一个软件模块开发中需要一个变量来计数,通常可以使用变量声明语句创建一个变量count,如下所示。
int count; //计数整型变量count
上述语句,为了实现计数采用了整型变量定义,int表明变量为整型,count为计数变量的名称,以分号为语句结尾,其后//为代码注释。count变量定义会为其分配的内存空间以供存放变量的值,有的声明语句并不是变量定义。例如,由关键字extern加变量类型和变量名称的声明,就表示程序之外的某处有该变量的定义。
通常一个整型变量的简单定义,并不提供初始值。如果该变量定义为一个全局的变量,系统会给其默认为0的初始值。如果该变量是个局部定义的,或者动态内存分配,系统不会为其提供初始值。这里需要注意的是系统没有提供默认的初始值,并不是代表该变量定义之后分配的内存中就没有值,而是这个值是未知的。这也是为什么在开发中数据处理有可能会莫名其妙的出现未知或不希望的数据。
这里需要注意的是一个好的代码编写习惯,就是变量定义的同时需要对其初始化。例如,这里的计数变量的定义同时给其初始化一个初值0。
int count = 0; //定义计数整型变量同时初始化值为0
C++语言提供的除了不同的变量类型以外,每种类型变量根据所在平台的不同,其大小也所有不同。这里通常整型变量在32位平台都为4个字节的大小。整型变量根据表示的范围不同可以分为有符号型、无符号型、长整型和短整型,它们所表示数据大小范围各不相同。几种整型变量的声明如下所示。
signed int count; //有符号整型变量
unsigned int count; //无符号整型变量
long int count; //长整型变量
short int count; //短整型变量
通常整型变量如intcount定义时候默认的情况下是有符号的,显示的给出signed定义是为了与unsigned形成对称。下面通过一个计数实例讲述整型变量的使用场景和方式。
1.准备实例
打开UE工具,创建新的空文件并且另存为chapter0402.cpp。该代码文件随后会同makefile文件一起通过FTP工具传输至Linux服务器端,客户端通过scrt工具访问操作。程序代码文件编辑如下所示。
/**
* 实例chapter0402
* 源文件chapter0402.cpp
* 计算字符串长度
*/
#include <iostream>
#include <string> //使用字符串必须包含此头文件
using namespace std;
/*字符串长度计算函数,输入字符串参数str,返回字符串长度count*/
int stringCount(const string &str)
{
intcount = 0; //定义字符串计数整型变量,同时初始化值为0
for(inti = 0;i < str.size();i++) //循环计数字符串的长度
{
++count; //++表示计数变量每次循环中自动加1
}
returncount; //返回计数最终结果
}
/*主程序入口*/
int main()
{
stringstr; //定义字符串变量str
int reslutcount; //定义计数结果变量
cout<<"pleaseinput need count string:"<<endl; //打印输入提示信息
cin>>str; //输入字符串str
reslutcount= stringCount(str); //调用字符串长度计算函数,将其返回的结果赋值给计数结果变量
if(reslutcount) //判断如果返回的长度不为0,则打印其计数结果
{
cout<<"string'scount:"<< reslutcount <<endl; //屏幕上打印计数结果
}
else //否则打印没有获取到字符串长度提示
{
cout<<"nocount!"<<endl;
}
return0;
}
本实例代码主要实现采用整型数计数的功能。下面将会通过makefile工程文件的编辑,实现make执行编译生成可执行程序的功能。
2.编辑makefile
Linux平台下需要编译源文件为chapter0402.cpp,相关makefile工程文件编译命令编辑如下所示。
OBJECTS=chapter0402.o
CC=g++
chapter0402: $(OBJECTS)
$(CC)$(OBJECTS) -g -o chapter0402
clean:
rm -fchapter0402 core $(OBJECTS)
submit:
cp -f -rchapter0402 ../bin
cp -f -r*.h ../include
上述makefile文件套用了上个实例模板。之所以其中采用变量定义替换的方式,目的就是为了方便编译程序的替换。从makefile工程文件中可以看出,布局是相同的。不同的地方仅仅是代码的文件名、生成可执行程序的名称等,大大方便了每次都要重新编写一遍编译命令的编辑方式。
3.编译运行程序
当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至实例bin目录,执行该程序文件运行结果如下所示。
[developer@localhost src]$ make
g++ -c -o chapter0402.o chapter0402.cpp
g++ chapter0402.o -g -o chapter0402
[developer@localhost src]$ make submit
cp -f -r chapter0402 ../bin
cp -f -r *.h ../include
[developer@localhost src]$ cd ../bin
[developer @localhost bin]$ ./chapter0402
please input need count string:
hello,world!
string's count:12
上述实例主要由主程序和实现字符串计数的函数两个部分组成。首先,这里需要使用到字符串变量的定义,字符串变量使用是由库提供的string类来实现的,所以使用string定义必须包含库的头文件即#include <string>才能正确使用它。其次,这里使用了基本函数调用,定义了计数功能的函数在主程序中调用计算返回正确的结果。最后计数变量用到了自增运算符号,主要用来每循环一次计数变量自动增加1。本例子主要为了简单阐述整型变量计数使用情况,字符串、函数以及运算符部分这里可以先了解一下使用的基本方式,具体详细的讲述会在后面的小节中出现。
布尔型变量
C++语言在C语言基础之上提供的布尔型变量,其关键字标识为bool。该变量只有两种逻辑状态值,通常是真或假。C++语言上提供的关键字值即为true(真)或false(假),当布尔类型需要当作一个算术值的时候,布尔变量会转变为整型的值:true(整型值0),false(整型值1)。
关于布尔变量值,这里需要简单说明下。C++语言标准中表示假(false)的值确定为0,表示真(true)的值由于不同语言的标准不同,至今没有标准值。具体到C++语言中一切非零的值都可以转变换为true值。对于布尔变量,通常在软件编程中会用作判断条件改变程序走向,或者作为标记使用。
下面通过一个将bool型变量作为标记的例子,来了解bool型变量在软件编程中的使用情况。
1.准备实例
打开UE工具,创建新的空文件并且另存为chapter0403.cpp。该代码文件随后会同makefile文件一起通过FTP工具传输至Linux服务器端,客户端通过scrt工具访问操作。程序代码文件编辑如下所示。
/**
* 实例chapter0403
* 源文件chapter0403.cpp
* 判断功能函数返回,决定程序走向
*/
#include <iostream>
using namespace std;
/*基本功能函数,主要功能实现在注释的函数主体下添加*/
bool function()
{
/*
函数处理主体
......
*/
returntrue; //正确执行返回true
}
/*主程序入口*/
int main()
{
boolflag = false; //定义布尔型标记变量,初始为false值
flag= function(); //调用功能函数,将其返回值赋给标记变量flag
if(flag) //依据功能函数执行正确与否的值判断程序打印信息
{
cout<<"functionis true!"<<endl; //打印功能函数执行成功信息提示
}
else
{
cout<<"functionis fail!"<<endl; //打印功能函数执行失败信息提示
}
return0;
}
上述实例主要实现根据标记返回值判断程序信息输出的功能。通常涉及对错两类值的标记都会采用bool型变量表示。该类变量定义在应用中主要用于表示程序遇到不同情况处理的标记。
2.编辑makefile
Linux平台下需要编译源文件为chapter0403.cpp,相关makefile工程文件编译命令编辑如下所示。
OBJECTS=chapter0403.o
CC=g++
chapter0403: $(OBJECTS)
$(CC)$(OBJECTS) -g -o chapter0403
clean:
rm -fchapter0403 core $(OBJECTS)
submit:
cp -f -rchapter0403 ../bin
cp -f -r*.h ../include
上述makefile文件套用前面的模板格式,主要替换了代码文件、程序编译中间文件、可执行程序等。在编译命令部分-g选项的加入,表明程序编译同时加入了可调式信息。
3.编译运行程序
当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至bin目录,执行该程序文件运行结果如下所示。
[developer @localhost src]$ make
g++ -c -o chapter0403.o chapter0403.cpp
g++ chapter0403.o -g -o chapter0403
[developer @localhost src]$ make submit
cp -f -r chapter0403 ../bin
cp -f -r *.h ../include
[developer @localhost src]$ cd ../bin
[developer @localhost bin]$ ./chapter0403
function is true!
布尔型变量在软件编程中常作为标记值来使用,程序执行依据标记值决定程序的走向,即决定程序执行的结果不同。上例主要定义了一个空的功能性函数,根据调用执行结果返回值,主程序做出不同的响应,这里功能函数中的处理主体可以由初学者自己填写功能代码来测试运行结果。通常情况下,软件项目应用中,标记用来表示不同的处理。当返回正确的标记值时程序实现正确的功能。如果返回不正确的标记值,通常需要记录日志便于日后查询排错!
浮点型变量
浮点型也称为实型数据,用来表示浮点数。与整型数据相同的是浮点数也有表示范围大小的区分。通常分为三种大小类型,分别是float、double和long double。与整型数据不同的是浮点型数据可以表示指带小数位的数,所以称之为“浮点数”。这三种大小类型的浮点数表示主要是用来描述浮点数的精度,也就是表示的小数精确的位数的不同。
float表示单精度实型数,32位平台上通常为单个字(即4个字节)大小存储空间。double表示双精度实型数,32位平台上通常为双字(即8个字节)大小的存储空间。long double表示长双精度实型数,32位平台上通常为三个字或四个字大小的存储空间。在软件编程中具体使用哪种类型精度的浮点型,需要根据实际的情况分析来定义。通常默认使用double双精度浮点型基本可以满足大多数的情况需求。
下面通过一个简单的使用双精度浮点型计算圆面积的例子,熟悉下浮点类型的使用情况。
1.准备实例
打开UE编辑器,新建空白文件另存为chapter0404.cpp。随后连同makefile编译文件一起通过FTP工具传输至Linux服务器。客户端通过scrt访问操作。实例程序代码编辑如下所示。
/**
* 实例chapter0404
* 源文件chapter0404.cpp
* 浮点型计算圆面积
*/
#include <iostream>
#include <iomanip> //需要使用到格式控制符
using namespace std;
/*主程序入口*/
int main()
{
doubleradius; //定义双精度圆半径
constdouble PI = 3.1415926; //定义常量PI值
cout<<"pleaseinput circle's radius:"<<endl; //打印输入圆半径提示信息
cin>>radius; //输入圆半径值
doublecircleArea = PI*radius*radius; //定义圆面积浮点型变量,以圆面积计算为结果给其赋值
cout<<"Thecircle's area:"<<circleArea<<endl; //默认宽度输出圆面积结果
cout<<"Thecircle's area:"<<setprecision(8)<<circleArea<<endl; //设置8位宽度输出圆面积
return0;
}
上述实例代码主要实现采用浮点变量类型,计算圆面积并打印输出结果的功能。浮点类型变量主要用于对计算精度敏感型应用程序处理中。
2.编辑makefile
在Linux平台下需要编译源文件为chapter0404.cpp,相关makefile工程文件编译命令编辑如下所示。
OBJECTS=chapter0404.o
CC=g++
chapter0404: $(OBJECTS)
$(CC)$(OBJECTS) -g -o chapter0404
clean:
rm -fchapter0404 core $(OBJECTS)
submit:
cp -f -rchapter0404 ../bin
cp -f -r*.h ../include
上述makefile文件套用前面的模板格式,主要替换了代码文件、程序编译中间文件、可执行程序等。在编译命令部分-g选项的加入,表明程序编译同时加入了可调式信息。
3.编译运行程序
当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至bin目录,执行该程序文件运行结果如下所示。
[developer @localhost src]$ make
g++ -c -ochapter0404.o chapter0404.cpp
g++ chapter0404.o -g -o chapter0404
[developer @localhost src]$ make submit
cp -f -r chapter0404 ../bin
cp -f -r *.h ../include
[developer @localhost src]$ cd ../bin
[developer @localhost bin]$ ./chapter0404
please input circle's radius:
12.123
The circle's area:461.711
The circle's area:461.71084
上例主要实现了根据输入圆半径值计算圆面积的功能,并且采用默认浮点数输出方式和设置宽度输出方式打印了结果。通常情况下,浮点数输出默认宽度是6位,第一次输出结果为461.711。第二次使用了iomanip中的setprecision(8)方法设置显示输出宽度为8位,即计算结果为461.71084。
字符型变量
C++语言也为保存字符集中单个的字符提供了一种类型变量。该变量称为字符型变量,使用关键字char来表示。其基本的定义语法格式实例如下所示。
char singleChar ; //定义字符型变量
char singleChar = ‘a’; //定义字符型变量并使用字符’a’初始化该变量
单个字符类型使用8位单字节大小表示,同样字符型变量也有有符号和无符号之分。通常它们所表示的值得范围不同。默认情况下字符型变量为一个字节的有符号整型变量处理。下面通过一个简单的字符打印的程序,理解字符类型在编程中的使用方式。
1.准备实例
打开UE编辑器,新建空白文件另存为chapter0405.cpp。随后连同makefile编译文件一起通过FTP工具传输至Linux服务器。客户端通过scrt访问操作。实例程序代码编辑如下所示。
/**
* 实例chapter0405
* 源文件chapter0405.cpp
* 屏幕上打印输入单个字符信息
*/
#include <iostream>
using namespace std;
/*主程序入口*/
int main()
{
charsingleChar; //定义字符变量
cout<<"pleaseinput a char:"<<endl; //打印输入提示信息
cin>>singleChar; //输入单个字符
cout<<"Thechar is:"<<singleChar<<endl; //打印之前输入的单个字符
return0;
}
上述实例代码主要演示通过输入输出流,从终端键盘设别输入字符型变量最终打印输出该字符信息的功能。字符型变量在应用程序中有着相当多的应用,后续章节会不断接触到相关操作知识。
2.编辑makefile
Linux平台下需要编译源文件为chapter0405.cpp,相关makefile工程文件编译命令编辑如下所示。
OBJECTS=chapter0405.o
CC=g++
chapter0405: $(OBJECTS)
$(CC)$(OBJECTS) -g -o chapter0405
clean:
rm -fchapter0405 core $(OBJECTS)
submit:
cp -f -rchapter0405 ../bin
cp -f -r*.h ../include
上述makefile文件套用前面的模板格式,主要替换了代码文件、程序编译中间文件、可执行程序等。在编译命令部分-g选项的加入,表明程序编译同时加入了可调式信息。
3.编译运行程序
当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至实例bin目录,执行该程序文件运行结果如下所示。
[developer @localhost src]$ make
g++ -c -o chapter0405.o chapter0405.cpp
g++ chapter0405.o -g -o chapter0405
[developer @localhost src]$ make submit
cp -f -r chapter0405 ../bin
cp -f -r *.h ../include
[developer @localhost src]$ cd ../bin
[developer @localhost bin]$ ./chapter0405
please input a char:
a
The char is:a
该程序主要实现打印一个输入字符的简单功能。通过C++语言的输入输出流,程序中通过cin输入流对象以及重载>>符号,输入指定字符型变量singleChar。后通过输出流cout对象以及重载<<符号,向显示屏幕输出相应的字符型变量值。更多的字符显示方式初学者可以在自己的测试代码中灵活的使用,掌握字符基本类型的使用。