Daily Archives: 2012年7月17日

[gcc最適化]printfがputs呼び出しに置き換えられる場合がある

2012年7月17日 (カテゴリ: C:)

C言語には、文字表示のためにprintf関数が有ります。 printfは%指定で変数を書式指定付きで埋め込める高機能な関数ですが、高機能な分、処理が遅いというデメリットもあり、書籍によっては “固定の文字を出すだけであればprintf()の替わりにputs()を使用すべし” というHowToが書かれてたりもします。 と今まで思ってましたが… gccの出力を見ると、時によっては”printfをputs呼び出しに自動で変換してくれる場合がある”ようです。 雰囲気では、printf( “hello\n” );のように、”変数を含…


続きを読む

cygwinで1秒未満のスリープを行う

2012年7月17日 (カテゴリ: C:)

C言語でプログラムを作成時にスリープ処理を行いたい場合、Cの標準ライブラリ関数だとsleep()関数を使用します。ですが、sleep()関数で指定する値の単位は秒なので、1秒未満のスリープを行う事が出来ません。 Visual C++等、Windows環境だとWin32APIにSleep()というものがあり、ミリ秒単位でのスリープが行えるのですが、cygwinでもこの関数が使用できるようです。 #include<stdio.h> #include<windows.h>   int main() { printf( "t…


続きを読む

[C言語]getchar()関数は,1文字入力する毎に処理が走る訳ではない

2012年7月17日 (カテゴリ: C:)

C言語の入門書を見るとgetchar()関数の説明として、”キーボードから1文字入力を読み取る”と書かれていることが多いです。 下記のプログラムは、getchar()の動作確認用プログラムなのですが、実行してみると”キーボードから1文字入力を読み取る”という説明とは異なり、若干の違和感があります。 #inculde <stdio.h>   int main( void ) { int data;   while( 1 ) { // 1文字入力 data = getchar(); if ( data == EOF )…


続きを読む