
以下のプログラムにおいて,
for文の末尾にセミコロンがついているタイプ( for(...); )
のfor文の制御の流れは,セミコロンがついていないタイプ( for(...) )
と何が違うのでしょうか?
for文の末尾にセミコロンがないタイプのものしか知らないため,
セミコロンがつくことで流れに何が変化するか知りたいです.
御存知の方がいらしたら,教えてください.
【出力結果】
forの末尾にセミコロンがある
2100
forの末尾にセミコロンがない
700
/*+++++++ ソース ++++++++*/
#include <stdio.h>
int main()
{
int s_tb1[3] = {60,100,150};
int mg_tb[3] = {1,3,4};
int i,size=80,base=600,mode=1,ext=100;
for(i=0; size>s_tb1[i]; i++);
printf("%d\n", (base+mode*ext)*mg_tb[i] );
return(0);
}
No.2ベストアンサー
- 回答日時:
for文は、
for(i=0; size>s_tb1[i]; i++)
の後に、一つの文を書くようになっています。
普通、ブロックが書かれてそれを繰り返すわけですが、
for(i=0; size>s_tb1[i]; i++);
の場合は、空文;を繰り返すことになります。
この場合繰り返している間は、次の
printf("%d\n", (base+mode*ext)*mg_tb[i] );
は実行されません。
1.forの末尾にセミコロンがある
このとき、i==1のときループは終了します。
mg_tb[i] == 1
です。
2.forの末尾にセミコロンがない
i==0のときのprintf()文が実行され、同じくそれで終わりです。
・ 最も単純なケースで動作を確認してみたほうが確実です。
No.1
- 回答日時:
>セミコロンがつくことで流れに何が変化するか知りたいです.
printf("%d\n", (base+mode*ext)*mg_tb[i] );
が for ループを抜けた後に実行されるということです。
for 文の本体はブロックでなければ、一つの文しか実行されません。
この場合、その一つの文が「;」という空の文になります。
まぎらわしいので、for 文や if 文を書く場合は本体を {} で囲むようにしましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# プログラミングのペーパーテスト 実行結果の表示を答えてください #include <stdio.h> 2 2022/07/09 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
C言語 エラー表示 break の位...
-
配列を関数に渡す方法
-
C言語初心者です。次の問題で質...
-
getcの改行判定
-
配列を使って魔方陣
-
C言語:forを用いたプログラム
-
VHDLで、case文とwhen文のどち...
-
scanfが実行されません
-
10進数からN進数に変換するプロ...
-
全角文字の判定
-
C言語階乗の総和を求める
-
プログラミングの配列で
-
if文
-
C言語の二分法のプログラムにつ...
-
C言語についてですfor ifをつか...
-
C言語 プログラム
-
C言語です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
C言語階乗の総和を求める
-
初心者です。for文、if文を使っ...
-
配列を関数に渡す方法
-
C言語 マスターマインドゲーム...
-
C言語 入力した数値の平均値の...
-
C言語の二分法のプログラムにつ...
-
配列を使って魔方陣
-
scanf関数を用いての加減乗除%...
-
10進数からN進数に変換するプロ...
-
c言語のwhile文を使った計算で...
-
全角文字の判定
-
C言語 数字以外を入力させない...
-
プログラミングで二番目に大き...
-
while文を使った問題なのですが...
-
getcの改行判定
-
C言語
-
c言語で平均をだす
おすすめ情報