C言語なら俺に聞け 149at TECH
C言語なら俺に聞け 149 - 暇つぶし2ch1035:デフォルトの名無しさん
19/02/06 03:09:41.56 jnwpwdAT0.net
>>987
そのプログラム問題ないぞ。単に入力に 0 が入ってない(というか何もない)からうまく行かないだけ。
下の所の「入力」タブを押して標準入力から読ませる文字列を入れておいてから実行すればいい。
例えばこんな風にだ。(これは入力の所に文字列セットしただけ。プログラム変更なし)。
URLリンク(paiza.io)

1036:デフォルトの名無しさん
19/02/06 03:16:24.22 jnwpwdAT0.net
ま、しかし、入力が何もなしでいきなり EOF になった場合を想定していないのはまずいプログラムであるとは思う。

1037:デフォルトの名無しさん
19/02/06 04:30:43.46 FgEjt1k50.net
Cが高速な理由ってコンパイラが出力バイナリの速度に重点を置いていて
かつそのコンパイラが長年の歴史をかけて磨かれてきたから。っていうのは間違ってるかな
Cの言語構造そのものに高速性が見出せない。
直にx86アセンブラを書いても速度が遅かったりするもん。

1038:デフォルトの名無しさん
19/02/06 04:57:27.49 eUM592Vs0.net
ループから抜けるときに goto使ったらダメなんですか?
for (...) {
for (...) {
if (...) goto LOOP_EXIT;
}
}
LOOP_EXIT:
こういう感じで書いたら先輩に怒られました。
フラグ見てループ抜けるように修正しろと。
指示されたので従いますけど、どうしてダメなのかよく分かりません。
どなたか納得するような理由をご存知でしょうか?

1039:デフォルトの名無しさん
19/02/06 06:01:54.08 erbfwmnV0.net
goto全否定は宗教みたいなもん。
万人が納得できるような理由はないと思う。
BASIC時代のスパゲッティーなプログラムの反省から制御の構造化を崩すようなgotoとcontinueは禁忌されることが多い。
ホントはここぞって言う時には使うべきなんだけどね。

1040:デフォルトの名無しさん
19/02/06 06:27:31.89 1SbGZlcV0.net
>>981
レス番が0xffなのも草

1041:デフォルトの名無しさん
19/02/06 06:29:29.34 1SbGZlcV0.net
>>993
continueはどのように構造化を崩すんだ?
ループの外へ出てしまうgotoやbreakとはちょっと違うと思うが

1042:デフォルトの名無しさん
19/02/06 07:45:48.33 5UWRxIqtM.net
>>995
break文もそうだが、continueは構造化を無視してジャンプするという範疇に入るそうだ。
ま、宗教だね。

1043:デフォルトの名無しさん
19/02/06 08:30:46.09 QSRxZnkxM.net
まあ初心者相手ならgotoには蓋をしておいて、15の誕生日になったら開けなさいって言っておいたほうがよいとは思う

1044:デフォルトの名無しさん
19/02/06 08:47:44.10 ko7vbQjm0.net
Ruby にも、多重ループを一気に抜ける構文がある
catch(:hoge_break) do
3.times do |i|
4.times do |j|
throw(:hoge_break) if hoge
end
end
end
これを認めない人は毎回、継続フラグを判断し続けなければならない。
漏れはむしろ、こちらの書き方の方が、バグる気がする

1045:デフォルトの名無しさん
19/02/06 08:59:54.85 2/r6PXjM0.net
並列実行させたいときループの途中に戻りたいと思ふ。

1046:デフォルトの名無しさん
19/02/06 09:29:07.75 6h2IvBM+0.net
>>994
その発送はなかったわw

1047:デフォルトの名無しさん
19/02/06 09:56:36.40 LaX4f5p90.net
本日配達の予定です。

1048:デフォルトの名無しさん
19/02/06 12:30:20.04 5DsLQSpRM.net
>>999
コルーチンやね
いくつかの言語でサポートされてるけどまあ今どきならマルチスレッド+同期化でやりたいことはできる
URLリンク(ja.m.wikipedia.org)コルーチン

1049:デフォルトの名無しさん
19/02/06 12:30:56.55 Zn5BTEOaa.net
>>991
C以外はCと同じようなことをしようとしてもコードが沢山作られて結果的に遅くなるって事だと思うが。(ただし人力で最適化してあるアセンブラ等は除く)。
昔は本当にそうだったように思う。高級言語なのにコンパクトなコード作るのはCぐらいじゃないか?今は知らないけどね。
それと今はインタプリタやVMで実行するのが一般的なJavaのような言語でも実行時に内部でコンパイルし�


1050:スりJITつかったり工夫がされてるので速度は速くなる事はあるかも。 コードは内部的に大きくなってメモリ食ってるかも知れないけどね。小規模な組み込み用とかでなければ問題にならないと思う。



1051:デフォルトの名無しさん
19/02/06 12:41:47.95 CtZpHCTya.net
longjmpとか昔からあると思うよ

1052:デフォルトの名無しさん
19/02/06 12:44:25.18 Zn5BTEOaa.net
>>992
いや、いいよ別に。後でそれで混乱することにならないとか、あるいは使った方がより見やすく分かりやすくなるなら使えばいいのでは?
C言語はtry catch みたいなのもないし、トリッキーな方法でないものをあるかのように見せかけるプログラム作るよりはサクッと goto 使っちゃった方が良いと思う。
その先輩はそのような信仰を持っているか、または会社ならばそこでのコーディング規約で使わない事にしてあるんだろう。

1053:デフォルトの名無しさん
19/02/06 12:46:40.08 zkk6azTG0.net


1054:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 100日 14時間 44分 56秒

1055:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch