C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part147
https://mevius.5ch.net/test/read.cgi/tech/1576659413/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
探検
C++相談室 part148
■ このスレッドは過去ログ倉庫に格納されています
2020/01/31(金) 20:54:06.26ID:Nt0XFA2s
goto とか break とか continue とか、他の言語(javaとか)でもいろいろ小手先的に弄られているけれども、それに何の意味があるのかいつも不思議におもいますね
C/C++ の goto とかはどう頑張っても関数の中でだけしか跳べないのだから、BASIC の GOTO ほどにはスパゲッティ状態を招けないのではと考えます
無論、その関数が異様にデカければ別ですが、そんなデカい関数を書くほうが問題であって goto が問題なのではないかと
C/C++ の goto とかはどう頑張っても関数の中でだけしか跳べないのだから、BASIC の GOTO ほどにはスパゲッティ状態を招けないのではと考えます
無論、その関数が異様にデカければ別ですが、そんなデカい関数を書くほうが問題であって goto が問題なのではないかと
138デフォルトの名無しさん
2020/02/01(土) 23:11:38.33ID:tav2AwxI ループを抜ける為にだけ使われる変数を使ったループ抜け
世の中にはたくさんこういうコードがある
たくさんのコードを見る機会がある人なら
たくさん見たことがあるはず
gotoネガティブキャンペーンのせいだよ
世の中にはたくさんこういうコードがある
たくさんのコードを見る機会がある人なら
たくさん見たことがあるはず
gotoネガティブキャンペーンのせいだよ
139デフォルトの名無しさん
2020/02/01(土) 23:11:46.92ID:JWECbGc7 >>136
gotoが使わないで済むように進化してくのは期待している。
ただ現状として、多重ループを抜ける場合みたいにgotoを使うのがシンプルで分かりやすいならば、毛嫌いしたり盲目的に原則振りかざすよりgoto使えばいいだけのことだと思うよ。
gotoが使わないで済むように進化してくのは期待している。
ただ現状として、多重ループを抜ける場合みたいにgotoを使うのがシンプルで分かりやすいならば、毛嫌いしたり盲目的に原則振りかざすよりgoto使えばいいだけのことだと思うよ。
140デフォルトの名無しさん
2020/02/01(土) 23:32:29.85ID:TULylXcw >>138
お前ほんとに病気だな
多重ループ脱出でgotoが簡潔なのはみなわかってる
でもgotoは自由度が高すぎて構造を壊す可能性があるわけ
だから改善するとしたら何があるかという話をしてるだけであって
別にgoto禁止とかの話はしてない
好きなだけ使ってろよ
あと構造化プログラミングぐらい知っとけ
お前ほんとに病気だな
多重ループ脱出でgotoが簡潔なのはみなわかってる
でもgotoは自由度が高すぎて構造を壊す可能性があるわけ
だから改善するとしたら何があるかという話をしてるだけであって
別にgoto禁止とかの話はしてない
好きなだけ使ってろよ
あと構造化プログラミングぐらい知っとけ
141デフォルトの名無しさん
2020/02/01(土) 23:45:45.20ID:tav2AwxI >>140
色々と違う
色々と違う
142デフォルトの名無しさん
2020/02/01(土) 23:46:54.20ID:vKrtBnhX for () {
break label;
} label;
for () {
for () {
break label1
} label2;
} label1;
こういう風にfor文のお尻にラベルを付けられるようにすれば局所化したgoto風のbreakが使えるのでは
break label;
} label;
for () {
for () {
break label1
} label2;
} label1;
こういう風にfor文のお尻にラベルを付けられるようにすれば局所化したgoto風のbreakが使えるのでは
143デフォルトの名無しさん
2020/02/01(土) 23:48:30.11ID:tav2AwxI for () {
goto label;
} label:;
for () {
for () {
goto label1;
} label2:;
} label1:;
goto label;
} label:;
for () {
for () {
goto label1;
} label2:;
} label1:;
144デフォルトの名無しさん
2020/02/01(土) 23:49:00.26ID:tav2AwxI 今でも出来る
145デフォルトの名無しさん
2020/02/01(土) 23:49:30.89ID:wBNP08tW Pythonはループにラベルをつける手が使えた
と思った(幻覚でなければ
と思った(幻覚でなければ
146デフォルトの名無しさん
2020/02/01(土) 23:52:18.24ID:pUJoLXPw またgotoの話になってんのかよ。。
だからいっそ禁止にと思ったが、それよりもさらにクソな構文の提案が出てたり。。
想定を超えた馬鹿どもばっかりじゃねーか。
だからいっそ禁止にと思ったが、それよりもさらにクソな構文の提案が出てたり。。
想定を超えた馬鹿どもばっかりじゃねーか。
147デフォルトの名無しさん
2020/02/01(土) 23:54:48.66ID:tav2AwxI 無理に会話に入って来なくて良いよ
148デフォルトの名無しさん
2020/02/01(土) 23:59:22.03ID:7G0Z2VlM ただ、凝りに凝った複雑怪奇なテンプレートより
シンプルに作ったマクロの方が読みやすいって事例も当然あるだろうよ
てか、わりと、最近、残念ながらその傾向が・・・で、C++が嫌われる理由にも・・・
だからgotoを殺すのも上手くやらないとむしろ酷くなる
そこが腕の振るいどころで面白い部分でもあるし、言語作ってる連中もそんなことで頭いっぱい
変なゲーム性が有って、逆にそれがまたダメな部分でもあって
あと、妹大好き
シンプルに作ったマクロの方が読みやすいって事例も当然あるだろうよ
てか、わりと、最近、残念ながらその傾向が・・・で、C++が嫌われる理由にも・・・
だからgotoを殺すのも上手くやらないとむしろ酷くなる
そこが腕の振るいどころで面白い部分でもあるし、言語作ってる連中もそんなことで頭いっぱい
変なゲーム性が有って、逆にそれがまたダメな部分でもあって
あと、妹大好き
149デフォルトの名無しさん
2020/02/02(日) 00:17:33.29ID:rWwvB4I9 多段breakの使用頻度がそれほど多くないことを加味すれば
break n;方式が妥当だろうね
これだと2重ループを3重ループに書き換えたときにバグる、とか
意味不明なことを言ってる奴もいるが
それは1重ループをbreakで抜けてたのを2重ループに書き換えたらバグった
と言ってるのと同じであって、当たり前の話だし、今でも同じことだ
break n;が一番シンプルで妥当だと思うね
break n;方式が妥当だろうね
これだと2重ループを3重ループに書き換えたときにバグる、とか
意味不明なことを言ってる奴もいるが
それは1重ループをbreakで抜けてたのを2重ループに書き換えたらバグった
と言ってるのと同じであって、当たり前の話だし、今でも同じことだ
break n;が一番シンプルで妥当だと思うね
150デフォルトの名無しさん
2020/02/02(日) 00:32:21.06ID:7b/FZYuN breakの後にマジックナンバーを書くのが気に入らない
定数には意味のわかる名前を付けたい
定数には意味のわかる名前を付けたい
151デフォルトの名無しさん
2020/02/02(日) 00:33:00.49ID:rWwvB4I9 ただし、break n;のnの部分が変数でもOKとかなってたらかなりウザいが
そこはnは定数と定めたいね、でもC++の場合は定数と言っても・・・
複雑にしようと思えばいくらでも複雑にできるわなー
普通に使う分には問題ないかと
明日からbreak n;が入っても、たぶん誰も困らないし、混乱も起きないだろう
割のいい賭けだし、俺はアリだと思うね
そこはnは定数と定めたいね、でもC++の場合は定数と言っても・・・
複雑にしようと思えばいくらでも複雑にできるわなー
普通に使う分には問題ないかと
明日からbreak n;が入っても、たぶん誰も困らないし、混乱も起きないだろう
割のいい賭けだし、俺はアリだと思うね
152デフォルトの名無しさん
2020/02/02(日) 00:33:32.69ID:7b/FZYuN breakとbreak nが同じとか意味不明な主張をなさる御仁がいらっしゃるが
じゃあcontinueがcontinue nになったらどんな地獄が発生するか
考えてみたら良い
じゃあcontinueがcontinue nになったらどんな地獄が発生するか
考えてみたら良い
153デフォルトの名無しさん
2020/02/02(日) 00:48:04.23ID:rWwvB4I9 別にcontinue n;
全然ありでしょ
これと同等の事を、何か別の方法でやるよりスマート
for(;;){
bool do_continue = false;
for(;;){
if(...){ do_continue = true; break;}
}
if( do_continue ){ continue; }
}
↓
for(;;){
for(;;){
if(...){ continue 2; }
}
}
全然ありでしょ
これと同等の事を、何か別の方法でやるよりスマート
for(;;){
bool do_continue = false;
for(;;){
if(...){ do_continue = true; break;}
}
if( do_continue ){ continue; }
}
↓
for(;;){
for(;;){
if(...){ continue 2; }
}
}
154デフォルトの名無しさん
2020/02/02(日) 01:00:22.64ID:7b/FZYuN do {
do {
...
if (cond) {
continue 2;
}
} while (副作用の有る式1);
} while (副作用の有る式2);
とから?
do {
...
if (cond) {
continue 2;
}
} while (副作用の有る式1);
} while (副作用の有る式2);
とから?
155デフォルトの名無しさん
2020/02/02(日) 01:03:23.27ID:0Gqmr542 break nなんてやるくらいならbreak label で抜けるループを明示的に指定したいな
↓
ループにラベルをつけるとして、先頭では見づらくて邪魔だな
↓
ループの末尾にラベルを付ければ見やすいけど、それだとlabelついたループを抜けると言うよりlabelの指す位置へのジャンプだな
↓
なんだgotoでいいじゃん
個人的には breakto label という記法でループ出口に書いたラベルに飛べるとするのが分かりやすいと思うけど、こんなことに新しい予約語を導入するくらいならgotoで十分だと思う。
↓
ループにラベルをつけるとして、先頭では見づらくて邪魔だな
↓
ループの末尾にラベルを付ければ見やすいけど、それだとlabelついたループを抜けると言うよりlabelの指す位置へのジャンプだな
↓
なんだgotoでいいじゃん
個人的には breakto label という記法でループ出口に書いたラベルに飛べるとするのが分かりやすいと思うけど、こんなことに新しい予約語を導入するくらいならgotoで十分だと思う。
156デフォルトの名無しさん
2020/02/02(日) 01:06:28.34ID:7b/FZYuN break nが良いとか言ってる椰子は
ついでに行番号も復活してほしいと思っているに違いナス
ついでに行番号も復活してほしいと思っているに違いナス
157デフォルトの名無しさん
2020/02/02(日) 01:15:40.31ID:rWwvB4I9 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(...);
これ以外の解釈ってのは難しい
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(...);
これ以外の解釈ってのは難しい
158デフォルトの名無しさん
2020/02/02(日) 02:23:51.88ID:93obPCeA gotoの話題って今でもこんなに盛り上がるのか
159デフォルトの名無しさん
2020/02/02(日) 02:49:52.74ID:LC7cWz9a 老害が多いから
160デフォルトの名無しさん
2020/02/02(日) 03:26:54.49ID:EDNK6zQt そういう機能要望みたいなのここでやる意味ある?
C++Slackでやった方がよくない?
C++Slackでやった方がよくない?
161デフォルトの名無しさん
2020/02/02(日) 03:45:22.96ID:mzCY/+E0 英語は敷居が高いよ。
162デフォルトの名無しさん
2020/02/02(日) 05:06:46.10ID:DTIMfhpJ ,,-―--、
|:::::::::::::;;;ノ
|::::::::::( 」 <もう構造化は破綻してるんだからおとなしく goto しとけよな!
ノノノ ヽ_l
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
|:::::::::::::;;;ノ
|::::::::::( 」 <もう構造化は破綻してるんだからおとなしく goto しとけよな!
ノノノ ヽ_l
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
163デフォルトの名無しさん
2020/02/02(日) 06:40:45.35ID:mzCY/+E0 じゃあswitchも要らないって事じゃないか。
>>149
break n なんて間抜けの極みだと思いますね
java にはラベル付き break が存在して、ほとんど goto です https://www.sejuku.net/blog/20100
break n なんて間抜けの極みだと思いますね
java にはラベル付き break が存在して、ほとんど goto です https://www.sejuku.net/blog/20100
165デフォルトの名無しさん
2020/02/02(日) 07:37:33.82ID:SWo7Ruqh >>136
Cはgoto殺すために進化してねえよ
Cのgotoが関数外に飛べないのはスタック巻戻しのような仕掛けが複雑になりすぎるからで
構造化プログラミングで否定されるからという理由ではない
構造化プログラミングで否定される制御構造を持たないことにするなら
breakやlongjmpは存在できないはずだ
Cはgoto殺すために進化してねえよ
Cのgotoが関数外に飛べないのはスタック巻戻しのような仕掛けが複雑になりすぎるからで
構造化プログラミングで否定されるからという理由ではない
構造化プログラミングで否定される制御構造を持たないことにするなら
breakやlongjmpは存在できないはずだ
166デフォルトの名無しさん
2020/02/02(日) 07:44:05.46ID:pBPOCWQ5 結論が先にあって理由が後付けだから支離滅裂、一貫性の欠片もない事を書く
もはや宗教
もはや宗教
167デフォルトの名無しさん
2020/02/02(日) 07:46:45.45ID:SWo7Ruqh ほんと、宗教だね
洗脳されてるやつは強固に思考停止していて
何を言おうが馬の耳に念仏だ
洗脳されてるやつは強固に思考停止していて
何を言おうが馬の耳に念仏だ
168デフォルトの名無しさん
2020/02/02(日) 08:06:14.41ID:SWo7Ruqh >>159
根底がわかってねえやつが多いからだよ
古典的な基本がわかってねえやつは若造と爺のどっちに多いだろうね
頓珍漢なことを書いて袋叩きにされたからって逆恨みする精神性なやつはどっちに多いだろうね
根底がわかってねえやつが多いからだよ
古典的な基本がわかってねえやつは若造と爺のどっちに多いだろうね
頓珍漢なことを書いて袋叩きにされたからって逆恨みする精神性なやつはどっちに多いだろうね
169デフォルトの名無しさん
2020/02/02(日) 08:18:25.64ID:9aZda2U6 break labelでいいんじゃね
gotoと同じだが、labelがbreak的な位置にない場合コンパイルエラーになれば良い
gotoと同じだが、labelがbreak的な位置にない場合コンパイルエラーになれば良い
170デフォルトの名無しさん
2020/02/02(日) 08:27:24.30ID:DTIMfhpJ label貼るくらいならgoto使う
171デフォルトの名無しさん
2020/02/02(日) 09:22:07.84ID:mzCY/+E0 gotoは便利なswitchだからね。
便利すぎるわこれ。
これからも積極的に使っていこうと思います。
便利すぎるわこれ。
これからも積極的に使っていこうと思います。
172デフォルトの名無しさん
2020/02/02(日) 09:40:59.69ID:7b/FZYuN さすがにgotoでジャンプテーブル化の最適化までやる処理系は
まれだと思う
まれだと思う
173デフォルトの名無しさん
2020/02/02(日) 09:43:27.45ID:mzCY/+E0 アドレス直接指定なのに、テーブル必要ないんじゃないの。
テーブル必要ない分、switchより有利なんじゃないかと思いました。
テーブル必要ない分、switchより有利なんじゃないかと思いました。
174デフォルトの名無しさん
2020/02/02(日) 09:51:12.60ID:7b/FZYuN (条件分岐無しの素のgotoだけでどうやってswitchの便利な代替品にするつもりなのやら…
175デフォルトの名無しさん
2020/02/02(日) 09:53:50.90ID:mzCY/+E0 頑張ってひねり出した!!
けどウンコにしか見えない。
納得できるものを頼む。
けどウンコにしか見えない。
納得できるものを頼む。
176デフォルトの名無しさん
2020/02/02(日) 09:55:31.36ID:0Gqmr542 >>175
お前が何をいってるのか、何を考えてるのか理解できないのに、お前を納得させられる奴なんていないぞw
お前が何をいってるのか、何を考えてるのか理解できないのに、お前を納得させられる奴なんていないぞw
177デフォルトの名無しさん
2020/02/02(日) 10:10:20.38ID:o79zkFFu お尻にラベルつけて break ラベル; がいいとか言ってる奴は構造化の意味がわかってなさ過ぎ
ラベルは飛び先じゃなくてループに付けて break ラベル; でそのループから抜けるんだよ
なので break ラベル が使える言語はたいていループの頭にラベルをつけるようになってる
あと break レベル数 とか言ってる老害は早く滅びろ
ラベルは飛び先じゃなくてループに付けて break ラベル; でそのループから抜けるんだよ
なので break ラベル が使える言語はたいていループの頭にラベルをつけるようになってる
あと break レベル数 とか言ってる老害は早く滅びろ
178デフォルトの名無しさん
2020/02/02(日) 10:28:45.43ID:DTIMfhpJ 名前使うならこんな感じか
void main(){
auto scope1 {
for(;;){
for(){
break scope1;
}
}
}
void main(){
auto scope1 {
for(;;){
for(){
break scope1;
}
}
}
179デフォルトの名無しさん
2020/02/02(日) 10:29:18.43ID:mzCY/+E0 >>176
俺自身何を言っているのかよくわからないのだが。
俺自身何を言っているのかよくわからないのだが。
180デフォルトの名無しさん
2020/02/02(日) 10:31:44.19ID:DTIMfhpJ もしくは、forの直後
void main(){
for(;;)scope1{
for(;;){
break scope1;
}
}
}
void main(){
for(;;)scope1{
for(;;){
break scope1;
}
}
}
181デフォルトの名無しさん
2020/02/02(日) 10:58:10.77ID:MNdu0823 void main()の時点で読む気失せた
182デフォルトの名無しさん
2020/02/02(日) 11:16:46.30ID:DTIMfhpJ んだこんにゃろ
183デフォルトの名無しさん
2020/02/02(日) 11:22:39.21ID:D8WvcGqJ ループの先頭にラベルを書くくらいなら
gotoの方が分かりやすい
gotoの方が分かりやすい
184デフォルトの名無しさん
2020/02/02(日) 11:25:45.57ID:mzCY/+E0 あの、スレとは全然関係ないんだけど。
Boostでデバッグとリリース判別するマクロってありますか?
イテレータを1億回ほど回すのでデバッグだけテストを迂回したいんですが。
Boostでデバッグとリリース判別するマクロってありますか?
イテレータを1億回ほど回すのでデバッグだけテストを迂回したいんですが。
185デフォルトの名無しさん
2020/02/02(日) 11:30:31.96ID:9aZda2U6 なぜboost?
186デフォルトの名無しさん
2020/02/02(日) 11:34:47.86ID:mzCY/+E0 NDEBUGを知らなかったからです。
おまえらおせーよ。
おまえらおせーよ。
187デフォルトの名無しさん
2020/02/02(日) 11:39:04.55ID:SWo7Ruqh NDEBUGってISO/IEC9899やん
おまえさんがboostっていうから
レスポンス鈍かったんだよ
おまえさんがboostっていうから
レスポンス鈍かったんだよ
188デフォルトの名無しさん
2020/02/02(日) 11:48:10.68ID:mzCY/+E0 だよね。
そうだと思いました。
そうだと思いました。
189デフォルトの名無しさん
2020/02/02(日) 11:49:31.89ID:mzCY/+E0 今度からはよく考えて質問しようと思います。
190デフォルトの名無しさん
2020/02/02(日) 14:38:02.14ID:rWwvB4I9 今の一重ループを抜けるときの普通のbreakにはラベルを付けないのに
多重ループを抜けるためのbreakにはラベルが無いと読みにくくなるっていう
発想というか対称性というか整合性というか必然性が全く見えないんだが
今ラベル無しの一重breakで誰も発狂することもなく普通に使えているのに
多重breakになった瞬間にラベルが無きゃダメってなるのはなんか弱い
同じことを二回書いたけども
ラベル無しでも別に普通に読めるでしょ、今まで読めてるんだから
大体ラベル付けるんならgotoと手間自体は変わりないしな
多重ループを抜けるためのbreakにはラベルが無いと読みにくくなるっていう
発想というか対称性というか整合性というか必然性が全く見えないんだが
今ラベル無しの一重breakで誰も発狂することもなく普通に使えているのに
多重breakになった瞬間にラベルが無きゃダメってなるのはなんか弱い
同じことを二回書いたけども
ラベル無しでも別に普通に読めるでしょ、今まで読めてるんだから
大体ラベル付けるんならgotoと手間自体は変わりないしな
191デフォルトの名無しさん
2020/02/02(日) 14:40:18.63ID:mzCY/+E0 今多発今多動ラ大
読み解けなかった。
読み解けなかった。
192デフォルトの名無しさん
2020/02/02(日) 14:41:51.46ID:gkoi3ncl >>190
同意
同意
193デフォルトの名無しさん
2020/02/02(日) 14:43:14.46ID:mzCY/+E0 え、わかるんだ。
すげー。
すげー。
194デフォルトの名無しさん
2020/02/02(日) 14:47:27.35ID:gXxB23XL 下方向にだけ飛べるgoto相当機能があればgotoは要らなくなるんじゃない?
195デフォルトの名無しさん
2020/02/02(日) 14:53:57.04ID:7b/FZYuN >>190は、Cにgoto <label>とbreakがあるのになぜCはbreak nを設けるところまで踏み込まなかったのか、とか
break <n>で即値<n>に行き当たったコード閲覧者が行き先を知るために何をせねばならないかとか、
考えた方が良いので
は…
break <n>で即値<n>に行き当たったコード閲覧者が行き先を知るために何をせねばならないかとか、
考えた方が良いので
は…
196デフォルトの名無しさん
2020/02/02(日) 14:55:47.03ID:0Gqmr542 >>190
break nを勧めている人?
対象が1段なのと複数段とでは大きなギャップがあるでしょ。単純に対称性があると言えるものではないと思う。
ラベルつけるならgotoと手間が変わらないというのは同意。ただ、重要なのは手間が減ることではなく、複数段のループの外に出ることが明示されることだから、gotoと意味が混同されず同じ程度の手間でできる記法があるならそれは嬉しい。
break nを勧めている人?
対象が1段なのと複数段とでは大きなギャップがあるでしょ。単純に対称性があると言えるものではないと思う。
ラベルつけるならgotoと手間が変わらないというのは同意。ただ、重要なのは手間が減ることではなく、複数段のループの外に出ることが明示されることだから、gotoと意味が混同されず同じ程度の手間でできる記法があるならそれは嬉しい。
197デフォルトの名無しさん
2020/02/02(日) 14:56:57.31ID:EDNK6zQt 現実のC++について話せ
ここで新機能の導入について議論しても無駄だ
フォーラムでやれ
ここで新機能の導入について議論しても無駄だ
フォーラムでやれ
198デフォルトの名無しさん
2020/02/02(日) 14:57:45.57ID:gkoi3ncl 手間が減ることは重要だよ
ラベル名を考える手間をかけて良いならgotoで良い
ラベル名を考える手間をかけて良いならgotoで良い
199デフォルトの名無しさん
2020/02/02(日) 15:01:24.88ID:rWwvB4I9 大体だよ、多重ループはbreakで抜けれないので、仕方なくgoto使うときの
そのgotoを使う都合で必要になった、そのラベルをだよ
じゃーブロックにラベルをつけましょう、ってなんでそーなんだよ
元々のbreakにはラベルなんかねーのに
breakにラベルが無くて混乱したやつ居るか?
ご飯が無いからパンを食べてた状況なのに
すり替わってパンありきになって、パンが無きゃ話にならないとか言い出す始末
別にパン(ラベル)なんかなくても、ご飯があるならご飯食べろよ
ラヘルラベルって、そのラベルがどこ由来か考えてみろよ、gotoだろ?
もう一度言うが、もともとのbreakにはラベルなんかないし、それでみんな普通に過ごせてるし、混乱も起きてない
ただ、gotoで抜けるためには文法上/機能上ラベルが必要だったねってだけで、そこに着目しても仕方がない
本質的には無くても別に困らない
そのgotoを使う都合で必要になった、そのラベルをだよ
じゃーブロックにラベルをつけましょう、ってなんでそーなんだよ
元々のbreakにはラベルなんかねーのに
breakにラベルが無くて混乱したやつ居るか?
ご飯が無いからパンを食べてた状況なのに
すり替わってパンありきになって、パンが無きゃ話にならないとか言い出す始末
別にパン(ラベル)なんかなくても、ご飯があるならご飯食べろよ
ラヘルラベルって、そのラベルがどこ由来か考えてみろよ、gotoだろ?
もう一度言うが、もともとのbreakにはラベルなんかないし、それでみんな普通に過ごせてるし、混乱も起きてない
ただ、gotoで抜けるためには文法上/機能上ラベルが必要だったねってだけで、そこに着目しても仕方がない
本質的には無くても別に困らない
200デフォルトの名無しさん
2020/02/02(日) 15:05:16.61ID:jVWLSRwc ソースコードチェック目的でプログラム読むとき、gotoが出てきたら
そのgotoの使用方法が問題ないものなのか、いちいちチェックしないといけない。
breakならループ抜けるという意図が明白なので、チェックしなくてよい。
そのgotoの使用方法が問題ないものなのか、いちいちチェックしないといけない。
breakならループ抜けるという意図が明白なので、チェックしなくてよい。
201デフォルトの名無しさん
2020/02/02(日) 15:11:47.92ID:rWwvB4I9 そんなに名前が無いと発狂するんならもうgoto使えば?って思うし
なんなら関数化して正式に名前付ければって思うし
そこまでしたくないってときにbreak nが便利なわけだ
やりたいことは「多重ループから抜けたい」であって
「名前を付けたい」ではない!!
なんなら関数化して正式に名前付ければって思うし
そこまでしたくないってときにbreak nが便利なわけだ
やりたいことは「多重ループから抜けたい」であって
「名前を付けたい」ではない!!
202デフォルトの名無しさん
2020/02/02(日) 15:11:53.90ID:gkoi3ncl 関数コールも問題のないコールかどうかチェックしないといけないから
使わない方が良い
使わない方が良い
203デフォルトの名無しさん
2020/02/02(日) 15:14:22.99ID:EDNK6zQt それならもうポインタもグローバル変数もマルチスレッドも大量のチェックが必要だから使ってはいけないってことで
>>199
私と認識が似ていますね
>>137
>goto とか break とか continue とか、他の言語(javaとか)でもいろいろ小手先的に弄られているけれども、それに何の意味があるのかいつも不思議におもいますね
>>164
java にはラベル付き break が存在して、ほとんど goto です https://www.sejuku.net/blog/20100
私と認識が似ていますね
>>137
>goto とか break とか continue とか、他の言語(javaとか)でもいろいろ小手先的に弄られているけれども、それに何の意味があるのかいつも不思議におもいますね
>>164
java にはラベル付き break が存在して、ほとんど goto です https://www.sejuku.net/blog/20100
205デフォルトの名無しさん
2020/02/02(日) 15:15:16.61ID:7b/FZYuN 現行のC/C++にはgoto <label>がある一方、break <n>は無い
もしbreak <n>の追加がgoto <label>の実装より難しかったからやらなかったのだとしたら、
break <n>の飛び先がgoto <label>の飛び先より簡単にワカルから優れているという主張は根拠を失う
break <n>はわかりにくいか、さもなくばgoto <label>と同等なんである
もしbreak <n>の追加がgoto <label>の実装より難しかったからやらなかったのだとしたら、
break <n>の飛び先がgoto <label>の飛び先より簡単にワカルから優れているという主張は根拠を失う
break <n>はわかりにくいか、さもなくばgoto <label>と同等なんである
206デフォルトの名無しさん
2020/02/02(日) 15:16:38.00ID:mzCY/+E0 constがスレッドセーフなのも困った。
207デフォルトの名無しさん
2020/02/02(日) 15:24:46.36ID:jpTipLln >>201
現実ありえないのは重々承知したうえで書くけど
100重ループを脱出するとき数を数えたくないだろうなって思うじゃん
ほかにも3重ループとかで2ndと3rdのループから共通の脱出先ラベルにもできるわけじゃん
文法を拡張する前提ならそこまで想定すべきだと思うね
粗野な即値の数字じゃなくて意味ごとに名前をつけられるようにしてきたのが
プログラミング言語の進化の歴史なのでおれは自然だと思うよ
というかそういう観点からラベル付きbreakというのは他の言語にはあるわけで
で今話してるのはもっと書きやすく読みやすくできないかというトピックでしょ
break Nは使えるだろうけど洗練されてない感じ
現実ありえないのは重々承知したうえで書くけど
100重ループを脱出するとき数を数えたくないだろうなって思うじゃん
ほかにも3重ループとかで2ndと3rdのループから共通の脱出先ラベルにもできるわけじゃん
文法を拡張する前提ならそこまで想定すべきだと思うね
粗野な即値の数字じゃなくて意味ごとに名前をつけられるようにしてきたのが
プログラミング言語の進化の歴史なのでおれは自然だと思うよ
というかそういう観点からラベル付きbreakというのは他の言語にはあるわけで
で今話してるのはもっと書きやすく読みやすくできないかというトピックでしょ
break Nは使えるだろうけど洗練されてない感じ
208デフォルトの名無しさん
2020/02/02(日) 15:27:11.67ID:gkoi3ncl break [n] はラベル名を考えなくて良い利点がある
使えるなら使いたい
ラベル名を考える必要があるならgotoで良い
ループの先頭で名前を付けるのはgotoより見づらいから使わない
使えるなら使いたい
ラベル名を考える必要があるならgotoで良い
ループの先頭で名前を付けるのはgotoより見づらいから使わない
209デフォルトの名無しさん
2020/02/02(日) 16:01:27.30ID:o79zkFFu break n とか言ってる奴は何故か>>150をスルーしてて笑うわ
210デフォルトの名無しさん
2020/02/02(日) 16:07:52.43ID:nz0OxFB3 他の人は「マジックナンバー」だと思わなかったからでは。
211デフォルトの名無しさん
2020/02/02(日) 16:20:03.66ID:gXxB23XL foobarやhogeを超える人気なダミー文字列を考えたほうがよほど建設的だぞ、君たち。
212デフォルトの名無しさん
2020/02/02(日) 16:35:55.51ID:SWo7Ruqh break 5; //C
GOTO 5 : REM BASIC
GOTO 5 : REM BASIC
213デフォルトの名無しさん
2020/02/02(日) 16:37:04.55ID:gkoi3ncl マジックナンバーがイヤなら
break break;
break break;
214デフォルトの名無しさん
2020/02/02(日) 16:50:03.80ID:DTIMfhpJ 関数で置き換える
引数がめんどうならラムダで置き換える
returnが多重breakの代わりになる
引数がめんどうならラムダで置き換える
returnが多重breakの代わりになる
215デフォルトの名無しさん
2020/02/02(日) 16:58:55.02ID:SWo7Ruqh >>214
多重ループを単一関数に書くって前提だね
多重ループを単一関数に書くって前提だね
216デフォルトの名無しさん
2020/02/02(日) 17:03:09.93ID:7b/FZYuN >引数がめんどうならラムダで置き換える ←New!
これは場合による
for (i=0; i<INT_MAX; i++) {
for (j=0; j<INT_MAX; j++) {
(何がしかの処理)
}
}
を
for (i=0; i<INT_MAX; i++) {
for (j=0; j<INT_MAX; j++) {
((何がしかの処理)を行うラムダ式fを定義)
f();
}
}
とするのではご利益が無いが、
((何がしかの処理)を行うラムダ式fを定義)
for (i=0; i<INT_MAX; i++) {
for (j=0; j<INT_MAX; j++) {
f();
}
}
とするのではラムダ式定義時点でループ内の変数を参照できないから場合によっては詰む
結局f()は引数がぞろぞろ並ばねばならない
これは場合による
for (i=0; i<INT_MAX; i++) {
for (j=0; j<INT_MAX; j++) {
(何がしかの処理)
}
}
を
for (i=0; i<INT_MAX; i++) {
for (j=0; j<INT_MAX; j++) {
((何がしかの処理)を行うラムダ式fを定義)
f();
}
}
とするのではご利益が無いが、
((何がしかの処理)を行うラムダ式fを定義)
for (i=0; i<INT_MAX; i++) {
for (j=0; j<INT_MAX; j++) {
f();
}
}
とするのではラムダ式定義時点でループ内の変数を参照できないから場合によっては詰む
結局f()は引数がぞろぞろ並ばねばならない
217デフォルトの名無しさん
2020/02/02(日) 17:05:11.10ID:+9zyTEwm218デフォルトの名無しさん
2020/02/02(日) 17:06:58.49ID:7b/FZYuN219デフォルトの名無しさん
2020/02/02(日) 17:15:36.03ID:SWo7Ruqh ジーオーティーオーというスペルでなければ
制御構造はそのままでいいと言うクソ論法
制御構造はそのままでいいと言うクソ論法
220デフォルトの名無しさん
2020/02/02(日) 17:52:12.55ID:mzCY/+E0 スレとはあまり関係ないんだけど、nodiscard属性を無視するにはどうしたらいいですか?
221デフォルトの名無しさん
2020/02/02(日) 17:59:47.60ID:MNdu0823 変数で受けといてその変数をガン無視すればいいんじゃないの
未使用変数の警告出るだろうけど
未使用変数の警告出るだろうけど
222デフォルトの名無しさん
2020/02/02(日) 18:00:14.37ID:mzCY/+E0 やってみます。
アリガト。
アリガト。
223デフォルトの名無しさん
2020/02/02(日) 18:11:02.03ID:o79zkFFu224デフォルトの名無しさん
2020/02/02(日) 18:13:54.31ID:mzCY/+E0 あと三日くらいしたらお前より出来るようになってるから。
225デフォルトの名無しさん
2020/02/02(日) 18:24:38.31ID:jpTipLln >>220
(void)func();
(void)func();
226デフォルトの名無しさん
2020/02/02(日) 18:28:22.08ID:x1m+isRG >>208
昔のBASICは、行番号を勝手に付けてくれていたのでgotoでもラベル名を考えなくて済んだのでとても便利だった。
昔のBASICは、行番号を勝手に付けてくれていたのでgotoでもラベル名を考えなくて済んだのでとても便利だった。
227デフォルトの名無しさん
2020/02/02(日) 18:30:04.52ID:x1m+isRG >>226
なお、アセンブラでは行番号がなかったのでラベル名を考える必要があったが、
意味のあるラベル名を考え出すのは大変だったので、分かり易い場所以外は、
多くの人が、lab1: lab2: lab3: のような連番を使う傾向があった。
なお、アセンブラでは行番号がなかったのでラベル名を考える必要があったが、
意味のあるラベル名を考え出すのは大変だったので、分かり易い場所以外は、
多くの人が、lab1: lab2: lab3: のような連番を使う傾向があった。
228デフォルトの名無しさん
2020/02/02(日) 18:30:14.15ID:mzCY/+E0230デフォルトの名無しさん
2020/02/02(日) 19:36:27.12ID:7b/FZYuN VB6には行番号は無かった
231デフォルトの名無しさん
2020/02/02(日) 20:26:55.80ID:GV9CDSqK みんなってc++で何を作ってるの?
ゲーム?
ゲーム?
232デフォルトの名無しさん
2020/02/02(日) 21:07:54.17ID:YP+sfqkD 何も作ってないやつがほとんどだろ
233デフォルトの名無しさん
2020/02/02(日) 21:15:29.52ID:GV9CDSqK すまん俺の聞き方が悪かったのかもしれん
最近プログラミングの勉強始めて、各言語の用途とか調べたんだけど、ここでも一応聞いてみたかったの
何を作ってるって言うより、どんな開発に携わってるかっていうのを聞きたかった
最近プログラミングの勉強始めて、各言語の用途とか調べたんだけど、ここでも一応聞いてみたかったの
何を作ってるって言うより、どんな開発に携わってるかっていうのを聞きたかった
234デフォルトの名無しさん
2020/02/02(日) 21:21:43.96ID:DTIMfhpJ テキストエディター
3Dモデラー
メーラー
3Dモデラー
メーラー
235デフォルトの名無しさん
2020/02/02(日) 21:25:09.08ID:vTjBAXNr 競技プログラミング
236デフォルトの名無しさん
2020/02/02(日) 21:39:16.36ID:GV9CDSqK アプリ開発にも使われるのかー
あざした
あざした
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 働いて参ります
- ( ・᷄ὢ・᷅ )あ?
- 地震
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- ブタをぶったたく
