1 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:54:06.26 ID:Nt0XFA2s.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part147 https://mevius.5ch.net/test/read.cgi/tech/1576659413/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語)
71 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:04:12.92 ID:YFAnTUnh.net] 2次元構造の2個のループを抜ける為に 非常に関連のある2個のループを別関数に分ける この方が設計が悪い というのがおれの感覚
72 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:07:14.52 ID:JWECbGc7.net] >>67 gotoは悪、多重ループは悪、みたいなどこかで聞いたルールを杓子定規に常に遵守すべき絶対ルールのように考える人が少なからずいるんだろうね。声が大きいだけかもしれないけど。
73 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:09:12.42 ID:PjJtYhAX.net] gotoの利用にコンパイラの補佐があればよかったのに
74 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:10:50.63 ID:PjJtYhAX.net] 中カッコ、変数の有効範囲含め スコープ内に飛び込むジャンプを一切禁止、前方のみと決めれば なかなか直観的でわかりやすいキーワード だとおもうのに
75 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:19:24.65 ID:YFAnTUnh.net] 一切禁止とか言うから それが絶対だと初心者が思って思考停止する この典型がgoto 使った方が良い時は使う 再帰も生ポもグローバル変数も多重継承も多重ループも
76 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 19:25:00.72 ID:6nnXKMBq.net] >>67 ここでワイが「悪い」って言ってるのは使うなとか別の方法がとれるとかいうほどの強い意味じゃなくてさ、 気を付けなきゃならないポイントとして目立ってもらわなきゃ困るって程度の意味。 だけど、日常的にそこら中でそういうポイントがあるのならやっぱり悪いとは思うけど……。
77 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:26:16.45 ID:j/qpVk5O.net] 二重ループの脱出は [&]{ for(){ for(){ return; } }}(); で結論出たはずだが
78 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:29:49 ID:YFAnTUnh.net] これはひどい
79 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:44:49 ID:PjJtYhAX.net] それオーバーヘッドかからんの?
80 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:47:58 ID:j/qpVk5O.net] 関数オブジェクトはまともなコンパイラならインライン展開される
81 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:48:45 ID:7G0Z2VlM.net] 贅沢言いすぎだね 素のPascalなんてreturnすら無いからね もはやどうやってプログラムを書いたらいいか分からないレベル
82 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:53:54 ID:7G0Z2VlM.net] Pascalは完璧な構造化言語を目指したから 入口と出口を常に一つずつにするというポリシーがあって それゆえreturnが無いんだよね returnがあると出口があちこちに散らばるので 構造化じゃない、汚い、という考え なお、breakは有るもよう
83 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:58:58 ID:+WgC03YT.net] [&]{ try{ for(){ for(){ throw 0; } }catch(...){} }}();
84 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/01(土) 20:02:08 ID:6nnXKMBq.net] 抽象的なレベルで考えたら break は 「残りの文が if 式で囲まれていると見なして暗黙のフラグを設定する (そのフラグは暗黙にループの終了条件でもある)」 とも考えられるから、構文糖だといえば構造化は壊れていない。 だけどなぁ、プログラムは人が書くものだし、人にとってどう見えるかも大事なんだよな。 そこらへんは見方によってどうとでも理屈を付けられてしまう。
85 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:04:46 ID:+WgC03YT.net] [&]{ try{ for(){ for(){ throw 2; } } }catch(int d) {printf("%d段階ジャンプしたお¥n",d);} }();
86 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:10:07 ID:tav2AwxI.net] >>82 break 2 も gotoでループを抜けるのも同じ
87 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:24:42 ID:iBA7Xa3w.net] >>83 それは最悪 throw 3; って書いてもチェックされないし
88 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:47:35 ID:BhmlSyWc.net] >>67 3重ループは? 4重ループは? なんで2だけなの?
89 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:52:34 ID:TULylXcw.net] たまに国語力が心配になるやつがいるよな
90 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:53:59 ID:+WgC03YT.net] [&]{ try{ for(){ for(){ throw "リレミト"; } } }catch(const char*s) {printf("%sの呪文を唱えた¥n",s);} }();
91 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:56:56 ID:BhmlSyWc.net] >>87 答えられないならレスしないで下さい ウザいだけです
92 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:07:19.54 ID:vKrtBnhX.net] for () { for () { goto done; } } done: どう考えてもこちらのほうが綺麗
93 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:09:23.19 ID:BhmlSyWc.net] >>90 だな 必要になったことを変に偽装する悪癖を治すべき病人多すぎ
94 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 21:14:53.51 ID:6nnXKMBq.net] ほんまになぁ。 そんな簡単なことをラベル付き break だのなんだのって面倒なだけとしか思えぬ。 もう構造化は破綻してるんだからおとなしく goto しとけよな!
95 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:19:44 ID:dP/tym/A.net] >>89 日本語が不得意みたいなので英語で説明しますね Double loop frequently appears to treat a two dimension structure such as matrix or image data, so "break from double loop"is used by programmers related mathematical or visual product. >>67 states that is good reason and s not always bad design.
96 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:22:30 ID:BhmlSyWc.net] >>93 意味わかんね なんでそんなことするの? アホだから? それともバカだから?
97 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:25:42.92 ID:dP/tym/A.net] >>94 It's purely kindness for non-Japanese speaker. Did you not like it?
98 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:26:06.76 ID:tav2AwxI.net] >>92 構造化的には breakも途中でreturnもgotoでループを抜けるのも同じだよ
99 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:26:27.45 ID:BhmlSyWc.net] Пожалуйста, говорите по-японски.
100 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:29:34.25 ID:dP/tym/A.net] なんだロシア人か Я не понимаю >>67 , потому что я не понимаю японский?
101 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:32:56.91 ID:tav2AwxI.net]
102 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 21:34:56.10 ID:6nnXKMBq.net] >>96 同じだからそれ以上に新しい文法を持ち込んでもそれほど綺麗にならんって! ということを言いたい。
103 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:36:54 ID:BhmlSyWc.net] >>98 Mimi ni Kijapani.
104 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:38:38 ID:TULylXcw.net] >>96 gotoは正しく使えばという但し書きがつくでしょ そこをなんとかしたいという話だと思ってる それが論点だとするとgoto使えというのは解にならない
105 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:40:19 ID:BhmlSyWc.net] >>96 ほんこれ
106 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:42:54 ID:tav2AwxI.net] >>102 正しく使う前提なのは当たり前 なんでgotoだと正しく使わない前提になるのか不思議
107 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:43:54 ID:BhmlSyWc.net] >>104 ほんこれ
108 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:48:36 ID:7G0Z2VlM.net] 危ない操作はできないようにしようってのが言語の進化だからな それ無視して、安全に使うのが前提とか、正しく使うのが前提とか、それ言っちゃね なんかおかしな方向へ行くよね
109 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:48:59 ID:TULylXcw.net] >>104 構造化プログラミングの概念は知ってるんだよね?
110 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:50:07 ID:7G0Z2VlM.net] gotoを正しくしか使えないように改良したのがreturn、break、continue ってことも忘れずに
111 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:54:44 ID:BhmlSyWc.net] >>104 構造化プログラミングでは使わない制御構造を 使うべきでない理由が構造化プログラミングって論法に 抜け出せない枠があるとは思わないの? >>108 continueだけ、それで正解なんだが 他はみんな間違ってるよ
112 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:57:47 ID:7G0Z2VlM.net] 見てください皆さん、ID:BhmlSyWc ← ひどいですよ まず何言ってるか分からない このレベルはきついな
113 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:02:32 ID:tav2AwxI.net] >>106 どの辺からgotoが危ない操作だと思うの?
114 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:06:43 ID:vKrtBnhX.net] まあ1万行ある関数の中で、5千行目ぐらいにgotoがあって、ラベルが関数の先頭付近にあるとか、それに近いのは見たことあるが、あれはどう考えてもgotoの悪い例だからな 包丁で味噌汁食ってるようなもん
115 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:06:57 ID:BhmlSyWc.net] >>110 きつくて気の毒だな 不勉強なやつは自業自得なので同情はしない
116 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:08:59 ID:BhmlSyWc.net] >>112 1万行か・・・これ↓より重症だなw www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.10.4.html
117 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:11:31 ID:tav2AwxI.net] 不定値や無限ループの危険はgotoに限ったことじゃないし ループを抜けるgotoには関係ない話 goto特有の危険な場面 何を心配してるんだろう 酸っぱいブドウ?
118 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:16:09.36 ID:TULylXcw.net] だめだこりゃ
119 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:19:01.58 ID:7G0Z2VlM.net] gotoはどこへ飛ぶか分からないから読みにくいんだよ 前に飛ぶのか、後ろに飛ぶのか、それすら分からない 飛び先を分かりやすく改良したのがreturn、break、continue それぞれ飛び先が決まっているから追うのが楽 その英知が分からんっていうならreturn、break、continueを使わずに 全部gotoでやれば?って話
120 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:22:45.11 ID:tav2AwxI.net] 関数なんてもっとどこに飛ぶかわからんぞ
121 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:25:22 ID:tav2AwxI.net] どこに飛ぶかわかる名前にするってのが普通の発想 意味でも構造でも文章でも好きな名前を付けられる 関数も変数も名前空間も全てそう
122 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:25:32 ID:TULylXcw.net] gotoは中にも飛べるの知らないんじゃないこの人
123 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:25:55 ID:BhmlSyWc.net] >>117 飛び先じゃなく飛ぶこと自体の問題なんだがw
124 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:26:20 ID:7G0Z2VlM.net] つまりはそういう話で、追いやすいように飛び先を制限したいよねーってのが根底に有って (当然そういうのが念頭にあってreturn,break,continueは生まれたわけで、前例に倣いたい所) それでブロックに名前を付けるだのbreak 2だのって書き込んでいる人がいるわけで gotoでいいんじゃね?っていうなら、return,break,continueもgotoでいいんじゃね? むしろforやwhileもgotoでいいんじゃね?gotoを正しく使えばいいんだろ?ってなる
125 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:26:36 ID:TULylXcw.net] 構造化プログラミング知らずにgotoいきって使うのはさすがにやばい
126 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:28:23 ID:BhmlSyWc.net] >>122 どうなっていれば「追いやすい」のかを まず明らかにしようぜ 俺ルールでもいいし 広く認知されているルールでもいいし
127 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:31:09 ID:7G0Z2VlM.net] 巻数はどこに飛ぶか分からないが、必ず元に戻ってくる(のが基本) 行きっぱなしというか、ただのジャンプのgotoやらbreakやらとは違うのだよ 関数のコールは入口と出口が一つになってて非常に構造化されてる好例 こういうところ分からないってのはセンスないよ
128 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:32:56 ID:7G0Z2VlM.net] 巻数→関数
129 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:35:10.84 ID:tav2AwxI.net] 使い所でgotoが使えないのはセンス無い 使い所でgptoを使わないのはコードが見にくい 使い所でgotoを使わないのは危険なコード goto否定派にレベルを合わせた主張をするとこんな感じ
130 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:42:27.15 ID:TULylXcw.net] やっぱりこいつダメだな 知性がない
131 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:44:49.19 ID:tav2AwxI.net] 使い所でgotoを使わないのは知性が無い
132 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:45:34.37 ID:7G0Z2VlM.net] 本心では誰もgotoは否定していないんじゃないかな 今は多段breakの機能が無いんだからgotoを使えばいいだろう しかし、もしgotoを使わないで済む多段breakの新機能があったのなら それを使ったほうがいいだろうし じゃーその新機能はどんなものが考えられるか?って遊びだろ? ブロックに名前付けるだとかbreak nだとかは
133 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:50:41.91 ID:wBNP08tW.net] 多段breakは考えた奴は脳味噌が糞すぐる… ループの深さを変えたとたんにバグるじゃん? ループの深さは金輪際変えないとか ループの深さを変えるとき必ずループ全体を机上確認するとかだったら gotoでも逝けるじゃん??
134 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:53:08.37 ID:vKrtBnhX.net] ああ、そうだな break 2だとfor文が3重になったときにバグるな 個人的には面白いと思ったが
135 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:53:40.31 ID:tav2AwxI.net] 使い所は2次元構造の2重ループとかだよ
136 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:55:40.65 ID:rsRLlL5x.net] 画像処理とかで2重ループ良く書くけど、最近2段階breakしたくなった記憶がないな 実は要らないんじゃね
137 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:56:47 ID:tav2AwxI.net] じゃあbreakもいらないんじゃない?
138 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 22:59:11 ID:7G0Z2VlM.net] まーC++がプリプロセッサを殺すために進化しているのと同様 Cはgotoを殺すために進化したともいえるわけで たとえば、関数、for、return、などなど、制御構造にかかわるほとんどの物が gotoを殺すために有るといってもよい だから、もっとgotoを殺すにはどうすればよいか、考えるのは自然な発想かと C++でもテンプレートなどで出来ないことはプリプロセッサでしなければならないし ただ、同じことがテンプレートとかで出来るならそのほうが良いだろうし もっとプリプロセッサを殺すためにはどういう機能を追加すればよいか考えるのは自然な事だろう 同じ同じ
139 名前:◆QZaw55cn4c mailto:sage [2020/02/01(土) 23:01:32 ID:EspH/Y2K.net] goto とか break とか continue とか、他の言語(javaとか)でもいろいろ小手先的に弄られているけれども、それに何の意味があるのかいつも不思議におもいますね C/C++ の goto とかはどう頑張っても関数の中でだけしか跳べないのだから、BASIC の GOTO ほどにはスパゲッティ状態を招けないのではと考えます 無論、その関数が異様にデカければ別ですが、そんなデカい関数を書くほうが問題であって goto が問題なのではないかと
140 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:11:38.33 ID:tav2AwxI.net] ループを抜ける為にだけ使われる変数を使ったループ抜け 世の中にはたくさんこういうコードがある たくさんのコードを見る機会がある人なら たくさん見たことがあるはず gotoネガティブキャンペーンのせいだよ
141 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:11:46.92 ID:JWECbGc7.net] >>136 gotoが使わないで済むように進化してくのは期待している。 ただ現状として、多重ループを抜ける場合みたいにgotoを使うのがシンプルで分かりやすいならば、毛嫌いしたり盲目的に原則振りかざすよりgoto使えばいいだけのことだと思うよ。
142 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:32:29 ID:TULylXcw.net] >>138 お前ほんとに病気だな 多重ループ脱出でgotoが簡潔なのはみなわかってる でもgotoは自由度が高すぎて構造を壊す可能性があるわけ だから改善するとしたら何があるかという話をしてるだけであって 別にgoto禁止とかの話はしてない 好きなだけ使ってろよ あと構造化プログラミングぐらい知っとけ
143 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:45:45.20 ID:tav2AwxI.net] >>140 色々と違う
144 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:46:54.20 ID:vKrtBnhX.net] for () { break label; } label; for () { for () { break label1 } label2; } label1; こういう風にfor文のお尻にラベルを付けられるようにすれば局所化したgoto風のbreakが使えるのでは
145 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:48:30.11 ID:tav2AwxI.net] for () { goto label; } label:; for () { for () { goto label1; } label2:; } label1:;
146 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:49:00.26 ID:tav2AwxI.net] 今でも出来る
147 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:49:30.89 ID:wBNP08tW.net] Pythonはループにラベルをつける手が使えた と思った(幻覚でなければ
148 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:52:18.24 ID:pUJoLXPw.net] またgotoの話になってんのかよ。。 だからいっそ禁止にと思ったが、それよりもさらにクソな構文の提案が出てたり。。 想定を超えた馬鹿どもばっかりじゃねーか。
149 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:54:48.66 ID:tav2AwxI.net] 無理に会話に入って来なくて良いよ
150 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 23:59:22.03 ID:7G0Z2VlM.net] ただ、凝りに凝った複雑怪奇なテンプレートより シンプルに作ったマクロの方が読みやすいって事例も当然あるだろうよ てか、わりと、最近、残念ながらその傾向が・・・で、C++が嫌われる理由にも・・・ だからgotoを殺すのも上手くやらないとむしろ酷くなる そこが腕の振るいどころで面白い部分でもあるし、言語作ってる連中もそんなことで頭いっぱい 変なゲーム性が有って、逆にそれがまたダメな部分でもあって あと、妹大好き
151 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 00:17:33.29 ID:rWwvB4I9.net] 多段breakの使用頻度がそれほど多くないことを加味すれば break n;方式が妥当だろうね これだと2重ループを3重ループに書き換えたときにバグる、とか 意味不明なことを言ってる奴もいるが それは1重ループをbreakで抜けてたのを2重ループに書き換えたらバグった と言ってるのと同じであって、当たり前の話だし、今でも同じことだ break n;が一番シンプルで妥当だと思うね
152 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 00:32:21 ID:7b/FZYuN.net] breakの後にマジックナンバーを書くのが気に入らない 定数には意味のわかる名前を付けたい
153 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 00:33:00 ID:rWwvB4I9.net] ただし、break n;のnの部分が変数でもOKとかなってたらかなりウザいが そこはnは定数と定めたいね、でもC++の場合は定数と言っても・・・ 複雑にしようと思えばいくらでも複雑にできるわなー 普通に使う分には問題ないかと 明日からbreak n;が入っても、たぶん誰も困らないし、混乱も起きないだろう 割のいい賭けだし、俺はアリだと思うね
154 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 00:33:32 ID:7b/FZYuN.net] breakとbreak nが同じとか意味不明な主張をなさる御仁がいらっしゃるが じゃあcontinueがcontinue nになったらどんな地獄が発生するか 考えてみたら良い
155 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 00:48:04.23 ID:rWwvB4I9.net] 別にcontinue n; 全然ありでしょ これと同等の事を、何か別の方法でやるよりスマート for(;;){ bool do_continue = false; for(;;){ if(...){ do_continue = true; break;} } if( do_continue ){ continue; } } ↓ for(;;){ for(;;){ if(...){ continue 2; } } }
156 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 01:00:22.64 ID:7b/FZYuN.net] do { do { ... if (cond) { continue 2; } } while (副作用の有る式1); } while (副作用の有る式2); とから?
157 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 01:03:23.27 ID:0Gqmr542.net] break nなんてやるくらいならbreak label で抜けるループを明示的に指定したいな ↓ ループにラベルをつけるとして、先頭では見づらくて邪魔だな ↓ ループの末尾にラベルを付ければ見やすいけど、それだとlabelついたループを抜けると言うよりlabelの指す位置へのジャンプだな ↓ なんだgotoでいいじゃん 個人的には breakto label という記法でループ出口に書いたラベルに飛べるとするのが分かりやすいと思うけど、こんなことに新しい予約語を導入するくらいならgotoで十分だと思う。
158 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 01:06:28.34 ID:7b/FZYuN.net] break nが良いとか言ってる椰子は ついでに行番号も復活してほしいと思っているに違いナス
159 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 01:15:40.31 ID:rWwvB4I9.net] do{ do{ if(...) goto NEXT; }while(...); NEXT; }while(...); と等価だろう 要はこういうgotoを置き換えるために作られたのが continueなのだから、そのルールに従うのが普通だろうね もしくはgoto使わずにフラグでやっても、どのみち内側のループの条件式は実行されないわけで do{ bool do_continue = false; do{ if(...){ do_continue = true; break; } }while(...); if(do_continue) continue; }while(...); これ以外の解釈ってのは難しい
160 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 02:23:51 ID:93obPCeA.net] gotoの話題って今でもこんなに盛り上がるのか
161 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 02:49:52.74 ID:LC7cWz9a.net] 老害が多いから
162 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 03:26:54 ID:EDNK6zQt.net] そういう機能要望みたいなのここでやる意味ある? C++Slackでやった方がよくない?
163 名前:デフォルトの名無しさん [2020/02/02(日) 03:45:22 ID:mzCY/+E0.net] 英語は敷居が高いよ。
164 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 05:06:46.10 ID:DTIMfhpJ.net] ,,-―--、 |:::::::::::::;;;ノ |::::::::::( 」 <もう構造化は破綻してるんだからおとなしく goto しとけよな! ノノノ ヽ_l ,,-┴―┴- 、 ∩_ /,|┌-[]─┐| \ ( ノ / ヽ| | バ | '、/\ / / / `./| | カ | |\ / \ ヽ| lゝ | | \__/ \ |  ̄ ̄ ̄ | ⊂|______| |l_l i l_l | | ┬ |
165 名前:デフォルトの名無しさん [2020/02/02(日) 06:40:45 ID:mzCY/+E0.net] じゃあswitchも要らないって事じゃないか。
166 名前:◆QZaw55cn4c mailto:sage [2020/02/02(日) 06:51:18 ID:9jRHEnns.net] >>149 break n なんて間抜けの極みだと思いますね java にはラベル付き break が存在して、ほとんど goto です https://www.sejuku.net/blog/20100
167 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 07:37:33 ID:SWo7Ruqh
] [ここ壊れてます]
168 名前:.net mailto: >>136 Cはgoto殺すために進化してねえよ Cのgotoが関数外に飛べないのはスタック巻戻しのような仕掛けが複雑になりすぎるからで 構造化プログラミングで否定されるからという理由ではない 構造化プログラミングで否定される制御構造を持たないことにするなら breakやlongjmpは存在できないはずだ [] [ここ壊れてます]
169 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 07:44:05 ID:pBPOCWQ5.net] 結論が先にあって理由が後付けだから支離滅裂、一貫性の欠片もない事を書く もはや宗教
170 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 07:46:45 ID:SWo7Ruqh.net] ほんと、宗教だね 洗脳されてるやつは強固に思考停止していて 何を言おうが馬の耳に念仏だ
171 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 08:06:14 ID:SWo7Ruqh.net] >>159 根底がわかってねえやつが多いからだよ 古典的な基本がわかってねえやつは若造と爺のどっちに多いだろうね 頓珍漢なことを書いて袋叩きにされたからって逆恨みする精神性なやつはどっちに多いだろうね