我是编程世界的新手,我有一个学校作业来创建一个包含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;
}
答案 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++;
}