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


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

C++相談室 part148



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/ (日本語)

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
根底がわかってねえやつが多いからだよ
古典的な基本がわかってねえやつは若造と爺のどっちに多いだろうね
頓珍漢なことを書いて袋叩きにされたからって逆恨みする精神性なやつはどっちに多いだろうね

172 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 08:18:25 ID:9aZda2U6.net]
break labelでいいんじゃね
gotoと同じだが、labelがbreak的な位置にない場合コンパイルエラーになれば良い



173 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 08:27:24 ID:DTIMfhpJ.net]
label貼るくらいならgoto使う

174 名前:デフォルトの名無しさん [2020/02/02(日) 09:22:07 ID:mzCY/+E0.net]
gotoは便利なswitchだからね。
便利すぎるわこれ。
これからも積極的に使っていこうと思います。






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

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

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