为什么我的布尔值返回一个整数?

时间:2017-04-02 01:45:56

标签: c++ boolean increment

我是编程世界的新手,我有一个学校作业来创建一个包含if循环的简单程序。 基本上,如果 a 大于18,我希望我的代码返回 true ,如果 a 更少,我希望 false 每次 canTakeRoadtest 返回 false 时,我还希望 a 增加1。当我运行我的代码时,我得到的是

“我今年0岁。

我可以参加路考。 0"

我想知道为什么 bool canTakeRoadtest 返回一个整数,以及为什么 a 没有递增。任何帮助将不胜感激,我为这个简单的问题道歉,但我们都从某个地方开始!

我的编码环境是Eclipse Neon,如果它有所不同。

#include <iostream>

using namespace std;

int main() {
//Local Variables
    int a = 0;
    bool canTakeRoadtest = false;
//If Loop
    if (a >= 18) {
        canTakeRoadtest = true;
        cout << "I'm ready!\n";
    } else {
        canTakeRoadtest = false;
        cout << "I am " << a << " years old.\n";
        cout << "I can take my road test. " << canTakeRoadtest << endl;
        a++;

    }

    //return 0;

}

2 个答案:

答案 0 :(得分:3)

在幕后,C ++中的每个变量类型都有一个数字表示。这是有道理的,因为在计算机的基础级别,所有的都是数字。有两种主要的原始数据类型(通常)表示为数字以外的东西,但实际上只是数字。第一个是 bool ,第二个是 char

例如,如果设置

bool myBool = true;
在幕后,它确实将您的变量设置为 1 。同样,如果你设置

myBool = false;

幕后将 0 。同样的规则适用于字符。如果你设置

char myChar = 'a';

它确实将char设置为 97 。每个角色都有一个数字表示,如果你看一下table,你可以看到这些。

那么,为什么 cout 显示 bool 的数字表示而不是&#34;英语&#34;,这只是因为谁编码< strong> iostream 决定当你给它一个 bool 时,它会显示数字代表而不是&#34;英语&#34;表示。但是,这同样不适用于字符。它们将通过 iostream 表示为角色。

要修复 iostream 打印出错误的表示,请更改代码

cout << "I can take my road test. " << canTakeRoadtest << endl;

cout << "I can take my road test. false" << endl;

你也可以使用boolalpha,正如Lovelace42所述。

答案 1 :(得分:2)

使用boolalpha。默认情况下,bool值是整数,boolaplpha设置bool标志以输出其文本表示

http://www.cplusplus.com/reference/ios/boolalpha/

或者你可以改变你的cout声明。

if (a >= 18) {
    canTakeRoadtest = true;
    cout << "I'm ready!\n";
} else {
    canTakeRoadtest = false;
    cout << "I am " << a << " years old.\n";
    cout << "I can take my road test. false" << endl;
    a++;
}