Cygwinでデバッグ/その他の習慣
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Cygwinでデバッグ]]
#contents
** その他の習慣 [#jdcd6295]
*** スペースや改行の使い方 [#c0b0daad]
C言語の初学者、とりわけ日本人の場合には、プログラムにスペ...
> 英文をタイプする上では、コンマやセミコロンの後ろにスペ...
次の2つは同じ意味ですが、どちらが読みやすいでしょうか。
for(i=0;i<10;i++){...}
for ( i=0; i<10; i++ ) {...}
改行も、C言語ソース上ではスペースと同じ扱いですので、適宜...
dist2 = (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2);
dist2 = (x1-x2) * (x1-x2)
+ (y1-y2) * (y1-y2);
printf("year=%d month=%d day=%d mday=%d\n", year, month,...
printf("year=%d month=%d day=%d mday=%d\n",
year, month, day, mday);
> 2行の文字の位置が揃って見やすいと思うのは当然のことに...
関数のブロックの中で、使う変数の宣言と、実際の処理の間に...
int diff_abs(int a, int b) {
int diff;
←ここに空行
diff = a - b;
if ( diff >= 0 ) return diff;
else return -diff;
}
>新しいC言語規格(C99)では、Java や C++ と同様に、変数の...
*** 文字列の連結 [#ef8ede17]
複数行の文字列を表示する場合、printf() を連発しなくてもよ...
printf(" a i u e o\n");
printf("ka ki ku ke ko\n");
printf("sa si su se so\n");
printf(" a i u e o\n"
"ka ki ku ke ko\n"
"sa si su se so\n");
というのも、C言語のソースでは、隣り合う文字列は連結される...
"123456"
"123" "456"
"1" "2" "3" "4" "5" "6"
"123"
"456"
ところで、次のソースは、ちゃんと動いているようで、実は問...
printf(" a i u e o ←見えないけれどここで改行
ka ki ku ke ko ←見えないけれどここで改行
sa si su se so\n");
本物の改行を含めて "" で囲って文字列にしています。これが...
>他の言語でも、長い文字列を扱う方法が用意されています。Ja...
*** 変数名や関数名の命名規則 [#d9c39d00]
*** scanf() の使用について [#k0139aac]
printf() と scanf() は一見すると対称な動作をするように思...
しかしながら、細かく見るとフォーマット文字列にも違いがあ...
double を扱うのに printf() では "%f" と l(エル)が例外的...
更に scanf() で値を格納する変数には & をつけねばなりませ...
> この程度の問題は、gcc なら警告レベルを上げるだけで検出...
なお、C99 からは printf()/scanf() ともに double に %lf を...
|~変数の型|>|>|>|~整数|>|>|~浮動小数点数|>|~文字(列)|h
|~|short|int|long|long long|float|double|long double|char...
|~printf()|%hd|%d|%ld|%lld|%f|BGCOLOR(pink):%f / %lf|%Lf|...
|~scanf()|%hd|%d|%ld|%lld|%f|BGCOLOR(yellow):%lf|%Lf|%c|B...
そして何より大きな違いは、scanf() は、期待したような入力...
> scanf() は、文字列を受け付ける時には %19s のように、文...
> scanf() は ''scan'' ''f''ormatted の名前が表すように、...
では、通常はどうするかというと、fgets() でバッファに1行...
- scanf 版(初学者専用)
int i, a[10];
for (i=0; i<10; i++) {
scanf("%d", &a[i]);
}
- fgets 版(通常)
char buff[BUFSIZ];
int i, a[10];
for (i=0; i<10; i++) {
fgets(buff, BUFSIZ, stdin);
a[i] = atoi(buff);
}
初心者向けのC言語の書籍では、必ずといってよいほど scanf()...
その代償として、ローカル変数を他の関数で書き換えるために...
> このため、C言語の初学者は、早い段階から「ローカル変数の...
せめて、文字列を学習したあたりで fgets() を「お約束」とし...
結論ですが、printf() と scanf() は対称どころではなく、「p...
終了行:
[[Cygwinでデバッグ]]
#contents
** その他の習慣 [#jdcd6295]
*** スペースや改行の使い方 [#c0b0daad]
C言語の初学者、とりわけ日本人の場合には、プログラムにスペ...
> 英文をタイプする上では、コンマやセミコロンの後ろにスペ...
次の2つは同じ意味ですが、どちらが読みやすいでしょうか。
for(i=0;i<10;i++){...}
for ( i=0; i<10; i++ ) {...}
改行も、C言語ソース上ではスペースと同じ扱いですので、適宜...
dist2 = (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2);
dist2 = (x1-x2) * (x1-x2)
+ (y1-y2) * (y1-y2);
printf("year=%d month=%d day=%d mday=%d\n", year, month,...
printf("year=%d month=%d day=%d mday=%d\n",
year, month, day, mday);
> 2行の文字の位置が揃って見やすいと思うのは当然のことに...
関数のブロックの中で、使う変数の宣言と、実際の処理の間に...
int diff_abs(int a, int b) {
int diff;
←ここに空行
diff = a - b;
if ( diff >= 0 ) return diff;
else return -diff;
}
>新しいC言語規格(C99)では、Java や C++ と同様に、変数の...
*** 文字列の連結 [#ef8ede17]
複数行の文字列を表示する場合、printf() を連発しなくてもよ...
printf(" a i u e o\n");
printf("ka ki ku ke ko\n");
printf("sa si su se so\n");
printf(" a i u e o\n"
"ka ki ku ke ko\n"
"sa si su se so\n");
というのも、C言語のソースでは、隣り合う文字列は連結される...
"123456"
"123" "456"
"1" "2" "3" "4" "5" "6"
"123"
"456"
ところで、次のソースは、ちゃんと動いているようで、実は問...
printf(" a i u e o ←見えないけれどここで改行
ka ki ku ke ko ←見えないけれどここで改行
sa si su se so\n");
本物の改行を含めて "" で囲って文字列にしています。これが...
>他の言語でも、長い文字列を扱う方法が用意されています。Ja...
*** 変数名や関数名の命名規則 [#d9c39d00]
*** scanf() の使用について [#k0139aac]
printf() と scanf() は一見すると対称な動作をするように思...
しかしながら、細かく見るとフォーマット文字列にも違いがあ...
double を扱うのに printf() では "%f" と l(エル)が例外的...
更に scanf() で値を格納する変数には & をつけねばなりませ...
> この程度の問題は、gcc なら警告レベルを上げるだけで検出...
なお、C99 からは printf()/scanf() ともに double に %lf を...
|~変数の型|>|>|>|~整数|>|>|~浮動小数点数|>|~文字(列)|h
|~|short|int|long|long long|float|double|long double|char...
|~printf()|%hd|%d|%ld|%lld|%f|BGCOLOR(pink):%f / %lf|%Lf|...
|~scanf()|%hd|%d|%ld|%lld|%f|BGCOLOR(yellow):%lf|%Lf|%c|B...
そして何より大きな違いは、scanf() は、期待したような入力...
> scanf() は、文字列を受け付ける時には %19s のように、文...
> scanf() は ''scan'' ''f''ormatted の名前が表すように、...
では、通常はどうするかというと、fgets() でバッファに1行...
- scanf 版(初学者専用)
int i, a[10];
for (i=0; i<10; i++) {
scanf("%d", &a[i]);
}
- fgets 版(通常)
char buff[BUFSIZ];
int i, a[10];
for (i=0; i<10; i++) {
fgets(buff, BUFSIZ, stdin);
a[i] = atoi(buff);
}
初心者向けのC言語の書籍では、必ずといってよいほど scanf()...
その代償として、ローカル変数を他の関数で書き換えるために...
> このため、C言語の初学者は、早い段階から「ローカル変数の...
せめて、文字列を学習したあたりで fgets() を「お約束」とし...
結論ですが、printf() と scanf() は対称どころではなく、「p...
ページ名: