for文やwhile文について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たいやき

for文やwhile文について

#1

投稿記事 by たいやき » 15年前

for文やwhile文、関数は何バイトあるのでしょうか?

softya

Re:for文やwhile文について

#2

投稿記事 by softya » 15年前

意味が分かりません、機械語で何バイトという意味でしょうか?
そういう意味なら、使うコンパイラ、CPU、最適化レベル、書かれているソースコードの内容で変わるので質問自体が無意味です。

たいやき

Re:for文やwhile文について

#3

投稿記事 by たいやき » 15年前

そうなんですか。わかりました。回答ありがとうございました!

たいやき

Re:for文やwhile文について

#4

投稿記事 by たいやき » 15年前

すみません。質問変えて
int func(void)
{
int i;
int flag=1;
int n;
for(i=0;i<10;i++)
{
if(flag)
{
n++;
[pre]          }
if(i=i%2)
{
flag=0;
}
[pre]
}
}と
int func(void)
{
int i;
int n;
for(i=0;i<10;i++)
{
if(i=i%2)
{
n++;
break;
}

[pre]
}
for(i=0;i<10;i++)
{
if(i=i%2)
{
n++;
}


}
}
とどちらが軽いとしたらどちらでしょうか?

たいやき

Re:for文やwhile文について

#5

投稿記事 by たいやき » 15年前

文間違えました。
int func(void)
{
int i;
int flag=1;
int n;
for(i=0;i<10;i++)
{
if(flag)
{
n++;
}
if(i=i%2)
{
flag=0;
}
[pre]
}
}と
int func(void)
{
int i;
int n;
for(i=0;i<3;i++)
{
if(i=i%2)
{
n++;
break;
}

}
for(;i<10;i++)
{
if(i=i%2)
{
n++;
}


}
}
とどちらが軽いとしたらどちらでしょうか?

Mist

Re:for文やwhile文について

#6

投稿記事 by Mist » 15年前

どちらのプログラムもifの条件がおかしいんだけど。
> if(i=i%2)

正しくは"if(i==(i%2))"じゃないのかな?
何がしたいのかさっぱり分からないプログラムだけど、ループの実行回数も大差ないし一緒と考えてもいいと思いますけど。

たいやき

Re:for文やwhile文について

#7

投稿記事 by たいやき » 15年前

回答有難うございます。
int flag;があるかないかで変わるのかと思ったのですが。それでも大差ないのでしょうか?

softya

Re:for文やwhile文について

#8

投稿記事 by softya » 15年前

プログラム実行効率の比較としては不適格なソースコードでしょうね。
そもそも、nの最終カウント数が違いますよ。

たいやき

Re:for文やwhile文について

#9

投稿記事 by たいやき » 15年前

間違えました。
if(flag)


{


n++;
       flag=1;

}

二番目の関数の
if(i==i%2)
{
   n++;

}
です。

たいちう

Re:for文やwhile文について

#10

投稿記事 by たいちう » 15年前

コンパイルを通るように直して、それぞれ実行してみてください。
実行時間に差がありましたか?
現在のあなたにとっては、それ以上の差はありません。

もっと詳しく知りたいならば、もっと言語を理解してから質問しましょう。
また、処理が遅くて困っているプログラムがあるならば、それについて
具体的な質問をしてくれれば、回答のしようもあると思います。

softya

Re:for文やwhile文について

#11

投稿記事 by softya » 15年前

どんな機械語コードが出ているか見たければ、
「プロジェクト」→「xxxのプロパティ」→「構成プロパティ」→「C/C++」→「出力ファイル」→「アセンブリの出力」を「あり」にすればアセンブラソースが見れます。
それを見て効率的がコード出ているか判断すれば良いと思います(アセンブラは勉強してください)。
※ リリースビルドしないと最適化されないなので必ずリリースビルドで行ってください。

今のコードで比べても無意味なことが分かると思います。
生半可な知識で書き方を工夫してもコンパイラの最適化が上を行きます。あからさまに無駄な書き方、遅いアルゴリズムを選ばない限りはコンパイラにお任せしましょう。

閉鎖

“C言語何でも質問掲示板” へ戻る