2016-04-25 13 views
1

elifを使用して条件をテストしようとしていますが、目的の結果が得られません。私が間違っていることを特定するのを助けてください。#if elifディレクティブが正常に動作しない

#include <iostream> 
using namespace std; 
#define a(t1)(t1+50) 
#define b(t2)(t2+100) 
int main() 
{ 
    union gm 
    { 
     int t1; 
     int t2; 
    }; 
    gm c; 

    cout <<"Enter tokens earned in game 1: "<<endl; 
    cin>>c.t1; 
    int x=c.t1; 
    cout <<"Enter tokens earned in game 2: "<<endl; 
    cin>>c.t2; 
    int y=c.t2; 
    int m= a(x)+100; 
    int n= b(y)+50; 
    int p; 
    p=m+n; 
    cout <<p<<endl; 

#if(p<500) 
    cout <<"Points earned too less"<<endl; 
#elif (p>500 && p<1500) 
    cout<<"You can play game 1 free"<<endl; 
#elif (p>1500 && p<2500) 
    cout<<"You can play game 1 free"<<endl; 
#elif p>3000 
    cout<<"You can play game 1 and game free"<<endl; 
#endif 
    return 0; 
} 

Pの値が500を超えても、「ポイントはあまりにも少なくなりました」というメッセージが表示されます。

助けてください。

答えて

4

実行時に変数の値に依存するプリプロセッサマクロを使用することはできません。

pをプリプロセッサマクロとして定義されない限り、

#if(p<500) 

は以下のように翻訳される:それは真であるので

#if(0<500) 

、コードだけでブロックをオブジェクトコードにコンパイルされます。それはあなたが見ている動作を説明しています。

プリプロセッサーではなく、if-elseのC++のステートメントを使用する必要があります。

if (p<500) 
{ 
    cout <<"Points earned too less"<<endl; 
} 
else if (p>500 && p<1500) 
{ 
    cout<<"You can play game 1 free"<<endl; 
} 
else if (p>1500 && p<2500) 
{ 
    cout<<"You can play game 1 free"<<endl; 
} 
else if (p>3000) 
{ 
    cout<<"You can play game 1 and game free"<<endl; 
} 
else 
{ 
    // Do something for everything else. 
} 
+0

ありがとう、Mr Sahu –

+0

@ArtiDeshpande、よろしくお願いいたします。私は助けてうれしいです。 –

関連する問題