[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/05 19:06 / Filesize : 223 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 95



1 名前:デフォルトの名無しさん [2012/01/13(金) 22:05:06.14 ]
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 94
toro.2ch.net/test/read.cgi/tech/1324648274/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 155代目
toro.2ch.net/test/read.cgi/tech/1325685876/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/

166 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:12:22.49 ]
C++なの?

167 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:13:26.78 ]
その「スタッククラス」ではコピーが必要ないの?初心者の俺にkwsk

168 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:13:44.46 ]
まだ「スタックはスレッドセーフ」という妄想に取り付かれてるようだな。

169 名前:o mailto:sage [2012/01/15(日) 15:14:43.67 ]
>>166
ANSI-Cベースなので、クラスは使わない方向で行きたいが、
コーディングはCDTでやってる。

170 名前: ◆QZaw55cn4c mailto:sage [2012/01/15(日) 15:15:06.19 ]
>>110
いいえ、スタックとプログラムカウンタはスタックごとに別。

171 名前:o mailto:sage [2012/01/15(日) 15:15:31.34 ]
>>168
そのスタックの話をしているわけじゃないのは分かっているよね?

172 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:16:33.51 ]
お、QZにちょうどいい相手じゃないか?
ちょっとどんな展開になるのか、他の人はだまってみてようよw

173 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:16:56.99 ]
>>164
それで実装したコードを挙げてくれ。そうすればもっとスマートな解決方法を出すことができるかもしれない。

174 名前:o mailto:sage [2012/01/15(日) 15:17:00.12 ]
>>172
そうだな。
素人が1人減るしねw



175 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:17:27.54 ]
QZの意見を聞きたくなる場面なんてあまりないからなw
ぜひ回答してやってくださいQZさん

176 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:17:43.90 ]
>>172
ああ、うん。珍しくQZの自演暴れじゃないものが見られるかもしれんね

177 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:18:02.46 ]
実はo=QZという素晴らしいオチ!

178 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:21:33.63 ]
175 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん
176 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん
177 名前:あぼ〜ん[NGWord:QZ] 投稿日:あぼ〜ん

179 名前:o mailto:sage [2012/01/15(日) 15:22:27.21 ]
>>173
実装なんかしてない。

180 名前:173 mailto:sage [2012/01/15(日) 15:28:35.84 ]
QZじゃなくてすまんがレスされてしまったので。

>>179
もちろん実装していないことはわかっている。

>>5がいい方法かどうかがわからなくて困ってたんだろ。
>>164がいい方法だと思いついたのなら、それで実装すればいい。
これが気に入らないのであればレスしなくていいし、質問はQZあてに頼む。

181 名前:o mailto:sage [2012/01/15(日) 15:37:47.56 ]
>>145
いや、そんなことを言っているんじゃなくて、

・局所的にしか利用されず
・他スレッドからの参照に問題あり
・アクセスコントロールに関与する
・マルチスレッド対応の場合
+もろもろ

のような条件があるにもかかわらず、グローバル変数を使おうとする人が世の中にいるのか?
って話。

これだけ条件が整えば、
企業が規制するまでも無く、グローバル変数の利用を控えるんじゃないの???と

182 名前:o mailto:sage [2012/01/15(日) 15:40:14.15 ]
>>163
先回りされて、涙目、だなwww

183 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:44:28.99 ]
解散

184 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:45:28.11 ]
>>181
>>49の段階ではマルチスレッドの話なんて出てきてなかったろ。
自分だけが知っている情報を他人も知っているはずだと考えるのはよくないことだよ。



185 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:47:12.80 ]
>>184
局所に格納してたんだろう

186 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:48:25.92 ]
>>185
ああ、さらにアクセスコントロールもされていたようだ

187 名前:o mailto:sage [2012/01/15(日) 15:55:36.98 ]
>>184
条件が出てきた時点で、

「ああ、そうかグローバル変数じゃダメね」

ってレス付くなら分かるが、

>仕事上のコーディング方法を2chで質問かよwww
とレスられた事で

玄人の( というのは間違いで本当は素人 ) の中ではこれだけ条件が付いても
「ああ、そうかグローバル変数じゃダメね」
とは思わないのかなぁ???

という話。


188 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 15:56:17.70 ]
日本語からやり直せ。

189 名前:o mailto:sage [2012/01/15(日) 15:57:47.80 ]
>>188
涙目乙www

190 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:01:12.86 ]
やっぱりo=QZか?

191 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:02:00.04 ]
質問主アスペ

192 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:02:35.15 ]
キチがウヨウヨいると考えたくないしな

193 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:02:58.11 ]
言いたいことを簡潔的確に言えるようにならないと開発は無理。
理解力はその前に必要だけど、普通の人なら持っている。

194 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:05:00.03 ]
最近はその普通が通じないんだと思うよ。



195 名前:o mailto:sage [2012/01/15(日) 16:06:20.21 ]
>>192
そうだよね。

これだけ条件が付いていりゃ、業務命令じゃなくても、グローバル変数は避けるよねぇwww

196 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:08:06.61 ]
別にグローバル変数だってスレッドセーフにすればいいだけ。

197 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:13:04.17 ]
>>195
そんな話どうでもいいから本題をQZに質問するといいよ

198 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:18:55.49 ]
流れとは別の質問なんだけど
スタック領域とかヒープ領域とかに対して
グローバル変数やstatic変数がある領域って一般的になんていうの?
データ領域?

199 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:23:22.30 ]
>>198
スレ違いだが、それでいい。
記憶クラスでググれ。

200 名前:o mailto:sage [2012/01/15(日) 16:25:18.71 ]
>>198
BSSかテキスト領域

201 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:25:51.54 ]
>>196
だね。
そもそも、業務命令とか変な条件の前にグローバル変数は避けるのがデフォだし。

202 名前:o mailto:sage [2012/01/15(日) 16:26:33.99 ]
>>200
おっと、途中で送信してしまった。

BSSとかデータ領域とかの話をしてるんじゃね?


203 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:27:30.80 ]
>>200
> テキスト領域

市ね

204 名前:o mailto:sage [2012/01/15(日) 16:27:38.02 ]
>>201
そうなんだよ。

だから
>仕事上のコーディング方法を2chで質問かよwww
と言われると、
本職の方は、そんな考え方もしているのかなぁ、と



205 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:29:16.03 ]
>>203
なんだ?
テキストってのはコードのことだ。
>>204
で、いつまで話ずらすの?

206 名前:o mailto:sage [2012/01/15(日) 16:29:56.40 ]
なんか、みんな俺に冷たいなぁ。
俺がなんかしたんか?

207 名前:o mailto:sage [2012/01/15(日) 16:30:37.06 ]
>>205
傍系の質問だべ。
答えられなきゃ、黙ってりゃ良いのに。

208 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:30:45.97 ]
>>4から読めば誰でもそうなるんじゃないかな。

209 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:31:36.72 ]
QZ出てこいよ。
ちょっと質問が高度すぎるか?
あ、質問というより回答がか。

210 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:40:35.12 ]
質問主はこれやってみろ。
ttp://www.the-fortuneteller.com/asperger/aq-j.html

211 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:43:21.52 ]
>>206
質問に答えているのにスルーして続ける
知らない単語をさも知っているように間違って使う
関係ないところにつっかかって引き延ばす

212 名前:o mailto:sage [2012/01/15(日) 16:50:08.47 ]
>>210
何言っているのか分からんが、

自己診断テスト得点計算結果

あなたの得点は16点です。

社会的スキル
3点
注意の切り替え
4点
細部への注意
1点
コミュニケーション
5点
想像力
3点
閾値内に収まっています。

213 名前:o mailto:sage [2012/01/15(日) 16:52:32.85 ]
>>211
あいや、
スルーしているんなら、レス番号知らせてもらえると助かるよ。

>知らない単語をさも知っているように間違って使う
これは、きちんと指摘してもらえればOK
心は広いから無問題だよ

>関係ないところにつっかかって引き延ばす
新たな質問が出たら、きちんと解決しよう。
普通のことだと思うけど?
これのどこが気に触る内容なのかな?

214 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 16:53:33.84 ]
こういうのは分裂症?



215 名前:o mailto:sage [2012/01/15(日) 16:54:20.80 ]
>>214
それ、なんてクラス?

216 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:00:01.71 ]
>>213ちなみにもう問題は解決してるの?

217 名前:o mailto:sage [2012/01/15(日) 17:18:10.40 ]
>>216
よく分からんが、選択肢が2つ。

1つは、func1で文字列を保持
もう1つはmallocでmainに引き渡す。

実装してみないと分からないけど、前者かなぁ・・・と。
HTTPだけど、すべてのデータがmainに返さないといけないわけではない。
汎用性がないのが残念だけど、前者の方がよいかなぁ。
汎用性を高めるんなら、mallocかなぁ、と考えてる。

ただ、結合テストで問題が出そうな気がしてならない。

218 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:22:55.28 ]
QZ早く出てきてやれよ。

219 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:23:54.61 ]
>>217
マルチスレッドらしいから、各スレッドの役割を書いてみて

220 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:27:15.15 ]
先が永杉。
やるならスレ立ててそっちでやれ。

221 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 17:32:49.04 ]
>>205
>> グローバル変数やstatic変数がある領域って一般的になんていうの?
> テキストってのはコードのことだ。

市ね or >>207

222 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 18:24:45.54 ]
「空を自由に飛びたいな」 という夢があったときに
パイロットを目指すかパイロットを雇うかの違いがある。

223 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 18:33:47.92 ]
ドラえもんが何とかしてくれると思った

224 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 18:43:45.81 ]
脱原発(笑)



風力発電コスト高、モニュメントに

 オホーツク地方で唯一の風力発電施設の北海道興部町風力発電所が、修繕費用難のた
めに昨年11月、完成から約10年で廃止され、風車を固定したモニュメントとして残
されることになった。
 東日本大震災を受けた福島第一原子力発電所の事故後、風力発電は再生可能エネルギ
ーとして注目されているが、小規模風力発電施設が直面するコスト高の課題を露呈した
格好だ。
 同町の風力発電所は2001年3月に完成。風車は1基で、建設費約1億9000万
円は、経済産業省が所管する独立行政法人の新エネルギー・産業技術総合開発機構(N
EDO)がほぼ半額を負担し、道の補助を除く約5000万円を町が負担した。隣接す
る町の農業研究施設に電力を供給したうえで、余剰分は北海道電力に売電してきた。約
9年半で計6170万円の売電収入があり、6430万円の維持管理費と収支はほぼ均
衡していた。
 しかし、10年10月に発電機のベアリングが破損して稼働を停止。欧州製で部品発
注のほか高所作業が必要となるため、修理には約4000万円かかることが判明した。
全額を町が負担しなければならないことから、町は「長期的に見た場合、コスト面で運
転再開は困難」(町企画財政課)と判断、発電所を廃止した。
----------
www.yomiuri.co.jp/national/news/20120114-OYT1T00047.htm
www.yomiuri.co.jp/photo/20120114-463522-1-L.jpg



225 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:03:46.42 ]
>>222
自由に「飛びたい」だと、パイロットを雇うのでは微妙に要件を満たさないような気が…

226 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 19:11:29.57 ]
スレが伸びてるなと思ったら、ほとんど罵倒じゃねか。

227 名前:o mailto:sage [2012/01/15(日) 19:39:26.42 ]
>>226
そやね

228 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 20:08:53.37 ]
>「空を自由に飛びたいな」
つ シャブ

229 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 20:47:14.71 ]
>>225
航空法でがっちり縛られるから、パイロットになっても
そんなに自由に飛ばせるわけではない
自分で飛ばすのも雇って指示するのも自由度では大差ないかな

230 名前:デフォルトの名無しさん [2012/01/15(日) 23:53:16.84 ]
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している
野田内閣は過半数が帰化人

野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は

首になった蓮○はシャブで逮捕歴のある人間と仲が良いな。蓮○自身はやってんの?
い-6-1
テレビが言えない民主党のスポンサー=韓国北朝鮮
あとはもうわかるよな



231 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:19:48.44 ]
入門編の参考書見ながら勉強中のど素人です

#include <stdio.h>
//ビット数をカウント
int count_bits(unsigned int x)
{
int count = 0;
while(x)
{
if(x & 1U)
count++;
x >>= 1;

return count;
}
//ビット数を返す
int int_bits(void)
{
return count_bits(~0U);
}
//ビット表示
void print_bits(unsigned int x)
{
int i;
for(i = (int_bits()-1); i >= 0; i--)

putchar(((x >> i) & 1U) ? '1' : '0');
}
putchar('\n');
}

232 名前:231 mailto:sage [2012/01/16(月) 00:20:21.66 ]

//ビットシフト
unsigned int sft1(unsigned int x, int pos)
{
return (x << pos);
}
//posビット目からn個のビットに1をセット
unsigned int set(unsigned int x, int pos, int n)
{
return (x | sft1(~sft1(~0U,n), (pos - 1)));
}

int main(void)
{
print_bits(0);
print_bits(set(0,1,32));
return (0);
}


233 名前:231 mailto:sage [2012/01/16(月) 00:24:34.89 ]
print_bits(set(0,1,32));
ここで1ビット目から、32個のビットに1をセットするようにしているのですが
31個のビットだと正常に011111?と1がセットされるのですが
上記のように32個だと、000000?となり1がセットされません

なぜ、11111?な感じで1がセットされないのでしょうか?

234 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:29:24.01 ]
>>233
ビット幅以上のシフトは未定義
自分の知ってる処理系では mod ビット幅 だけシフトされる



235 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:51:44.97 ]
どうでもいいが、処理系が同じでも、CPUが違うと動作が違ったりもする。
186か286かその辺の時代以前には、律儀に32回シフト(ただしintは16bit)してた。

236 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:59:25.16 ]
>>234
レスを元に調べてみたら、ビット演算のWikipediaにそれらしい内容が書かれていました
今回の場合だと
31 mod 32 で31ビットシフトするが
32 mod 32だと0でビットシフトしない
33 mod 32だと1ビットシフトする
というこで理解できました
ありがとうございました

237 名前:デフォルトの名無しさん [2012/01/16(月) 01:10:56.78 ]
高速フーリエ変換使って1万桁同士の掛け算を行うプログラムを作れ。
そういう課題が出た。さっさと教えろ。お前ら偉いだろ。

238 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 01:18:08.73 ]
宿題は宿題スレに逝けと言ってるだろ、このタコ。

239 名前: ◆QZaw55cn4c mailto:sage [2012/01/16(月) 03:23:46.56 ]
>>65
こんなのでどうですか?
ideone.com/SGJmx

240 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 08:25:12.57 ]
>>237
作ってやるから20万円よこせ
偉い人の時間は高いぞ

241 名前:デフォルトの名無しさん [2012/01/16(月) 14:33:54.35 ]


ステルスマーケティングまとめ
A www.dotup.org/uploda/www.dotup.org2522270.png
B www.dotup.org/uploda/www.dotup.org2522750.png
 →  ステマの黒幕は ソニー(アニプレックス)、角川

関連キーワード はちま 清水鉄平(はちまの本名) KND 元ソニー会長出井伸之
        はちま管理人によるみかじめ料を払わない特定メーカーへの叩き
        まとめサイトは企業が運営 コメント欄も社員の煽り(が殆ど)
おまけ
2ch監視が仕事のスクウェア社員w↓
96 名前:番組の途中ですがアフィサイトへの転載は禁止です[sage] 投稿日:2012/01/16(月) 12:41:25.60 ID:X9dFbc830
proxy1.square-enix.co.jp - 2012/01/16 12:38:51 - Japan - Commercial(企業)
IP :61.195.58.8 (不明)
Referer :ipatukouta.altervista.org/php5/
USER-AGENT :Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


【株式会社KND・清水鉄平】はちま起稿が特定され黒い関係が明らかに★78【黒幕を特定せよ】
awabi.2ch.net/test/read.cgi/poverty/1326691256/

242 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 22:36:48.88 ]
リスト構造も使い易さを追求して、様々な形態の物が存在する。
使い易さを追求して実現された種々の機能と それを実現しているリスト構造の具体例について
解説せよ。
という問題があるんだが、答えるのにチェイン法とか機能の説明でいいのかな?

243 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:20:46.73 ]
>>238

244 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:24:32.44 ]
>>242
いいと思う。



245 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:27:06.26 ]
>>244
ありがとう

ついでなんだが、オブジェクトのデータと処理とを組み合わせて
合理的に管理するためのプログラミング手法ってなんて言うんだったっけ?

246 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:27:21.98 ]
>>244
ありがとう

ついでなんだが、オブジェクトのデータと処理とを組み合わせて
合理的に管理するためのプログラミング手法ってなんて言うんだったっけ?

247 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:29:04.14 ]
oops!

248 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:34:49.93 ]
oh...
連レスすまない

249 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:50:08.16 ]
>>246
OOP, Object Oriented Programming

250 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:58:46.59 ]
Object oriented programming style

アクネドート:
実用に成るコードを完成させるためには
定義の段階で同じ識別詞、同じ記述が繰り返し繰り返し現れる

251 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:34:19.57 ]
関数プロトタイプ宣言について、どのような時に用いるか、なぜ必要なのか教えていただけないでしょうか。
よろしくお願いします。

252 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:34:11.86 ]
>>251
その関数を呼び出す前に、その関数を使用する場合
プロトタイプ宣言しといて、実装を後に実装する。
あと、ライブラリを作成するとき、ヘッダに宣言をまとめて
書いといて、実装をコード側に書く。

253 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:04:03.55 ]
>>246
「データ」が「ステート(状態)」の事を意図してるなら、OOP。
「データ」一般なら色々あるからCTMCPなどが参考になる。

254 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 12:29:37.79 ]
以下のように
aが32未満のときは、AしてからCして、Dする
aが224より大きいときは、BしてからCして、Dする
それ以外のときはAもBもCもせずにDする
というような制御構造を、ソースレベルでも、出力されるアセンブラレベルでも
重複コードがないようにするには、gotoを使うしかないのでしょうか?

if(a < 32){
b = a; //A
}else if(a > 224){
b = 256 - a; //B
}else{
goto HOGE2;
}
HOGE1:
c = b * 100; //C
HOGE2:
//D



255 名前:254 mailto:sage [2012/01/17(火) 12:30:35.88 ]
d = a < 32;
e = a > 224;
if(d || e){
if(d){
b = a; //A
}else{
b = 256 - a; //B
}
c = b * 100; //C
}
//D

こういうのもifが2つあって、なんだか冗長です。

256 名前:254 mailto:sage [2012/01/17(火) 12:30:55.20 ]
void hoge(int *pc, int b){
*pc = b * 100; //C
}
---
if(a < 32){
b = a; //A
hoge(&c, b);
}else if(a >> 224){
b = 256 - a; //B
hoge(&c, b);
}
//D

これも関数呼び出しコードが重複してるし
関数呼び出しコストがもったいないです。
inlineにすれば、呼び出しコストはかからないけど
//Cの部分がアセンブラレベルで重複してしまいます。

結局gotoを使わないと、重複は避けられないのでしょうか?

257 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 13:26:36.03 ]

if( a < 32 ){
 //A
}
if ( a > 224 ){
 //B
}
if( ( a < 32 || a > 224)){
 //C

//D


>>254は、コードが複雑になった場合に追っかけるのが面倒
>>255は、何やってるのかわかりづらい
>>256は、今時のシステムならそのくらいのコスト気にすんな。関数名次第では分かりにくい。

自分は、同じ基準で判定する方がコードが分かりやすい。
このケースの場合、a を基準にするのではなく、
//A、//B、//C、//Dのそれぞれのコードがどういう条件なら実行できるか、
を同じレベルで書いた方が後で見て分かりやすい。



258 名前:254 mailto:sage [2012/01/17(火) 14:59:48.07 ]
なるほど、>>255でネストするよりわかりやすいです。

多少冗長になっても、メンテを考えればgotoなど使わない方がいいと言うことですね。

ありがとうございます。

259 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 15:13:29.39 ]
//Cの条件はb>=32か?


260 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:08:24.42 ]
goto使わなくても大抵コンパイラ後はgoto相当の処理してるんだがな。

261 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:14:30.48 ]
goto使ってもいいと思うんだけどな。

262 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:30:33.18 ]
あれならこうかな。

  bool a32 = (a < 32)
  bool a224 = (a > 224)

  if (a32 || a224) {
    if (a32) {
      A();
    } else {
      B();
    }
    C();
  }
  D();


263 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:38:28.45 ]
>if (a32 || a224) {
if (a32 | a224) {
の方がいい場合あり。
昔逆アセンブルしてみたら
if(a32) goto xxx;
if(a224) {
xxx:
...
}
的な処理してた。

まぁ処理速度必要で、
一秒間に数千、数万回実行される処理でなきゃそこまでする必要は無いと思う。

264 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:40:24.40 ]
組み込みとか4kデモとかじゃないかぎり気にせず関数化



265 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:40:35.91 ]
って、>>262>>255と同じだったか。
>>263
そこまで速度を必要とするならそもそも条件判断をしないようにすればいい。

266 名前:254 mailto:sage [2012/01/17(火) 16:50:41.22 ]
4kではないですが、動画の処理なので、関数呼び出しコストはかなり気になります。

条件判断しないようにすればいいとは、どのように書けばよいのですか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<223KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef