2017-11-28 10 views
0

まず、私はプログラミングに全く新しいことを言います。これが私の最初のプログラムです。私がこれを始める前に私は5時間のチュートリアルを見てきましたが、今私は自分で解決できない最初の問題にぶつかってきました。だから私はここの誰かが私を助けることを願って!複数の入力値を使用して同じ関数を呼び出す方法

私はすべての機能が、私はちょうど、ユーザーが、彼らは上をクリックした内容に応じ6つの異なるものを印刷できるようにしたいが、代わりの作るprintfだけの純粋で、次のコード

void printMainMenu(); 
void printTourMenu(); 
void assignment1(); 
void assignment2(); 
void assignment3(); 
void assignment4(); 
void assignment5(); 
void assignment6(); 

int main() 
{ 
int userInput; 
printMainMenu(); 
printf("\n\n"); 
scanf("%d", &userInput); 
if(userInput == 4||6) 
    { 
     printTourMenu(); 
    } 

    if (userInput == 1) 
    { 
     assignment1(); 
    } 

    if(userInput == 2) 
    { 
     assignment2(); 
    } 

    if(userInput ==3) 
    { 
     assignment3(); 
    } 

    if(userInput ==5) 
    { 
     assignment5(); 
    } 

return 0; 

を書きました2つのif文が入力に応じて同じことをするために、私は複数の入力で動作するif文を作成してみます。

問題は、私は 4, 6、それがどんなI入力と私は実際に呼んでいる、関数printTourMenuを印刷しない保持4||6の両方で試してみたif(userInput == 4||6)です。 4&&6と入力するとprintTourMenuが入力されますが、入力していないときは入力されません。

だから間違っていますか?私は誰かがこの始まるプログラマを助けることを願っています:D

+2

'if(userInput == 4 || userInput == 6)' –

+0

@SteveSummitコメントの質問に回答しないようにしてください。回答は、正しいか間違っている、助けているか、または誤解を招くような場合に投票することができるように、回答として投稿する必要があります。あなたが正しいとはいえ、答えをコメントとして投稿すると、回答の投票システムが回避されます。 –

+0

ありがとうございます!私はあなたにキスすることができます:) – Bilbo92

答えて

0

実は、答​​えは簡単だったとスティーブ・サミットでできるだけ早く提供:

if (userInput == 4||6) 

は期待しません。正しいは次のようになります。
if (userInput == 4 || userInput == 6) 

私見

は、あなたが今尋ねるべき: if (userInput == 4||6)が間違っている場合

ので、–なぜコンパイラは文句を言いませんでしたか?(私は試していませんでしたが、それはしなかったと仮定します)

これとIMHOの理由は2つあります。

  1. C.には特別なブール型が代わりにありません、すべての整数≠ 0はTRUEとしてカウントされますが、0はFALSE としてカウントされます。したがって、論理演算子は整数、比較演算子も同様に計算します。

したがって、userInput == 4 || 6は有効な算術式であり、正確な結果が得られます。

<オール開始=「2」>
  • あなたはおよそC演算子の結合性を知っていてもを優先する必要が評価され、どのようにuserInput == 4 || 6理解します。両方の用語は非常に(私は少なくとも定期的に)頻繁に検索されるので、非常に簡単にgoogleで見つけることができます。
  • 参照表cppreference.comC Operator Precedenceをお勧めします。この表を研究

    は、我々は、次を参照してください。

    1. オペレーター==||は、両方の左から右に評価されます。

    2. オペレータ||として優先度が低くなります。つまり、==がより強くバインドされます。つまり、==が最初に計算されます。

    したがって、2例で始めている:⇒ userInput == 4::⇒ userInput == 40

  • userInputは何か他のものが含まれ

    1. userInputが値4が含まれています

      これらの最初の結果は、第二オペレータ|| 6に適用される:

      1. 1 || 61(論理またはオペレーターが単に少なくとも一つの引数が0であるか否かをチェックすることを覚えておいてください)

      2. 0 || 61

      これは、のanythin g|| 6の結果は1です。

      これは、入力した内容に関係なくツアーメニューを印刷している理由です。


      忘れてはいけない:だけでなく、学校の数学では、それが結合性と優先順位を変更するために括弧()を使用することを許可されています。だから疑問に思っているのであれば、かっこをつけてください。通常、ランタイムパフォーマンスには何の影響もありません(少なくとも、これによりオペレーター評価の順序を変更しない限りではありません)。

  • 関連する問題