0

我已经搜索了临时变量是什么意思,但我无法理解。我已经完成了没有临时变量的 if-else 结构,现在我正在尝试执行 if-else 结构和临时变量。我找不到区别。

问题是

  1. 编写一个程序,读取三个整数(a、b 和 c)并使用 if else 结构和临时变量打印最大的值。
  2. if else 没有临时变量的结构。

我已经完成了第一个问题。

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int a,b,c;

cout<<"a : ";
cin>>a;
cout<<"b : ";
cin>>b;
cout<<"c : ";
cin>>c;

if(a>b && a>c)
{
    cout<<"largest : "<<a;
}else{
    if(b>a && b>c)
    {
        cout<<"largest : "<<b;
    }else{
        if(c>a && c>b)
        {
            cout<<"largest : "<<a;
        }else{
            cout<<"error!";
        }
    }
}


getch();
return 0;
}

但是对于第二个问题是这样的吗?

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int a,b,c;
int max;

cout<<"a : ";
cin>>a;
cout<<"b : ";
cin>>b;
cout<<"c : ";
cin>>c;


if(a>b && a>c)
{
    max=a;
    cout<<"largest : "<<max;
}else{
    if(b>a && b>c)
    {
        max=b;
        cout<<"largest : "<<max;
    }else{
        if(c>a && c>b)
        {
            max=c;
            cout<<"largest : "<<max;
        }else{
            cout<<"error!";
        }
    }
}


getch();
return 0;
}

我只是想确认一下,因为我不完全理解临时变量是什么意思。谢谢。

4

4 回答 4

2

“临时”的确切含义可能会有所不同,但在这种情况下,它只是表示一个变量,而不是用于保存输入的变量。我认为更好的术语可能是“中级”。

当您只试图找到三个值中的最大值时,有点难以看出使用中间变量的优势,但想象一下,如果您试图找到 100 个值中的最大值。如果没有中间变量,你会怎么做?

于 2012-07-15T02:07:37.243 回答
0

实际上,您已经完成了第二个问题作为您的第一个结果。第二个版本(回答第一个问题)应该更像这样:

int max;
if (a > b && a > c) max = a;
else if (b > a && b > c) max = b;
else max = c;
cout << max;

“临时”变量的目的是避免像第一个示例那样重复所有打印语句。

我不喜欢临时使用这个词。临时变量在 C++ 中具有特殊含义,与您使用某些代码结构时编译器隐式创建的变量完全相关。从这个意义上说,“max”不是一个临时变量。您的讲师可能在使用该术语时很松散。

于 2012-07-15T02:20:41.097 回答
0

也许练习的目的是证明为什么临时变量是好的?如果是这样,也许这就是提问者想要的:

int a, b, c;

...

// No temporary variable - your code is the simplest possible
if(a>b && a>c)
{
    cout<<"largest : "<<a;
}else{
    if(b>a && b>c)
    {
        cout<<"largest : "<<b;
    }else{
        if(c>a && c>b)
        {
            cout<<"largest : "<<a;
        }else{
            cout<<"error!";
        }
    }
}

// May use a temporary variable - code can be simplified
int max = a;
if (max < b)
    max = b;
if (max < c)
    max = c;
cout<<"largest : "<<max;
于 2012-07-15T20:56:51.703 回答
0

实际上,您引用的“临时”变量不是真正的临时变量。在编译器看来,它只是一个中间变量。用户无法访问真正的临时文件,但编译器无法访问。

于 2018-03-28T03:08:49.383 回答