1.5.9 获取用户输入
另一种给变量赋值的方式可以通过用户输入来实现。所以接下来,程序基于用户输入对新变量fuel赋值,如下面一行代码所示:
cin >> fuel;
cin和cout一样是iostream中定义的对象,且都属于std名称空间。在cin后面跟上>>(提取运算符)和变量名可以将值存储在变量中。也可以使用cin和提取运算符将用户输入存储在其他基本数据类型的变量中。为了证明一切都正常工作,程序将fuel显示给用户。
1.5.10 为类型定义新名称
可以为已有类型定义新的名称。实际上,下面这行代码就是这么做的:
typedef unsigned short int ushort;
这段代码将标识符ushort定义为类型unsigned short int的另外一个名称。重命名已有类型的方法如下:在typedef后面跟上当前类型,再跟上新名称。typedef通常用于给比较长的类型名定义较短的新名称。
新类型名的使用和原始类型一样。程序初始化了一个名为bonus的ushort型变量(其实就是unsigned short int型变量),然后显示它的值。
1.5.11 类型的选择
对于基本数据类型,有很多种选择。但如何知道选用哪种类型呢?如果需要整型,最好使用int。int占据的内存空间能被计算机最有效地处理。如果需要表示的整数比int型最大值还要大或者只表示正数,那么请使用unsigned int。
如果内存资源较少,可以使用存储空间较小的类型。然而,对于大多数计算机来说,不会出现内存不够的问题(在游戏控制台或移动设备上编程则另当别论)。
最后,如果需要使用浮点数,最好使用float。float占据的空间也能被计算机最有效地处理。
1.6 使用变量进行算术运算
一旦有了存储值的变量,我们就希望在游戏的过程中改变它们的值:也许希望通过对击败Boss的玩家加分给予奖励,或许又希望降低气阀里的氧气含量。之前介绍的(和一些新的)运算符可以完成这些任务。
1.6.1 Game Stats 2.0程序简介
Game Stats 2.0程序对表示游戏统计值的变量进行操作并显示结果。程序运行结果如图1-6所示。
从Course Technology网站(www.courseptr.com/downloads)或本书合作网站(http://www. tupwk.com.cn/downpage)上可以下载到该程序的代码。程序位于Chapter 1文件夹中,文件名为game_stats2.cpp。
图1-6 使用不同方式更改每个变量
// Game Stats 2.0
// Demonstrates arithmetic operations with variables
#include <iostream>
using namespace std;
int main()
{
unsigned int score = 5000;
cout << "score: " << score << endl;
//altering the value of a variable
score = score + 100;
cout << "score: " << score << endl;
//combined assignment operator
score += 100;
cout << "score: " << score << endl;
//increment operators
int lives = 3;
++lives;
cout << "lives: " << lives << endl;
lives = 3;
lives++;
cout << "lives: " << lives << endl;
lives = 3;
int bonus = ++lives * 10;
cout << "lives, bonus = " << lives << ", " << bonus << endl;
lives = 3;
bonus = lives++ * 10;
cout << "lives, bonus = " << lives << ", " << bonus << endl;
//integer wrap arround
score = 4294967295;
cout << "\nscore: " << score << endl;
++score;
cout << "score: " << score << endl;
return 0;
}
陷阱
当编译该程序时,可能得到如“[Warning] this decimal constant is unsigned”这样的警告。幸运的是,警告不会阻止程序的编译和运行。该警告是整数溢出的结果。您也许希望在程序中避免整数溢出。然而,本程序有意使用了这种溢出并显示这种情况的结果。1.6.5节在讨论这段程序时,将介绍关于整数溢出的知识。