我是C++编程的新手,一周没有做任何事情,所以我在弄乱我到目前为止所知道的事情,以查看是否需要再次进行研究。
但是,我遇到了一个关于 bool(boolean) 的问题(以前从未真正使用过它们)。
资源:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
signed long int x;
unsigned short int y = 12345;
bool POSX;
bool yes;
cin >> x;
if (x >= 0)
{
POSX = true;
}//end of if for bool
else
{
POSX = false;
}
cout << "This is the current value of X: " << x << endl;
if(x < y)
{
cout << "x is less than the integer y \n \n";
}//end of if
else
{
cout << "y is greater than the integer x \n \n";
}//end of else
cout << "The current value of Y is: " << y << endl << endl << endl;
cout << "Is X positive?: " << POSX << endl << endl;
cout << "How much more would X need to be to surpass y? The answer is: " << y - x << endl;
if(x > y)
{
cout << "well, actually, x is greater than y by: " << y - x << " so you would need to add that to get to the value of x" <<endl <<endl;
}//end of if
cout << "Do you like cookies? Enter below. . ." <<endl;
cin >> yes;
if(yes = "yes") // should this be if(yes = 1)?
{
cout << "I do too! But only when they are soft and gooey!";
} //end of if for bool yes
else
{
cout << "Well, join the dark side, and you may be persuaded by the power of cookies and the power of the dark forces!";
}//end of else for bool yes
char f;
cin >> f;
return 0;
} //end of main
我遇到的问题是,当我尝试编译时,一方面,程序退出,然后才能看到Cookie问题的结果[因此,我必须在编译器中放置一个断点];其次,当我看到答案时,它总是会给出"is"响应,而不是其他任何响应。
因此,如果我输入no作为输入,它仍然会输出if for bool(boolean) 值yes。我不确定在最后一条语句中是否正确定义了if子句。
有人可以帮忙吗?
最佳答案
好,两件事。您的主要问题是:
if(yes = "yes")
"is"被定义为 bool(boolean) 类型,即它可以包含值“true”或“false”。您试图进行比较(实际上是由于仅使用一个=而不是==进行赋值,这是您检查相等性的方法),一个 bool(boolean) 值与字符串“yes”的比较。好吧,那没有道理。它应该是:
if( yes )
而已。 'yes'已经是一个 bool(boolean) 值,并且if语句中的表达式不再需要。
其次,像这样的构造是多余且不必要的:
if (x >= 0)
{
POSX = true;
}//end of if for bool
else
{
POSX = false;
}
您正在检查一个 bool(boolean) 值,然后分配一个。只需像这样一行即可:
POSX = (x >=0 );
另外,通常不会对局部变量使用所有上限。
还有一件事;您输入的是字符串数据(“否”或"is"),而cin预期为int。我建议您花一些时间来了解什么是数据类型。
关于c++ - C++代码, boolean 值和循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4140106/