如何在if-else语句中声明变量?

时间:2014-03-09 13:06:16

标签: c++

我还是新手,我真的不懂很多东西 唯一令人遗憾的是 x = d / t ,我不知道把它放在哪里...... 我已经尝试了各种方法,但仍无法弄清楚放在哪里。

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{


     int d, t, s, z;
     cout<<"Enter the distance of your destination:"<<endl;
     cin >>d;
     cout<<"Enter the time you want to get there:"<<endl;
     cin >>t;

     for (z=1; z<=5; z++)
     {
      cout<<"Enter your speed:"<<endl;
      cin>>s;

      if (int x=d/t && x>=s)
      { 

              cout<<"Maintain your speed it is the appopriate speed: "<<s<<"mph"<<endl;
              break;
              }
              else 
              {

              cout<<"Go faster at this rate you won't get to your destination on time"<<endl;
              }
              }
    system("PAUSE");
    return EXIT_SUCCESS;
}

The Output always shows the if statement even though it should already show the else statement.. 
I really need help on this..

7 个答案:

答案 0 :(得分:2)

将它放在if

之外
int x = d / t;
if (x && x >= s)

或者你想要这个

int x = d / t;
if (x >= s)

答案 1 :(得分:1)

改为写:

  int x=d/t;
  if(x && x>=s)
  { 
      // ...

准确地得到你所写的结果。

答案 2 :(得分:1)

你不这样做。

如果您想要完成您所写的内容,请使用此选项:

int x = d/t;
if (x && x >= s)
{
   ...
}

但你可能真的只是想要:

if(x >= s)

答案 3 :(得分:1)

尝试

int x = d/t;
if (x >= s) {
 ....

根据C ++的书

答案 4 :(得分:1)

这是代码:

   int main(int argc, char *argv[])

{

 int d, t, s, z;
 cout<<"Enter the distance of your destination:"<<endl;
 cin >>d;
 cout<<"Enter the time you want to get there:"<<endl;
 cin >>t;

 for (z=1; z<=5; z++)
 {
  cout<<"Enter your speed:"<<endl;
  cin>>s;
 int x=d/t;
  if (x>=s)
  { 

          cout<<"Maintain your speed it is the appopriate speed: "<<s<<"mph"<<endl;
          break;
          }
          else 
          {

          cout<<"Go faster at this rate you won't get to your destination on     time"<<endl;
          }
          }
system("PAUSE");
return EXIT_SUCCESS;
       }

答案 5 :(得分:1)

为什么要声明x?

 if(d/t>=s)

答案 6 :(得分:1)

我猜您的问题是输入数据(距离,时间)应该是double,而不是int。在C ++中,整数除法会截断,即2 / 3 == 0。让我失去了几次......整数是为了数,而不是用于测量。

并且不要担心多次写一些表达式,当前的编译器足够聪明,可以注意并计算一次。无论如何,尽可能写出最简单,最清晰的代码。只有当它显示得太慢(不太可能)时,才能通过代码来收紧它。你编写代码的时间,理解错误行为时真正写的是什么,修复它比计算机时间的几秒钟更有价值。

永远不要忘记Brian Kernighan的“调试是首先编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您不够聪明,无法对其进行调试。”还有唐纳德克努特的"Premature optimization is the root of all evil"