我是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/

10-17 03:06