- 締切済み
for文
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Werner
- ベストアンサー率53% (395/735)
> for(i=0;i<count;i--) そういえばこのコードおかしくない? iは0から始まってどんどん小さくなるから countが1以上の時ループはずっと(オーバーフローでも起こらない限り)とまらないよ。 forブロック内でiやcountに代入してるとかbreak文があるなら別だけど。
- luckymako
- ベストアンサー率55% (29/52)
for文で質問と全く同じ様に書くのであれば 結果は同じになります。 仮に for(i = 0; i-- < count; ) と for(i = 0; --i < count; ) の様な書き方に変更すると結果が異なるはずです。 これは以下のことによります。 ・C(C++,Javaなんかも)では式も(が)値を持つ。 ・--は1を引く演算子で、i--も--iも1を引くことをあらわす式である。 ・i--という式は1引かれる前の値を持ち、--iは1引かれた後の値を持つ。 例 int i = 10; int j = 10; int a = --i; int b = j--; とすると各変数の値は i = 9 j = 9 a = 9 b = 10 となります。
お礼
ありがとうございます、丁寧な回答、たすかりました。
- Werner
- ベストアンサー率53% (395/735)
そのコードでは前置と後置の違いはありません。同じです。
お礼
ありがとうございます、ネットで調べたのですが 同じような質問がなくて助かりました。
関連するQ&A
- 簡単なfor文
#include <stdio.h> int main(void) { int n; int i; for(n=0 ;n<10;n++){ for(i=0; i<=n ;i++){ printf("*"); } printf("\n"); } return(0); } こういったプログラムを実行すると、以下のように表示されるのですがなんででしょうか? * ** *** 以下略 自分の考えですと、*は毎回一つしか表示されずに改行されると思うのですが・・・ * * * * 以下略 i個分の*を表示するなどという指示をプログラムはなされていないと思うのですがなぜなんでしょうか? 一つ目のfor文では10回ループが繰り返され改行 二つ目のfor文で*を永遠に表示 といった僕の解釈ではおかしいですよね。 当方C言語初心者で、周りに聞く人がいないため教えていただけると非常に助かりますm(__)m
- ベストアンサー
- C・C++・C#
- for文のループがされません
#include <stdio.h> main() { int n, count, c; int d = 50000; printf("整数を入力:"); scanf("%d",&n); for(count = 1; count <= n; count++){ c = d * (16 / 100); d += c; } printf("%d回目の数はは%dです\n",n,d); } というプログラムを作ったのですが、for文のところが実行されずに、 1回目ならば58000となるはずなのに初期値のまま50000と表示されてしまいます。 どなたかご指摘お願いします。
- ベストアンサー
- C・C++・C#
- linuxのfor文についてです。
linuxのfor文(C言語風)を利用して/var/log/httpd/にあるaccess.logのファイルのうち130301~130309のものをls -lで情報を表示したいです。 ここでbashのfor文を使って最後の1文字だけを変化させながらls -lを9回実行するシェルスクリプトを作りたいのですがどのように書いたら良いのかわかりません。 どなたか教えていただけないでしょうか。
- ベストアンサー
- Linux系OS
- C/C++ for文
ふと疑問に思ったことなんですが、検索して調べても簡単に出てこなかったので 質問させていただきます。 C / C++ の文法に for 文がありますが基本的な for 文の書き方と言えば以下のようになりますよね。 for (int i = 0; i < 10; i++); この中の式に注目してほしいのですが、i = 0, i < 10; i++ のようにいずれも 1 つの文を書くことはできますよね。2 つの文を書きたい場合でも i++,i++ のようにカンマを使えば、2 つどころか 3 つ以上の文を書くことができます。 ここで、その式の部分に for 文を入れてみたらエラーが返ってきました。普通はこの部分に for 文を入れるなんてことはしないのでよくわからないのですが、なぜエラーが返ってくるのでしょうか。printfのような出力文でもいけるのに、for 文などではダメな理由がよくわかりません。
- ベストアンサー
- C・C++・C#
- for文のフローチャート
c言語です。 for文のフローチャートを教えてほしいです。 カウンタ更新、初期値設定、継続条件、真偽、処理 この5つを使って書いたfor文のフローチャートを教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- n重のfor文にするには?
C言語の勉強をしはじめた者です。 よろしくお願いします。 「整数nを入力したときにn重for文にするにはどうしたらよいでしょうか?n個for文の中身の条件は、それぞれ異なりますが、nに依存した条件です。 」 たとえば、n=3と入力したとき、 for(i=1;i<=3;i++){ for(j=i+1;j<=4;j++){ for(k=j+1;j<=5;k++){ ... }}} また、 たとえば、n=5と入力したとき、 for(i=1;i<=3;i++){ for(j=i+1;j<=4;j++){ for(k=j+1;k<=5;k++){ for(l=k+1;l<=6;l++){ for(m=l+1;m<=7;m++)} ... }}}}} という感じに整数nを入力すると、その分、for文がでて、機能するようなプログラムはどうすればいいでしょうか? よければアドバイスください。 質問の仕方が下手くそですいません..
- 締切済み
- C・C++・C#
- for文~break
break文に達した時、for文から抜けますか?それとも、if { }から抜けるんですか? for文はどこまで影響下にありますか? if ( i==5 ) printf ("サーバーが見つかりません"); まででしょうか? また if ( i == 5 ) で5なら、実行としていますが、 6,や,8など5 以外でも、サーバーが見つかりません と if文が実行される見たいですが、なぜですか? 教えてください。 #include<stdio.h> int main(void) { int array[5][2]={ {1,14}, {2,28}, {3,19}, {4,8}, {5,15}, }; int sever; int i; printf("番号を入力してください"); scanf("%d",&sever); for( i=0 ; i<5 ; i++ ) if ( sever == array[i][0] ){ printf ( "%d 番には, %d 人います。\n",sever,array[i][1]); break; } if (i==5) printf("サーバーが見つかりません"); return 0; }
- ベストアンサー
- C・C++・C#
- do - while 文
以下のコードをコンパイル後実行すると、0~9までの出現回数がわかるのですが、処理を続けますか?と出た後yを入力するともう一度 do 以降を実行するようにしたいのですが、yを入力する前にプログラムが終了してしまいます。何がいけないんでしょうか? #include <iostream> using namespace std; int main (void) { int i; char cont; char c; int count[10] = {0}; do{ while (cin.get(c)){ switch (c){ case '0': count[0]++; break; case '1': count[1]++; break; case '2': count[2]++; break; case '3': count[3]++; break; case '4': count[4]++; break; case '5': count[5]++; break; case '6': count[6]++; break; case '7': count[7]++; break; case '8': count[8]++; break; case '9': count[9]++; break; } } for (i =0; i < 10; i++) cout << i << "の出現回数は" << count[i] << "\n"; cout <<"処理を続けますか?(y/N)"; cin >>cont; }while (cont == 'y'); }
- ベストアンサー
- C・C++・C#
お礼
書き方が間違っていました、本の内容を一部抜き出して書いたもので お手数をかけました。