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


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

C言語なら俺に聞け 147



1 名前:デフォルトの名無しさん [2018/08/16(木) 23:36:02.22 ID:fOCSKLtw.net]
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/

237 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:35:46.52 ID:4VjbPjMt.net]
親切に俺condwaitって書いたのに…

238 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:37:11.87 ID:ZsGoqTtC.net]
関数のレベル感あわせるのむずい
あわないだろ

239 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:49:21.25 ID:OJr5a4rA.net]
>>224
> do while は初回のチェックが入らない分速い。(逆に言えば、その分だけしか速くない)
違う、>>177はコンパイラがあまり賢くない時代の知識で止まってるロートルってだけ

240 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:50:32.61 ID:/xlV6A++.net]
現在通過中
風はそれほどでも無いが雨量がヤバい、尋常じゃない

241 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:50:52.78 ID:/xlV6A++.net]
誤爆した

242 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:50:52.87 ID:wxGNRrqx.net]
「軽い場合がある」

243 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:52:49.79 ID:wxGNRrqx.net]
デメリットは数文字ソースコードが増えるだけ
生成されるバイナリが悪くなることは無い
良くなる可能性はある

244 名前:デフォルトの名無しさん [2018/08/23(木) 22:54:11.95 ID:qYtPM3Ou.net]
>>223
> それは正しく分割出来てないから。
そう。だから、>>113は正しく分割できていない、という人がいると書いたんだが。

245 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:54:57.75 ID:wxGNRrqx.net]
do while を使わない(使えない)人っているよね



246 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:57:34.92 ID:wxGNRrqx.net]
常に正しく分割されてるコードしかいじらないわけでも無いだろうし
常に正しく分割出来るとも限らないし
正しいか正しくないかは視点によっても違う

理想だけ語るだけで実際にコードを組んだ事が無さそうな人がいるようだけど

247 名前:デフォルトの名無しさん [2018/08/23(木) 23:01:12.83 ID:FIun2PeI.net]
>>237
気圧申告しないと!

248 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:01:58.95 ID:wCnARv+4.net]
ワッチョイないのに結局レスするんか

249 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:03:30.31 ID:NMfUyUL+.net]
>>230
>FizzBuzzはイテレートするクラス、判定クラス、表示クラスに分割され、イテレータがインタフェースとして活用される、というのが件の悪ノリだった
どんなコードになるのでしょうか?一度みてみたいものです…

fizzbuzz はこんなコードを書いたことがあります
https://mevius.5ch.net/test/read.cgi/tech/1434079972/25
https://ideone.com/i8wMea

250 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:18:47.64 ID:y9Wx8uZn.net]
>>226
具体例あるか?
それ以前に「成功するまでリトライ」自体がよろしくないが。


>>236
do-whileに対して何か特殊な最適化がかかるという話なら、
俺は知らんから突っ込めない。
が、そうだとしても、それでコードを汚すこと自体が間違いだが。


>>241
そう思うんならそれでいい。
平行線だし、議論しても結果は出ない。
君のコードを見て他の人がどう思うかはそれぞれの自由だ。

俺はこの場合関数に括り出す方を選択する。
同様の連中もここにいるだろ。それだけの話さ。

ただそれ以前に、アトミックなんて最初から関数に括り出されていると思うが。
インラインアセンブラを使う気でなければそもそも無理だし。例えば、以下。
https://msdn.microsoft.com/ja-jp/library/dd78zt0c(v=vs.110).aspx


>>245
あー、8は俺だ。
ワッチョイありで立て直してくれればそっち行くわ。
(俺が立て直してもいいが)

251 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:43:58.22 ID:y9Wx8uZn.net]
>>246
俺の記憶では、「FizzBuzz Implementation in Java」みたいなタイトルでGitHubに在ったはず。(だが出てこない)
★も2000位ついていたと思った。
クレームついて取り下げるとも思えないから、検索順位下げられたんじゃね?

そんなに見たければ自分で探せよ。多分まだそのまま公開してると思うぜ。

252 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:45:37.65 ID:Ml8TmHvL.net]
1000行書けるお題を教えてください

253 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:49:35.97 ID:HinwMmX/.net]
宿題で出されているの?

254 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:52:07.74 ID:NMfUyUL+.net]
>>248
キーワードありがとうございます
これですね
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

255 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:55:52.97 ID:0/a4zf/K.net]
>>249
RPGゲーム
これは26万行

ttps://github.com/naota/hengband/tree/master/src



256 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 23:59:12.07 ID:y9Wx8uZn.net]
>>251
それだ。
(俺のキーワードが役に立ったようには見えないが…まあ辿り着けたようだしよしとしよう)

257 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:05:09.13 ID:iMeaBiRp.net]
>>247
> ただそれ以前に、アトミックなんて最初から関数に括り出されていると思うが。
そうだな。すでに atomic 実装されていたら俺も使うわ。

関わっているプロジェクトや文化にも依存するから、絶対はない。
例えば Kernel とかだと大半は関数化していない。俺は見た記憶がない。
まあそれだけの話。

258 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:16:45.53 ID:O3WQJa8X.net]
>>254
> 例えば Kernel とかだと大半は関数化していない。俺は見た記憶がない。
それソース出せるか?さすがに嘘だと思うぜ。

> C 言語ではアトミック操作を保証できないことから、Linux は基礎となるアーキテクチャーに依存してアトミック操作を提供します。
> https://www.ibm.com/developerworks/jp/linux/library/l-linux-synchronization.html
いちいちインラインアセンブラでは設計効率が悪すぎる。
APIにも当然用意されてるし、普通の人ならそれを使うし、Linusも当然そうだと思うけど。

根本的に「ロック」自体を勘違いしている気がするが。

259 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:18:45.88 ID:iMeaBiRp.net]
>>255
俺は見たことがないだけ。気になったら探してくれ。

260 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:34:08.73 ID:O3WQJa8X.net]
>>256
grepすれば出てきそうだが探す気はない。

linux kernel内でひたすらインラインされているとしたら、
おそらくスタック容量(1スレ当たり256バイトだったか?)の為だろう。
「関数化」はされていなくても「マクロ化」されていて、
ソースコード的には意味が同じという落ちじゃないか?
それなら君の噛みつき方は悪質だと思うがね。(意図的に議論を空回りさせててる)

261 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:37:30.88 ID:iMeaBiRp.net]
>>257
わざわざ自前で関数化していない、という話だぞ。

262 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:43:06.32 ID:O3WQJa8X.net]
>>258
それが論点のすり替えなんだよ。
分かってないようだからそれでいいが。

というわけでこの件は終わりだ。

263 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:44:16.19 ID:iMeaBiRp.net]
>>259
>>113 が自前で関数化する意図でしか読み取れないからな。
あれが自前実装でないというのであれば、それまでだ。

264 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:49:47.27 ID:VJLc5wt0.net]
ソースを示して、突っ込んだ話になることを期待w

265 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:53:41.22 ID:ljcg8c0k.net]
wktk



266 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 00:53:57.99 ID:TjDOkMEc.net]
そしてまた質問者が置き去りになるのであった

267 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 01:26:32.42 ID:VJLc5wt0.net]
C言語なら俺に聞け(答えるとは言っていない)ですか?

268 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 01:28:36.02 ID:A5L5xSI8.net]
>>253
「github にある」が重要なヒントとなりました

269 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 05:28:07.79 ID:Nyovr5Qp.net]
>>242
> do while を使わない(使えない)人っているよね
このスレでも>>161とかな
while(){}に比べたら使用頻度は低いけど使用する機会があるから多くの言語で使えるようになってるのになぜかdo〜while使わない俺かっけーとか思ってそうw
ただ今どきパフォーマンスがいいからdo〜whileにすると言うのはナンセンス

270 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 05:50:10.13 ID:Nyovr5Qp.net]
>>247
> 俺は知らんから突っ込めない。
知らないなら突っ込むなよ…
> do while は初回のチェックが入らない分速い。(逆に言えば、その分だけしか速くない)
とか馬鹿丸出しだぞ

271 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 05:54:34.00 ID:Nyovr5Qp.net]
>>255
あん

272 名前:たの言ってるアトミック操作が>>107のLOCK/UNLOCKに相当する
わざとなのか理解してないのかは知らんけどレイヤーの違うものを混ぜて語られてもそりゃ噛み合わんよw
[]
[ここ壊れてます]

273 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:43:07.97 ID:ZkSPfVdV.net]
>>247
コードを汚す?
do whileに慣れてないと
無限ループでdo whileを使うのがコードを汚す
になるのか?

274 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:52:13.74 ID:ZkSPfVdV.net]
>>266
> ただ今どきパフォーマンスがいいからdo〜whileにすると言うのはナンセンス

forやwhileを選ぶ理由がある所でも
パフォーマンスを気にしてdo whileを選ぶべき
なんて話はしていない

どれを選んでも良いときに
forを選ぶ人、whileを選ぶ人、do whileを選ぶ人がいると言うだけ

275 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:57:40.75 ID:ZkSPfVdV.net]
わざわざCを使うってことは
8bitのチープなマイコン、チープなコンパイラだったり
OSやドライバの開発だったり

アセンブラも混ぜて使うこともありそうな
一番低級な高級言語

他の言語よりも記述方法によるパフォーマンスの差
が語られても良いと思う



276 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:58:09.19 ID:KrjEv78J.net]
自己防衛のためだけのレスになってきたな
そろそろこの話題も終わりかな

277 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:00:01.51 ID:Hnd+Ihtp.net]
ソース見て do {...} while (1); で無限ループになってたら
さすがに「なんで for (;;) や while (1) にせんの?」と尋ねるわ。

…でも「ループ先頭の(決して成立しない)終了判定が入らないから速いんだ」
と言われたら受け入れるかも。分かってやってるんだな、という意味で。
実際のところ for (;;) は無論のこと while (1) でも判定しないと思うけど。

278 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:06:02.46 ID:ZkSPfVdV.net]
>>273
3個とも超基本構文だと思うけど

そのレベルだと
「なんでfor(;;)なの?」って聞く人もいそうだな

279 名前:デフォルトの名無しさん [2018/08/24(金) 08:10:04.46 ID:29l6jjMs.net]
そういやループの話でgoto使うってレスないな
ネストが浅くなるし好んで使う人は・・・さすがに居ないか

280 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:12:56.91 ID:LUWnMn3S.net]
無限ループって怖くね?

281 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:14:01.23 ID:LUWnMn3S.net]
>>274
K&R以来の伝統のCのイディオムだから?

282 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:16:04.10 ID:ZkSPfVdV.net]
goto label2

label1:
処理

label2:
条件判断
if (偽) goto label 1;

----
コンパイル結果的にはforやwhileはこんな感じ
条件が無かったとしても goto label2が入る
最適化しない場合やチープなコンパイラだと
このまま最適化されないかもしれない

goto label2
が不要な時にこれを除いたのがdo while
これのほうがバイナリはシンプル

283 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:18:32.35 ID:ZkSPfVdV.net]
>>175
多重ループから抜ける時
関数の終了処理
ガシガシに最適化をする時

使いどころはこんな感じ

284 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:18:56.33 ID:ZkSPfVdV.net]
アンカーミス
>>275
でした

285 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:30:42.38 ID:ZkSPfVdV.net]
gotoを使わない(使えない)人だと
多重ループから抜ける為だけにフラグを使ったり
多重ループから抜ける目的の為だけの理由で
関連する複数のループを分けたりする

double data[4][4];

例えばこんな構造のデータのある統計情報を返す関数
ただし、データに非有限値が入っていたらNaNを返す
デバッグ用に計算結果を出力するコードが入っている
どういうコードにする?



286 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:42:44.31 ID:srP6ovAZ.net]
>>270
> どれを選んでも良いときに
無限ループ以外にそんなケースあるか?
かつそれでdo〜whileの方が効率的になるケース示してみ

287 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 09:30:50.97 ID:L5DguHRe.net]
マウント取りたくて必死w

288 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 10:27:50.33 ID:tx++RsbT.net]
do…whileの方が初回の判定がないから速いとしてもループ回数が多いと誤差レベルだし無限ループならコンパイラで最適化されて差がなくなると思う

289 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 10:54:27.69 ID:ZlD+iWMs.net]
4.3BSDのccを-Oなしで使った場合の話をまだしてるやついるのか

290 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:04:28.35 ID:Cl8BSI3h.net]
いろいろ誤解が多いので口出ししておく。

アセンブリ言語に手で変換してみるとすぐわかるんだが、
whileは先頭付近に条件分岐が必要な他に、末尾に必ず無条件のジャンプが必要。
対してdo-whileは末尾の条件分岐だけでいい。
このおかげでループ1回あたり命令実行が一つ減る。

しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
ヘボコンパイラなら最適化しないかもしれないが、
その場合は他の部分も最適化されるはずもないので、速度云々いうだけ無駄。

291 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:18:54.46 ID:ZlD+iWMs.net]
そんな誤解しかねないやつ
いるとしたらおまえだけ

292 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:36:54.26 ID:/2nrSUYs.net]
do whileは最後に条件を書くのが気に入らないので使わないです

293 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:38:27.58 ID:C22mUEBr.net]
環境に依る 以上

294 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:40:55.91 ID:7MrYBE0R.net]
使いどころを知らない自慢

forはwhileの上位互換だからwhileを使わない
ていうならまだわかる

295 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:44:59.31 ID:7MrYBE0R.net]
>>282
1回目が必ず条件TRUEになることがわかっているwhileループ全て

話題は無限ループだけど



296 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:22:55.87 ID:srP6ovAZ.net]
>>286
> しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
if文?
do 〜whileに置き換えて単に最後の条件文に飛ぶジャンプ命令入れるだけだぞ

297 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:29:41.83 ID:9+ua1c/R.net]
アセンブラのジャンプ命令や条件分岐の使い方が分かってない様子だね
ループ全体で命令が1回増えるだけなのにループ1回当たりの命令実行回数が増えるとか言ってるし

298 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:30:27.52 ID:7MrYBE0R.net]
----gotoの使用例----

for (y = 0; y < 9; y++){
. . for (x = 0; x < 9; x++){
. . . . if (判定) goto break_loop;
. . . . 処理
. . }
}
break_loop:


----do whileの使用例----

if (FindFirst()){
. . do {
. . . . 処理
. . } while (FindNext());
}

299 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:31:56.80 ID:srP6ovAZ.net]
>>291
> 1回目が必ず条件TRUEになることがわかっているwhileループ全て
それ1回目は必ず実行してその結果で2回目以降を実行するかどうかを決めるってことだよね?
典型的なdo〜whileパターン w
むしろそのパターンでwhile(){}使ってるなら単なるアホとしか思えない

300 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:34:47.80 ID:7MrYBE0R.net]
>>295
>>294の上のようなループを書くことない?
この場合はforだけど

301 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:35:02.93 ID:srP6ovAZ.net]
>>293
昔の話をしてるなら>>286の前半読め
今の話をしてるならそんなことみんなわかってるからいちいちドヤるな

302 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:38:53.07 ID:srP6ovAZ.net]
>>296
それは実行結果でループ制御してるわけじゃないだろ
x, y の値はループに入る時には条件満たしているべきだからdo〜whileなんて使っちゃダメ

303 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:39:50.18 ID:TJU8554I.net]
do whileってそんな語ることあるの?良くも悪くも単なる構文だと思うけど

ダラダラと長いループだと継続条件が下方に隠れるので嫌ってのはある
それ以外は正直どうでも良い

304 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:40:30.21 ID:7MrYBE0R.net]
>>297
今とか昔とかじゃなくて...

PCのプログラムしかしたことが無い人は分からないだろうけど
組み込みのチープなマイコンのコンパイラは
いまだに糞なのはたくさんあるよ

あと、
様々な事情により最適化をOFFにして出荷する事もある

305 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:40:57.41 ID:7MrYBE0R.net]
>>298
その条件、何か関係ある?



306 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:42:26.92 ID:7MrYBE0R.net]
>>299
単なる構文を無条件で悪とする人がいるって話

307 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:53:42.33 ID:90B7//Ue.net]
みんな議論に夢中で楽しそう w

308 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 13:07:51.92 ID:sQPXKPEp.net]
>>299
gotoも単なる構文だしね
あるものは便利に使っていこう

309 名前:デフォルトの名無しさん [2018/08/24(金) 13:32:55.56 ID:Dz3bxc41.net]
https://twitter.com/kondo_orange/status/1032690721822633985


俺は毒舌だから〜、ズバッと切れ味鋭いことも言っちゃうよ〜w、みたいな人、その意見が的を射ていない場合マジでイタイ奴だから気をつけろよ。

勘違いしてる奴けっこういるぞ。

斜に構えて逆張りするならそれなりに思考深めて来ないと。

田端さんとか意見が的外れだったらただのイヤな人だ(笑)
https://twitter.com/5chan_nel (5ch newer account)

310 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 13:41:35.51 ID:B0ktSP35.net]
構造体はメモリのスタックとヒープのどちらに格納されるのでしょうか?

311 名前:デフォルトの名無しさん [2018/08/24(金) 13:53:06.07 ID:MEArwTdw.net]
>>306
書き方次第でどちらにもなりうる。
ポインタ変数作って自分で malloc() 等で初期化すればヒープになる。
関数の中で stastc 付けたり関数外で宣言すると data や bss 領域になると思う。
関数内で static 付けずに自動変数として宣言すれば多分スタックになる。

しかし、必ずそのようなコードを作るコンパイラにしなければならないという決まりはない。

312 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 16:55:09.53 ID:MmiOMKcQ.net]
「C言語」の名前の由来はB言語の後継だからというのは有名だけど、B言語って何でB言語?A言語はないのに。

313 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:04:10.98 ID:YufcJqyf.net]
BCPLが元だからB

314 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:05:27.92 ID:MmiOMKcQ.net]
>>309
BCPLってどんなん?
PL/Iなら知ってるけど。

315 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:15:25.56 ID:ZlD+iWMs.net]
>>310
世話のやける子やなあ
https://ja.wikipedia.org/wiki/BCPL



316 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:15:27.99 ID:sQPXKPEp.net]
>>310
CPLの簡単版

317 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:15:41.51 ID:C/3CctmU.net]
BCPLの元となったのはCPL
経緯は、CPL→BCPL→B言語→C言語

https://ja.wikipedia.org/wiki/CPL_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)

318 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:31:50.43 ID:MmiOMKcQ.net]
へー、BLCLってぱっと見Fortranぽいね。
時代を感じるわ。
C言語みたいにnotationが基本lowercaseになったのって画期的だったのかもね

319 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:41:34.02 ID:C/3CctmU.net]
つ EBCDIC

320 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:51:17.23 ID:srP6ovAZ.net]
>>300
だからそういう話なら
> 昔の話をしてるなら>>286の前半読め
って書いてあるだろ
応用力ないのかよ w

321 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:51:17.53 ID:MmiOMKcQ.net]
うちの会社って、まだHungarian notationを強制しようとする人がいるんだけど、make excessiveせずに説得するにはどうしたら良いでしょうか?

322 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 17:53:50.92 ID:srP6ovAZ.net]
>>301
あんたにはないのかもね
別に全てに人に同意してもらおうとは思ってない
色々おかしい人はいくらでもいるし

323 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 18:14:41.54 ID:ZkSPfVdV.net]
>>316
昔話じゃないって言ってるの
そもそも>>286が間違ってる

324 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 18:40:16.19 ID:1mvArulW.net]
>>319
どこが?

325 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 1 ]
[ここ壊れてます]



326 名前:9:11:10.10 ID:s18ZTF9u.net mailto: >>317
なんだよその不自然な英語混じり文は
なんか変わり者っぽいな
[]
[ここ壊れてます]

327 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:16:16.69 ID:C/3CctmU.net]
>>320
これだろ
>whileは先頭付近に条件分岐が必要な他に、末尾に必ず無条件のジャンプが必要。

whileの処理構造ならループ開始直後に条件判定の個所に(1度だけ)無条件ジャンプしてしまえば、あとは条件分岐を繰り返すだけで無条件ジャンプを再び使うことはない
ぶっちゃけ条件判定が先頭付近にあろうが末尾にあろうが何処でもいい
(do-whileの構造だと必ず一度は処理を実行する必要があるのでそんなことは出来ないけど)

328 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:23:07.44 ID:YufcJqyf.net]
先頭のほうがええやろ

329 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:28:22.47 ID:MmiOMKcQ.net]
>>321
日本人なんだけど日本育ちじゃないのでニュアンスをどう伝えたら良いのか分からないのですみません

330 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:30:09.95 ID:1mvArulW.net]
>>322
それがdo-while構造に最適化してるってことでは?

331 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:37:04.31 ID:C/3CctmU.net]
>>323
C言語のソースと直接対応させるならそのほうがその方が素直といえば素直だけどね
条件分岐命令はジャンプ範囲に制限があることがある(-128〜+127byte程度)ので下手すれば多段ジャンプを強いられることがある
アセンブラレベルでギリギリの調整をするときはループ構造が制約されることもあるよ

332 名前:デフォルトの名無しさん [2018/08/24(金) 19:50:21.18 ID:rXR3rzpw.net]
条件分岐で飛び先を相対で1バイトで指定しなければならないがそれ以上飛ばしたいなら逆の条件で無条件ジャンプによるループを抜けるようにすれば良いだけでは?

333 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:52:23.26 ID:s18ZTF9u.net]
>>324
マジかよ

334 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:59:34.12 ID:ZkSPfVdV.net]
>>320
>>278

わざわざ普通のコンパイラの結果を書いてあげてるのに

335 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 19:59:55.12 ID:C/3CctmU.net]
>>327
その方が適切な場合であればそうする
結局のところコンパイラの吐き出したバイナリをアセンブラでチューニングするような状況だと少しでも所要クロックが少なく命令バイト長が短くなるようにロジックを弄るんだよ



336 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 20:05:00.35 ID:s18ZTF9u.net]
ぼくのコードを評価してください
https://ideone.com/YEOWVY

337 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 20:11:20.96 ID:ZkSPfVdV.net]
>>331
趣味の押し付け合いを望んでる?






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

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

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