[過去ログ] C言語なら俺に聞け 152 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
544: (ワッチョイ db8f-AthE) 2019/07/16(火)22:16 ID:Qe+dZ6A/0(1/2)調 AAS
* const char s
じゃね?
545: (ワッチョイ db8f-AthE) 2019/07/16(火)22:17 ID:Qe+dZ6A/0(2/2)調 AAS
おれは何を言ってるんだ??
546(1): (アークセー Sx3b-GinL) 2019/07/16(火)22:20 ID:dxLim7GAx(1/2)調 AAS
>>542
>const char *sの順番が納得いかない
>直感的にはchar * const sだろうが!!
前者はポイントされる文字列が const で、後者はポインタ自体が const でしょ
547: (ワッチョイ e301-S8wx) 2019/07/16(火)22:42 ID:uQ5be57j0(6/7)調 AAS
const char* const s
これも直感的じゃないって言うんだろうか
548: (アークセー Sx3b-GinL) 2019/07/16(火)22:43 ID:dxLim7GAx(2/2)調 AAS
546です
すみません、それを踏まえてということか…
549: (ワッチョイ 5a73-q5pO) 2019/07/16(火)22:50 ID:g+WSNcLQ0(1/2)調 AAS
const は後置で書いたほうが整合性が取れる
char const * const s:
しかし、見た目的にかわいいのは前置である
const char * s;
私はかわいいのが好きである
よって前置は使わない
550(1): (ワッチョイ 5a73-q5pO) 2019/07/16(火)22:58 ID:g+WSNcLQ0(2/2)調 AAS
そこで私が提案したいのが「strong」である
strongは修飾したデータをすべてconstにする
つまり
char const * const s;
と
strong char * s;
は等価である
551: (ワッチョイ ba52-QpLE) 2019/07/16(火)23:13 ID:ICazHXPW0(1)調 AAS
>>550
安易な予約語の追加は嫌われるよ
552: (ワッチョイ 4e63-P44A) 2019/07/16(火)23:18 ID:EySzsoWc0(6/6)調 AAS
「strongがやられたようだな…」
「フフフ…奴は四天王の中でも最弱…」
553: (ワッチョイ 5ba0-P44A) 2019/07/16(火)23:19 ID:/Cc9wbE10(3/3)調 AAS
<strong>char* s</strong>
554: (ワッチョイ e301-P44A) 2019/07/16(火)23:22 ID:uQ5be57j0(7/7)調 AAS
stringと間違えそうで嫌だなw
readonlyはc#で使ってるしな
やっぱconstだな
555: (ワッチョイ 7602-24gz) 2019/07/16(火)23:40 ID:awioItM70(1)調 AAS
大文字で CONST にするとか。
556: (スップ Sd5a-sMSa) 2019/07/17(水)04:24 ID:CqcyHUxLd(1)調 AAS
フン
char *const_s
557: (ワッチョイ e368-BPOI) 2019/07/17(水)06:33 ID:Pp4wfZXK0(1/3)調 AAS
>>546
const int a → constなint型のa
const char *s → constなchar *型のs
constなのはchar *つまりポインタ(直感)
char * const s → char *型のconstなs
constなのはsつまり文字列自体(直感)
なんで逆!!
558: (ワッチョイ 73f6-AvHN) 2019/07/17(水)06:46 ID:NB17uhF90(1/2)調 AAS
> const char *s → constなchar *型のs
ギャグだよな?
559: (ワッチョイ 9ada-Bj8P) 2019/07/17(水)06:57 ID:i06pHchL0(1)調 AAS
宣言は右から左に読む
const等の修飾は左にかかる
char const * const s; // sは、const *である、const char型の
右にかかるなら↓のように書けないとおかしいがこれは構文エラーである
const char const *s;
変数名はただの識別子で、ある領域にsという名前を付けただけにすぎない
constやvolatileは型修飾子であり、これらが付くのは型に対してである
〜という領域を、以後sと呼ぶ、である
560(1): (ワッチョイ 73f6-AvHN) 2019/07/17(水)07:14 ID:NB17uhF90(2/2)調 AAS
ちげーよ
宣言は真ん中から左右に読むんだよ
char const *(* const s)[1];
561: 443 (ワッチョイ 9a2c-i8Xk) 2019/07/17(水)09:21 ID:u050lnGw0(1)調 AAS
>>526
引数チェックに関しては、Java のコーディングルールでは、
外部の人用のAPI、つまりpublic な関数には、必要
一方、そのモジュール・クラスの実装者が使う、
内部的なAPI、つまりprivate な関数には、いらない
既にどこかで、エラーチェックしてるから、何回も同じエラーチェックするのは、無駄
562: (ワッチョイ 23b3-15OI) 2019/07/17(水)21:08 ID:E0YvS3zE0(1)調 AAS
const char *sは*sがconst
つまりポインタsの指すアドレスにある値が不変だけどsがどこを指すのかは可変
char *const sはsがconst
つまりポインタsがどこを指すかは不変だけどsの指すアドレスにある値は可変
大体こんな認識で合ってる?
563(4): (ワッチョイ e368-BPOI) 2019/07/17(水)23:04 ID:Pp4wfZXK0(2/3)調 AAS
あってるけど納得いかないって話
1つ目がまず何で*sにかかるんだよ
自然に読んだらconstはchar *にかかるだろ
右から読むとか頭おかしいわ、アラビア語かよ
564(1): ◆QZaw55cn4c (ワッチョイ ba47-iNHA) 2019/07/17(水)23:22 ID:UrUB0t8/0(1/2)調 AAS
>>563
char * s;
に 1 個の const を追加するとき、形式的に追加できる場所は 4 箇所
a) char * s const;
b) char * const s;
c) char const * s;
d) const char * s;
このうち a) はコンパイルできない
b) c) は可能だが、の二つの間で意味は異なる
d) は本来ならエラーであるべきだと私は考えているが、実際には c) と一緒の意味になっている
565(2): (ワッチョイ 2395-q5pO) 2019/07/17(水)23:34 ID:RL7WDafS0(1)調 AAS
C言語使う時はいつ?
早いコードが欲しい時
メモリー消費に無駄のないコードが欲しい時
他ある?
566: ◆QZaw55cn4c (ワッチョイ ba47-iNHA) 2019/07/17(水)23:39 ID:UrUB0t8/0(2/2)調 AAS
>>565
他の言語はほとんどわからず(かじってはみたものの使えるまでにはMPがあがらず)、C/C++ でしかまともに書けないし発想できないからです…
567: (ワッチョイ db8f-AthE) 2019/07/17(水)23:42 ID:FDkzfNlT0(1)調 AAS
>>563
実はアラビア語って可能性はないのか?
568(1): (ワッチョイ e368-BPOI) 2019/07/17(水)23:49 ID:Pp4wfZXK0(3/3)調 AAS
そもそもconst char *sの宣言の時の切れ目がconst / char / *s なのも何だかなぁ
const / char * / s でconstはchar *にかかれよjk
現実に間違ってるのは渋々受け入れてるけど開発者が許せない
569: (アークセー Sxa3-F8Mm) 2019/07/18(木)00:00 ID:OLFUgkogx(1)調 AAS
>>564
自分は b or(and) d かなー
570: (ワッチョイ 3f52-5sVo) 2019/07/18(木)00:33 ID:Nr80YdQr0(1/2)調 AAS
>>565
他に思い付くところとしては、
組み込み環境などで、C言語以外の選択肢がない、または他の言語で実行できる環境を整えるよりCを使った方が楽な場合。
外部のライブラリのインタフェースがC言語で、呼び出す部分をCで作る方が楽な場合。
バイナリファイルの操作などポインタ操作を使って実装しやすい場合。
571: (ワッチョイ 3f52-5sVo) 2019/07/18(木)00:48 ID:Nr80YdQr0(2/2)調 AAS
>>568
単純なポインタのことしか考えないから、左から右にこだわってんだろ。
>>560も指摘している通り、変数宣言の構文は内から外だぞ。配列や関数ポインタも交えて、それらを多段階の組み合わせにしても一意に解釈できるのを理解すれば、合理的な物だとわかると思うよ。
>>563
1つ目は、constがかかってるのはcharだぞ。内側から解釈するとsは*が付いているからポインタであり、それが指す型がconstなcharだ。
572(2): (ワッチョイ 4fd2-ulaa) 2019/07/18(木)05:33 ID:yO5P6Jqp0(1)調 AAS
char *s
の意味は*sはchar型だよって意味で
sはchar *型だよって意味じゃないよ
573: (スップ Sddf-1UnR) 2019/07/18(木)05:43 ID:xY9KzRxOd(1/2)調 AAS
>>572
こう理解できてるとわかりやすいね。つまり
const char *s
は
*s(sの指す先)はchar型でさらにconstだよ
となる。
574(1): (ワッチョイ 0ff6-0ngu) 2019/07/18(木)06:48 ID:2qyz/4gG0(1)調 AAS
>>572
その宣言から以後、
sという式がchar*型
*sという式がchar型
2つの意味を同時に表現してるんだよ
575: (ドコグロ MM5f-FX/1) 2019/07/18(木)07:54 ID:kb0ZHGx0M(1)調 AAS
*と*const があると憶えるべき。
576: (アウアウウー Sad3-9T1T) 2019/07/18(木)09:56 ID:q9HPUerJa(1)調 AAS
>>563
ポインタを表す * が型にくっついてるんじゃなくて変数にくっついてるからでは?
分かりにくいなら typedef でポインタの型を作ってそれを使えばいいんじゃないな。
右から読む事に関しては英語を日本語に翻訳する時に順序を入れ換えた方が自然な感じになる事があるのでなんとも言えんな。漢文のレ点みたいなものもあるしな。
日本語とは逆順の方が自然な表現になる言語はある。そして歴史的な事情で混在してしまっているのもある(アメリカでの年月日が月日年の順だとか)。
生まれながらにしてその言語使ってればその人にとってはそれが一番自然な表現だからな。
577: (スップ Sddf-1UnR) 2019/07/18(木)10:04 ID:xY9KzRxOd(2/2)調 AAS
>>574
結果はいっしょでも解釈の仕方は複数ある感じだね。
自分にとって理解しやすいので
char *s
↓
sの指す先はchar型、つまりsはポインタ
って言う風に捉えてる。
578(1): (ワッチョイ 3f28-t2IU) 2019/07/18(木)21:25 ID:PbeogWAD0(1)調 AAS
この話は何時も混乱するんだけど
結局の所は
自分の言葉で理解するまでやる
これをやらないと混乱してしまう
なぜそうなってしまったのか?
という視点で解釈しようとしないと
なかなかにc言語って難しい
その辺は例のc言語ポインタにのみついて書かれた本
あれを読んで
後は何とか自分の言葉で理解して解釈するしか方法が無い
それとこんなになってしまっている原因に
キーボード上の記号が少ない
というのもある
basic何かでは記号類は四則演算類だけ使って
なるだけ英単語?を使って記述するようになっている
だから使う場所によって記号の意味が違う
なんていうのが起こりにくくなってる
ある意味c言語が普及してしまったのはプログラミング世界にとっては不幸なのかもしれない
579(1): (ワッチョイ 7f63-jGuh) 2019/07/18(木)21:30 ID:1zgaXsge0(1/3)調 AAS
C言語って初心者向けに作られたものではないと思う
580(2): ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/18(木)21:32 ID:/oDno/7H0(1/3)調 AAS
>>578
私も最初に C をやったときには、ここまで流行るとは思わなかったんです、むしろ pascal の方が筋がいいと思っていたのですが、どうしてこうなってしまったのでしょうか?
581: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/18(木)21:34 ID:/oDno/7H0(2/3)調 AAS
>>579
当時は初心者用とかは特に無くて、BASIC でもある程度できる人はすぐに peek, poke を連発するようになったものです、最近の人は甘えていると思います
582: (ワッチョイ 0f01-7lXP) 2019/07/18(木)21:41 ID:AzHVv8Pq0(1)調 AAS
>>580
UNIXがCで云々というのもあるけど、良い意味で高級アセンブラとして使い勝手が良かったからじゃないかな?
583(1): (ワッチョイ 0fab-Pjse) 2019/07/18(木)22:00 ID:8m1lI2X40(1)調 AAS
厳格で融通がきかないと嫌われる
pascalはそんな感じ
584: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/18(木)22:15 ID:/oDno/7H0(3/3)調 AAS
>>583
delphi は結構流行ったと思ったんですけれど…
585(2): (ワッチョイ 3fa5-xTH7) 2019/07/18(木)22:18 ID:0kCblb2b0(1)調 AAS
pascal失速最大の原因は:=だろう
これを採用している言語はもう一つも無い
プログラミング業界最大かつ唯一にして不可侵の大例外を抱えてるのがpascalだ
586: (ワッチョイ 7f63-jGuh) 2019/07/18(木)22:30 ID:1zgaXsge0(2/3)調 AAS
pascalで開発したアプリっていうと
JaneStyleが有名かな?
587: (ワッチョイ 7f63-jGuh) 2019/07/18(木)22:32 ID:1zgaXsge0(3/3)調 AAS
厳格で融通がきかないのは、教育用として最適だと思う
588(1): (ワッチョイ 0f01-sqrU) 2019/07/18(木)22:35 ID:ugDCzjFC0(1)調 AAS
pascalでUNIX張りのOS書いていれば流行ったかもね
589(1): (ワッチョイ ff02-lraP) 2019/07/19(金)00:19 ID:7Hdy7m6i0(1/2)調 AAS
>>585
Modula-2は:=だったような気がする。
590: (ワッチョイ ff02-lraP) 2019/07/19(金)00:22 ID:7Hdy7m6i0(2/2)調 AAS
>>588
Delphiみたいに拡張されてれば可能だとは思うがコードが大きくなりそうなので昔のPCでは苦しいかもね。
ただし、Androidみたいに元のOSの上に乗っけて動くOSなら行けるかも。
591: (ワッチョイ 3fa5-xTH7) 2019/07/19(金)00:25 ID:Mih8lrFJ0(1)調 AAS
もう一つが奥の深さでC言語ではポインタが奥の深い箇所にあたる
この難易度が絶妙で難しい難しいと言われていて初学者には適度に難しいので挫折者が増える、
挫折者の総量が言語の価値を決定する
教育用に作られた言語は難しい箇所とか理屈に合わない箇所とか奥の深い箇所とかが無いのでオカルトとしての魅力が無い
学習曲線がいびつじゃないと流行しない
592: (ワッチョイ 3f79-k+pP) 2019/07/19(金)00:30 ID:QK1dwfXD0(1/3)調 AAS
ポインタはただの入り口だろ
Cは入り口で躓く奴が多いだけで奥は寧ろ浅い
593: (ワッチョイ 7f63-jGuh) 2019/07/19(金)00:36 ID:nbu0jJrl0(1/3)調 AAS
ポインタ使わないでもC言語ってプログラム書けるんだよな
無理して難しいことをしなくても良いと思う
ちゃんと動くかどうかの方が重要
594: (ワッチョイ 3f79-k+pP) 2019/07/19(金)00:38 ID:QK1dwfXD0(2/3)調 AAS
ポインタを使わないならCを使わない方がいい
595: (ワッチョイ 8f8f-1UnR) 2019/07/19(金)01:10 ID:0vO2r76S0(1)調 AAS
超無理矢理ならポインタ使わずになんでもできるんかな?
いずれにせよポインタ理解してないとライブラリ使えなくて詰むでしょ。たぶん突然落ちたりメモリリークだらけのプログラムができあがるはず。
596: (ワッチョイ 7f63-jGuh) 2019/07/19(金)01:25 ID:nbu0jJrl0(2/3)調 AAS
グローバル領域に予め必要な変数や配列確保しておけば
メモリーリークが発生する余地はないw
597: (ワッチョイ 3f79-k+pP) 2019/07/19(金)01:28 ID:QK1dwfXD0(3/3)調 AAS
ネタで言ってるのか本気で言ってるのか判断が付かない
598: (ワッチョイ 0f01-/VB7) 2019/07/19(金)01:46 ID:ZOnA3nWq0(1/2)調 AAS
ポインタ難しいって言われてるけどそんなに難しいか?
メモリイメージできれば理解できると思うけどな
599(1): (ワッチョイ 3fc5-k+pP) 2019/07/19(金)02:19 ID:1jezjf9K0(1/2)調 AAS
俺はポインタは難しいことがわかってたから、一度にすべて理解しようとしなかった
数年使って徐々に理解した
それが正解だった
600: (ワッチョイ 0f95-k+pP) 2019/07/19(金)02:49 ID:ApXEphk20(1)調 AAS
初期化してないポインタにアクセスするとどうなっちゃうの
とか危険そうなのは試してないからわからないが
ハードウェアのイメージがあれば難しさはあまりない
(命名規則で Xxx_p と書いておけば
601: (ワッチョイ 0ff6-0ngu) 2019/07/19(金)06:09 ID:8762T9lH0(1/3)調 AAS
> (命名規則で Xxx_p と書いておけば
システムハンガリアンは大大大大大嫌い
602: (ドコグロ MM5f-TsWF) 2019/07/19(金)07:17 ID:gH0zRzIgM(1)調 AAS
>>585
ada, APLも知らない情弱知ったかは黙っとけ
>>589
まあ作者は同じだから後継って感じだし
603(2): (ワッチョイ 7f7c-jGuh) 2019/07/19(金)09:10 ID:EJb/7aTM0(1/2)調 AAS
>>599
そういう人もいるのか
おれはアセンブラもやってたので秒で理解した
604: (アウアウウー Sad3-9T1T) 2019/07/19(金)09:29 ID:uab/wKdga(1/2)調 AAS
>>580
マイコン用の小さいコードも作れるから。
昔のマイコンやPCはメモリが物凄く少ないのでその辺は重要。
少なくとも毎回でかいランタイムライブラリがくっついてしまうようではダメだ。
それと元々 UNIX の記述用に使ってた言語なので Linux 等の互換OSでも使われていて、そういうのが徐々に広まっていったので、それを通してCが流行った面もあると思う。
605: (アウアウウー Sad3-9T1T) 2019/07/19(金)09:39 ID:uab/wKdga(2/2)調 AAS
>>603
アセンブラできるとポインタについては理解が楽だよね。
アセンブラの方では普通に使う考え方だし。(というかないとプログラム作れないぐらい重要)。
606(1): (ワッチョイ 3fc5-k+pP) 2019/07/19(金)11:29 ID:1jezjf9K0(2/2)調 AAS
>>603
はじめてのプログラミング言語がCだったからな
けっこう苦労したよ、先輩
607: (ワッチョイ 7f63-jGuh) 2019/07/19(金)11:43 ID:nbu0jJrl0(3/3)調 AAS
プログラムはZ80からなので、当たり前のようにアセンブラから学習した
CPUの仕組みを学ぶのにちょうど良かった気がする
608(1): (ワッチョイ 0ff6-0ngu) 2019/07/19(金)12:47 ID:8762T9lH0(2/3)調 AAS
Z80だとパイプラインとかあんまり憶えないよな
でRISCブームのとき苦労させられたと
609: (アークセー Sxa3-7lXP) 2019/07/19(金)13:03 ID:hLCIQJ7mx(1)調 AAS
まぁZ80全盛期にパイプラインしてたCPUなんて限られてたしな。
そういう汎用コンピータはほぼ高級言語使われてたし。
610: (ワッチョイ 0ff6-0ngu) 2019/07/19(金)13:07 ID:8762T9lH0(3/3)調 AAS
6502とか
611: (ワッチョイ 7f7c-jGuh) 2019/07/19(金)13:28 ID:EJb/7aTM0(2/2)調 AAS
>>606
C++とかじゃ未だにオーバーライドとオーバーロードを間違えるので
レベル的にはおまえとドッコイだよ、後輩
612: (ワッチョイ 0f01-/VB7) 2019/07/19(金)14:13 ID:ZOnA3nWq0(2/2)調 AAS
ムカデ長老を見習え
613(3): (ワッチョイ 0f68-WZlQ) 2019/07/20(土)21:04 ID:lWqONft90(1)調 AAS
泣いてる顔文字→( ; ; )がforの無限ループにしか見えないのですが、職業病でしょうか?
614(2): (ワッチョイ 3f77-0ngu) 2019/07/20(土)21:31 ID:TRa6Slo50(1)調 AAS
8086のアセンブラはセグメントで挫折する・・・と言われてたけど
Z80やってたらすんなり理解できたな。
615(1): (ワッチョイ 8fa0-jGuh) 2019/07/21(日)01:27 ID:3tY7pLz50(1)調 AAS
>>613
煽りとかで()とか書かれてると関数に見えるときある
例: 職業病()とか言われましても
616: (ワッチョイ 8f8f-1UnR) 2019/07/21(日)04:14 ID:Nmc6oncn0(1)調 AAS
>>615
草、見えたことないわw
617: (ワッチョイ 3fad-lraP) 2019/07/21(日)06:51 ID:F3an1Rtm0(1)調 AAS
>>613
はい。
>>614
セグメントすごくわかりやすいと思うけどな。まともに説明出来る人と巡り会えなかったのだろうか。
618: (ワッチョイ 3f01-TsWF) 2019/07/21(日)08:20 ID:/atv33Bt0(1/5)調 AAS
>>608
わかりやすいけど面倒だよね
619(1): (ワッチョイ 4f61-aZqd) 2019/07/21(日)15:59 ID:FmQzr+LX0(1/3)調 AAS
>>613
forで無限ループつかうの?
おれはwhileかなw
620(1): (ワッチョイ cfc3-oOeU) 2019/07/21(日)16:10 ID:g8U8cyIO0(1/5)調 AAS
forの方が短くてすむじゃないか
621(1): (ワッチョイ 0f01-7lXP) 2019/07/21(日)16:20 ID:PhbbaTTy0(1)調 AAS
>>614
Z80にセグメントの概念なんてあったけっけ?
メモリバンク切り替えは機種によってはあったけど、あれはZ80の機能ではないし。
622(1): (ワッチョイ 0f95-k+pP) 2019/07/21(日)16:27 ID:m/GaQUZU0(1/3)調 AAS
空白のcontinue節みたいなのに入る必要がないから
ちょっとwhileのほうが早いイメージ
623: (ワッチョイ cfc3-oOeU) 2019/07/21(日)16:43 ID:g8U8cyIO0(2/5)調 AAS
>>622
インタープリターじゃないんだからさ
624: (ワッチョイ 3f01-TsWF) 2019/07/21(日)16:52 ID:/atv33Bt0(2/5)調 AAS
>>619-620
俺はfor(;;)だな
while(TRUE)は警告表示されることが多かったから
625(1): (ワッチョイ 0f48-jGuh) 2019/07/21(日)18:08 ID:Q0wcPMRB0(1/4)調 AAS
for (;;) とwhile (1) がどっちがぱっと見分かりやすいか戦争勃発しますか?
あとfor派は;;周りにスペースを入れるか入れないかでさらに細かく派閥が分かれていると聞きました!
626: (ワッチョイ 4f61-aZqd) 2019/07/21(日)18:19 ID:FmQzr+LX0(2/3)調 AAS
>>625
まさに永久ループ戦争!
627: (ワッチョイ ff2f-Im00) 2019/07/21(日)18:30 ID:+S54SSox0(1/2)調 AAS
字下げのいらないgotoも参戦
628: (ワッチョイ 0f48-jGuh) 2019/07/21(日)18:32 ID:Q0wcPMRB0(2/4)調 AAS
あ、do {} while(1);派も出てくるとおもうので皆さん頑張ってください応援してます
629(1): (ワッチョイ cfc3-oOeU) 2019/07/21(日)18:38 ID:g8U8cyIO0(3/5)調 AAS
do while(0)は便利
630: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/21(日)18:39 ID:vddupZNY0(1)調 AAS
>>629
それは #define で使うときだけでしょう?
631: (ワッチョイ cfc3-oOeU) 2019/07/21(日)18:44 ID:g8U8cyIO0(4/5)調 AAS
いや、エラー判定とかでもよく使うだろ?
632: (アークセー Sxa3-F8Mm) 2019/07/21(日)18:48 ID:I0JRxlnTx(1)調 AAS
for (;;) は forever と読むとか
633(2): (ワッチョイ 3f01-TsWF) 2019/07/21(日)18:50 ID:/atv33Bt0(3/5)調 AAS
バッドノウハウに近いが
do {
if(...) break;
…
if(…) break;
…
} while(0);
みたいなのは昔書いてたわ
634(1): (ワッチョイ 0f48-jGuh) 2019/07/21(日)18:52 ID:Q0wcPMRB0(3/4)調 AAS
do {} while (0); の意味と目的【do while false イディオムの利点】 | MaryCore
https://marycore.jp/coding/do-while-false-idiom/
635: (ワッチョイ 4f61-aZqd) 2019/07/21(日)18:58 ID:FmQzr+LX0(3/3)調 AAS
flag=true;
while(flag)
{
flag=(....);
}
636: (ワッチョイ 3f01-TsWF) 2019/07/21(日)19:09 ID:/atv33Bt0(4/5)調 AAS
>>634
do {
if (that(value)) break;
if (value == -1) break;
if (value == 0) break;
puts("有効な値です");
} while (0);
みたいなのは
do {
if (
that(value)
|| value == -1
|| value == 0
) break;
puts("有効な値です");
} while (0);
って書けばいいだけ
do {
if (that(value)) break;
value = f(…);
if (value == -1) break;
value = g(…);
if (value == 0) break;
puts("有効な値です");
} while (0);
みたいに間に処理をはさまる場合が難しい
637: (ワッチョイ 0f48-jGuh) 2019/07/21(日)19:18 ID:Q0wcPMRB0(4/4)調 AAS
このスレって直接ここに複数行のソース書き始める人多いよね
638: (ワッチョイ 0f95-k+pP) 2019/07/21(日)19:37 ID:m/GaQUZU0(2/3)調 AAS
>>633
小さなスコープを作るため?
639: (ワッチョイ cfc3-oOeU) 2019/07/21(日)19:39 ID:g8U8cyIO0(5/5)調 AAS
breakが使えるスコープね
640: (ワッチョイ 0f68-WZlQ) 2019/07/21(日)20:14 ID:/SITzbMm0(1)調 AAS
#define fe for( ; ; )
が最強
641: (ワッチョイ ff2f-Im00) 2019/07/21(日)20:35 ID:+S54SSox0(2/2)調 AAS
>633
おかしな事してるのが一目で、continue が外に漏れるこれ オススメ
switch(0)default:{
642(2): (スッップ Sd5f-1UnR) 2019/07/21(日)20:45 ID:R+Rb+3j1d(1/2)調 AAS
gotoが便利すぎて禁止されがちなのが悪い。ちゃんと使えばコードが見やすくなることこの上なしなのに。
643(1): (ワッチョイ 3f01-TsWF) 2019/07/21(日)21:09 ID:/atv33Bt0(5/5)調 AAS
>>642
そう言うこと
なので最近は素直にgotoで書くことが多い
一部の言語の様にブロックに名前付けて
break 名前;
でそのブロックを抜けられるようにしてくれれば良いのにと常々思う
上下前次1-新書関写板覧索設栞歴
あと 359 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.026s