質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

1740閲覧

if文について

reotantan

総合スコア295

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2015/08/24 14:08

編集2015/08/24 14:20

元々の問題は二つの整数値を読み込んで、小さい方の数以上で大きい方以下の整数を全て加えるプログラムを作成しろとあります。
このコードにおいて
num1 ,num2は波括弧に覆われています。この波括弧の中でしか使えなくした意味はどこにあるでしょうか?
変数の数を制限するためでしょうか?
ご意見をお聞かせ下さい

#include<stdio.h>
int main(void){
int max,min;
int sum=0;
{int num1,num2;

puts("type 2 integlar");
printf("num1:" );scanf("%d",&num1 );
printf("num2:" );scanf("%d",&num2 );
if(num1>num2){
max=num1;
min=num2;
}
else {
max=num2;
min=num1;
}
}
printf("when you add over%dand under%d",min ,max );
do{
sum=sum+min;
min=min+1;
}while(min<max+1);
printf("%d\n",sum );

return 0;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

この波括弧の中でしか使えなくした意味はどこにあるでしょうか?

このブロック外で使えるようにする意味が無いからです。
変数のスコープ(有効範囲)は可能な限り狭くします。

C

1 2int foo; 3/* 4fooを使う処理 5fooを使わない処理 6*/

こう書くと、文法的にはfooは「fooを使わない処理」でも参照できるので、
読んでいる最中はずっとfooのことを頭に入れておいて、
読み終わって初めて、どこまでfooを使うかが分かります。
例えfooを一時的にしか使わないのだとしても、
(他の人や未来の自分が)読むときはfooをずっと気にしなければなりません


C

1{ 2 int foo; 3 /* 4 fooを使う処理 5 */ 6} 7/* 8fooを使わない処理 9*/

こう書けば、文法的に、「fooを使わない処理」でfooが使われないことが一目瞭然なので、
読むときに楽になります。

投稿2015/08/24 14:36

編集2015/08/24 14:39
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/24 15:05

確かに変数範囲を狭くした方が、見やすいですね。 ありがとうございました。
ozwk

2015/08/28 13:21

といっても{}で無理やり引っこ抜くぐらいなら 処理に適切な名前を付けて関数化したほうが 確実に読みやすいです。
guest

0

上の人も書いていますが、変数の有効範囲(スコープ)を狭くすることによって、考慮範囲を狭めたり、名前汚染を防いでいるのだと思います。

とはいえ、C言語の関数内のローカル変数で、そこまで気にする必要はほぼ無いでしょう。
むしろ後から見た人が混乱するだけだと思います。

投稿2015/08/27 14:23

shanxia

総合スコア1038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/28 13:19

確かにそうですね、名前汚染とは良い表現ですね。 とても参考になりました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問