2016-05-26 3 views
5

C言語でプログラムを書くときにgetchar()を使用しています(scanfはコースのこの時点ではまだ許可されていません)。次回に移動する場合は毎回呼び出すかどうか疑問に思っていました。割り当て操作中も含めて。例えば;私はコンソールからダブルで読み込もうとしています。正面にマイナス記号があるかどうかを判断します。そうであれば;変数negに1を代入して(最終結果が負になるかどうかを確認できるように)、次に実際の二重計算を行うために次の文字に移動したい。 は、ex)Cでgetchar()を使用しています。私はそれを使用するたびに次のcharに移動しますか?割り当て操作内に含める?

int x = getchar(); 
     int neg = 0; 

     if(x == '-') { 
     neg = 1; 
    x = getchar(); // will this make it so the next time I use the x   
     }   // variable it will be past the negative sign and to the 
        //first actual digit? 
+0

並べ替え - 'x = getchar();'が実行されると直ちに読み込まれ、次回の 'x'が使用されるのではありません。 –

+0

'getchar()'を含む関数の戻り値を使って何をしても、関数を呼び出すときに関数自体が何をするかには何の影響もありません。特に、戻り値を変数に代入することは、そのような影響を与えません。引数の値などの関数の振る舞いを変更する他の要素もありますが、関数は戻り値で何をするかを知らないし気にもしません。 –

答えて

5

はい、あなたはそれがの文字を(読み込みますgetchar()呼び出すたびに)読んで文字が提供されます。 C11を引用

、章§7.21.7.6

getchar()関数は、入力ストリームから次の文字が stdinによって指さ戻ります。読まれるための有効な何もが存在しない場合には

ストリームがファイルの終わりにある場合は、ストリームのEOF指示子が設定さ getcharされますEOFを返します。読み取りエラーが発生すると、ストリームのエラーインジケータが設定され、 getcharEOFを返します。

関連する問題