c ++临时变量解释

时间:2012-07-15 02:04:54

标签: c++ visual-c++

我已经搜索了临时变量的意思但我不能&我无法理解。我已经完成了没有临时变量的if-else结构,现在我正在尝试if-else结构和一个临时变量。我找不到差异。

问题是

  1. 编写一个读取三个整数(a,b和c)的程序,并使用if else结构和临时变量打印最大的值。
  2. if else结构没有临时变量。
  3. 我已经完成了第一个问题。

    #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 个答案:

答案 0 :(得分:2)

&#34;临时&#34;的确切含义可以变化,但在这种情况下,它只是一个变量而不是用于保存输入的变量。我认为一个更好的术语可能是&#34;中间&#34;。

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

答案 1 :(得分:0)

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

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

“临时”变量的目的是避免重复所有print语句,如第一个示例所示。

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

答案 2 :(得分: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;

答案 3 :(得分:0)

实际上,&#34;临时&#34;你提到的变量不是真正的临时变量。在编译器的视图中,它只是一个中间变量。用户无法访问真正的临时文件,但对于编译器而言。