0

一時変数の意味を検索しましたが、理解できませんでした。一時変数なしで if-else 構造を実行しましたが、今は if-else 構造と一時変数を実行しようとしています。違いがわかりませんでした。

問題は

  1. 3 つの整数 (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;
}

しかし、2番目の質問はこのようなものですか?

#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

「一時的」の正確な意味はさまざまですが、この場合は、入力を保持するために使用される変数以外の変数を意味します。「中間」という言葉の方が適切かもしれません。

3 つの値のうち最大のものだけを見つけようとしている場合、中間変数を使用する利点を理解するのは少し難しくなりますが、100 個の値の最大値を見つけようとしている場合を想像してみてください。中間変数なしでどのようにしますか?

于 2012-07-15T02:07:37.243 に答える
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

実際には、最初の結果として 2 番目の質問を行いました。2 番目のバージョン (最初の質問に答える) は、次のようになります。

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」は一時変数ではありません。あなたの講師は、用語の使い方が緩いのかもしれません。

于 2012-07-15T02:20:41.097 に答える