类型、变量与标准(14)

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节在讨论这段程序时,将介绍关于整数溢出的知识。

读书导航