C言語なら俺に聞け 146

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 839f-AnMQ)2018/04/30(月) 04:47:37.50ID:XX4FB8lc0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
-
※前スレ
C言語なら俺に聞け 145
http://mevius.5ch.net/test/read.cgi/tech/1519046038/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

0952デフォルトの名無しさん (ブーイモ MM27-vObg)2018/08/15(水) 17:58:30.01ID:/kIK810yM
自己啓発の勉強ならC89で困ることとかなんかあるんだろうか?

0953デフォルトの名無しさん (ワッチョイ 0b93-6ZXu)2018/08/15(水) 17:59:04.25ID:2ovpzQjs0
//コメントと、どこでも変数宣言、がダメってのは辛いのよね。
エラーを直すのは簡単だけど、いかにもバカバカしい作業で。

0954デフォルトの名無しさん (ワッチョイ 63e7-AujL)2018/08/15(水) 18:00:49.89ID:PyNbth/v0
他人に教えるなら標準は尊重しよう

0955デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 19:26:07.57ID:kg5weZ+NM
VSでC++環境使ってC文法だけで組めばよくね?
それ以前に環境なんてどれでもいい、とは思うが。
JavaでEclipseに慣れてるのならそれもありだと思うよ。
環境で躓くこと自体が無駄だよ。

そもそもJava分かっててCの練習なら、ポインタと変数の寿命管理だけだろ。
GUIでなければ、寿命管理は全部入れ子の構造化プログラミング徹底で済んでしまうし、今時CでGUIもない。
結果的にポインタだけなのだから、環境なんて何でもいいと思うが。
その上で、現場で古い文法を使う必要があるのなら、その時に慣れればいいだけで。
環境なんて全くどれでもいいだろ、これなら。

emacs毛嫌いしている奴がいるのもよく分からんが。
Ctrl+Fとか覚えたくなければ、カーソルキー使えばいいだけだろ。
emacs使いでも、よほどコアな奴でない限り、EmacsLispなんて書いてないぞ。俺も書けんし。

0956デフォルトの名無しさん (ワッチョイ 1b9f-x/tb)2018/08/15(水) 19:29:59.75ID:BN2igdfy0
viのキーバインドになってないと体が覚えるまで面倒

0957デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 19:42:07.19ID:kg5weZ+NM
キーバインド自体は対応させるELが有ってもおかしく無いと思うけど。
(emacs教団の入会基準があのキーバインドに慣れることでも無かろう)
むしろ編集モード/閲覧モードを持つviの方がエディタとしては異端だ。
他の通常エディタに慣れたらviは無理だと思うが。

とはいえ、どっちも使えるって奴も聞かないので、
vi派なら今更emacsに慣れる必要は無いと思うが。

同様に、JavaでEclipseに慣れてるのなら、VSに慣れる必要もないし、そのままやった方がいいと思うよ。
何も知らなくて環境の立ち上げすら面倒なら、
VSならインストールさえすればクリックでビルド&デバッグ実行まで出来るから楽ってだけで。

0958デフォルトの名無しさん (スップ Sdea-+oCX)2018/08/15(水) 20:00:10.97ID:PVw+eqmQd
いろいろ使いたければC++を使えば良いんだよ
new delete 例外 stl を使わなくてもCより便利だろ

C++じゃなくてわざわざCを覚えたいって言うからには
何か理由があるんだろう

0959デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 20:08:35.17ID:kg5weZ+NM
ちなみに、CとC++を明確に区別してるのって、C使いとC++使いだけだろ。
他はだいたいC/C++扱いだし、926もそうだと思うが。

0960デフォルトの名無しさん (アウアウウー Sa2f-02HX)2018/08/15(水) 20:21:36.71ID:53ohHsaIa
まあでかいプログラムはC++で書いてれば良かったと思うようになるよ。
でもC++で書かれたクソコードというのはCのそれの比ではないので、品質のコントロールは問題になる。

0961デフォルトの名無しさん (ワッチョイ 9ff2-2km2)2018/08/15(水) 20:22:57.45ID:/SQznhgr0
C99はC++の拡張を取り入れるんならC++98と互換性が取れるところで一旦〆れば
よかったものを、なんで要らん独自性を出したかねぇ。

0962デフォルトの名無しさん (スップ Sdea-+oCX)2018/08/15(水) 20:24:28.79ID:PVw+eqmQd
勉強段階なら一緒に覚えれば良いよ
自然といろんな流儀を覚える

0963デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 20:27:16.78ID:kg5weZ+NM
>>960
> でもC++で書かれたクソコードというのはCのそれの比ではない
うむ、それは言えてる。
文法が簡易すぎてC++的意味不明な回りくどい糞コードを書けないからなのか、
それともこの簡易文法だけで戦っていける奴らは本質的に鍛えられるからなのか。

0964デフォルトの名無しさん (ワッチョイ 0b93-6ZXu)2018/08/15(水) 20:28:43.25ID:2ovpzQjs0
わざわざ「C言語なら俺に聞け」スレッドで質問してるからには
C++ではないCに限定してるんじゃないか、と判断するのも合理的ではあるわね。
CとC++の両方を扱う初心者向けスレッドも別に存在するし。

もちろん >>926 の意図は投稿者自身のものだけど。

0965デフォルトの名無しさん (スップ Sdea-+oCX)2018/08/15(水) 20:28:52.37ID:PVw+eqmQd
C++の糞コードと言えばこれ

#define private public

0966デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 20:28:53.66ID:kg5weZ+NM
>>961
それってC側からC++と分かれたってこと?(俺は経緯はよく知らない)
てっきりC++が独自路線突き進んだと思っていたが。

0967デフォルトの名無しさん (スップ Sdea-+oCX)2018/08/15(水) 20:30:15.51ID:PVw+eqmQd
もう別の言語だよ
もちろん共通部分だけでも組めるけど

0968デフォルトの名無しさん (スップ Sdea-+oCX)2018/08/15(水) 20:38:11.04ID:PVw+eqmQd
そういえば
コメントを // から /* */ にわざわざ変える人がいる
今まで何人か見た

そんな暇があったらさっさとコードを組め

0969デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 20:39:14.27ID:kg5weZ+NM
>>965
それ、単純に通るか?

なおVC++/CLIではそこで手こずったことがある。
当初ほぼprivateで作っていたクラスを継承する必要が出てきて、
protectedとpublic等に変更したらコンパイラにさんざん文句言われて手こずった。
あれでC++の糞さを再認識した。本質的でないところで凄く引っかかる。
(VC++/CLIは意図的に文法を厳しくしているからというのもあるが)

0970デフォルトの名無しさん (スップ Sdea-+oCX)2018/08/15(水) 20:44:46.95ID:PVw+eqmQd
単純に通るか通らないかは環境や作りに依存する
わざわざ糞コードを披露するところが律儀だね

0971デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 20:53:59.37ID:kg5weZ+NM
あー、俺のコードが糞だったからってか?
しかし、当初継承無しで単独で使う予定だったクラスに対し、仕様変更で機能追加されたんだから致し方ないと思うが。

ただ、個人的にはpublic/private自体が不要、とは思っている。
JavaScriptはpublicしかなくて、当初「これでいいのか?」と思ったが、やってみたら全く問題ない。
外から使うときに中身なんて気にしたくないから、そもそもprivateなんて触りに行かない。
逆に、外から触りたい物をprivateにすることも間違っているし。
あれはいちいち書かなくとも自然と分かれ、それで全く問題ない。
(文法的にチェックするだけの意味しかない。まあそれを言えば型システム自体もそれに近いが)

0972デフォルトの名無しさん (スップ Sdea-+oCX)2018/08/15(水) 21:00:35.67ID:PVw+eqmQd
じゃあclassを使わないで
全てstructで書けば良いよ
public protected privateは一切不要だから

0973デフォルトの名無しさん (ワッチョイ 8a73-/icg)2018/08/15(水) 21:06:02.60ID:YVF6Ac/t0
VSCodeのVimプラグイン使いづらいんだよな
SublimeTextのVimプラグインみたいに両方のエディタのいいとこ取りみたいなキーバインディングだったらいいのに

0974デフォルトの名無しさん (ワッチョイ 8a73-/icg)2018/08/15(水) 21:08:10.50ID:YVF6Ac/t0
リロードしてなかったら既にエディタの話題が終わってて浦島みたいな気分だ
ハゲが

はーげん脱

0976デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 22:46:38.48ID:UO318XzAM
>>972
確かに俺はそれでいいが、
それだと「出来る限りprivateにすべき」教の信者から迫害を受けるのがウザイ。
これはC++よりもJavaの方が酷いように思うが。

この辺の文法的宗教戦争がCにまるでないのはメリットかも、とは思うよ。
private/publicに関してはデメリットの方が多い気がする。
なお、型もだ。動的型ならC++のテンプレートの大半は書かなくて済む。
無駄に手間を増やしている。動的型の方が書くのは快適だ。
あとはtypoを完全に検出れば、といったところか。
とはいえ、速度を追求するC/C++の世界には馴染まないが。

0977デフォルトの名無しさん (ワッチョイ 1b9f-x/tb)2018/08/15(水) 23:04:52.90ID:BN2igdfy0
Kotlinもよろしく

0978デフォルトの名無しさん (アウアウウー Sa2f-02HX)2018/08/15(水) 23:05:44.66ID:B3Li9vMqa
まあ実装とインターフェースを区別する心掛けが大切なのであって、privateにして満足したらあかんとは思うよ。

0979デフォルトの名無しさん (ブーイモ MM27-oNxq)2018/08/15(水) 23:54:13.35ID:1IcV1KLeM
>>978
というよりJavaは「粗結合教」「イテレータ教」かな?
見せなくて済むなら見せるなでインタフェースを無理に細くしているのと、
抽象化する必要がない場合もとりあえずイテレータにしてるだろ。
C++もナマポ撲滅の為に無駄にイテレータを導入しているから、この点は似ているが。

Cはここら辺の宗教戦争がない代わりに、どうしても抽象レベルが上がりにくく、
低レベルコードをひたすら書く羽目になるのが欠点か。

0980デフォルトの名無しさん (ワッチョイ db9e-JHtc)2018/08/16(木) 01:31:46.14ID:IiF9TGTT0
どの言語でも、基本は疎結合。
スパゲッティ・泥団子などの密結合は、皆大嫌い!

こっちをいじれば、あっちが変わり、
あっちをいじれば、こっちが変わりw

0981デフォルトの名無しさん (ワッチョイ 0f81-ipLS)2018/08/16(木) 01:50:41.92ID:HU9VHWiC0
クラスはないがモジュール分割くらいは普通にするだろう

0982デフォルトの名無しさん (スップ Sdbf-5dga)2018/08/16(木) 03:27:52.80ID:zyXyJDDmd
>>973
激しく同意

0983デフォルトの名無しさん (ワッチョイ 0f01-ipLS)2018/08/16(木) 07:14:50.63ID:yO9+GMaw0
イテレータがナマポ撲滅のため??

0984デフォルトの名無しさん (アウアウカー Sa0f-8Gnp)2018/08/16(木) 07:39:41.31ID:IWf/QMdza
ここの人たちはリーナスさんのC++批判はどう思ってる?

0985デフォルトの名無しさん (ワッチョイ 9fb3-GI1+)2018/08/16(木) 07:39:43.44ID:t6OwQxX10
相手するなよ…

0986デフォルトの名無しさん (ワッチョイ 0f01-ipLS)2018/08/16(木) 09:33:11.42ID:yO9+GMaw0
俺もC++には気に入らんところがいくつかあって
リーナスの意見とは一致するところが多い

まず筆頭のクソが例外
次いでnewのコレジャナイ感
classとstructのしょーもなすぎる違い

0987デフォルトの名無しさん (スップ Sdbf-V6hB)2018/08/16(木) 13:12:37.52ID:KNhd5GXjd
>>986
C♯さんディスってるんですか?

0988デフォルトの名無しさん (ワッチョイ ef9e-ipLS)2018/08/16(木) 17:25:51.84ID:w2NRgS+k0
goにしよう

0989デフォルトの名無しさん (JP 0H0f-Iyvk)2018/08/16(木) 17:56:37.44ID:sGlIzl1XH
goto

0990デフォルトの名無しさん (ワッチョイ 9f73-55FN)2018/08/16(木) 18:29:44.72ID:GnkF98h40
gotogo2

次スレ

0992デフォルトの名無しさん (ブーイモ MMcf-c3w5)2018/08/16(木) 22:32:33.50ID:+7r3fHyOM
>>984
俺はかなり賛同。言いたいことは分かる。
ただ、Cはクラスとラムダを導入すべき、それからリテラルをもっと充実させて、複合代入も欲しい。
これらがあれば、ずいぶん楽に書けるようになるはず。

>>983
イテレータの必然性なんてほぼ無いだろ。
様々なコンテナに対応する必要があれば、列挙を抽象化する必要があるが、まずこれがほぼ無い。
次に、インタフェースを揃えたいだけなら、酷い話「forで回せる」でも揃ってしまう。
そしてクラス内のコンテナを外部から直接イテレートする必要もほぼ無い。(publicにイテレータを見せる必要がない)
イテレータが必要なのって、汎用コンテナを作るときくらいだろ。
イテレータは抽象化の分かりやすい例だから取り上げられているだけで、実用性は皆無だと思うぜ。
それよりforEachとかの方が100倍使える。
Matz「俺はxxx[i]なんていちいち書きたくないんだよ」の方が分かる。

抽象化もコストがかかるから、必要ない抽象化はやるべきではない。
同様に、疎結合化もコストがかかるから、必要ない疎結合化はやるべきではない。
Cの場合は一応、ファイル内は密結合、ファイル間は疎結合というコンセプトだろ。
(実際それが適用されているかはともかく)
まあこれで合ってると思うぜ。
同様にクラス言語もクラス内は密結合、クラス間は疎結合のはずだが、
Javaの場合はクラス内も疎結合にしようとして細切れにするのが基本だろ。
そういう文化もありだとは思うが。
(FizBuzzのJava実装でイテレータ導入して悪ノリしてたのがあったろ。あれ)

疎結合の方がいいのは事実なのだけど、結果的にコード量が増える。
それで読む手間が増えるようなら意味無いだろ。
自分が読んで一番楽なところでバランスすればいいのだけど、それは俺はC程度かと思う。
ただこれは俺がC出身だからであって、Java出身ならあの細切れ状態が合うのかもしれないが。
(Javaは、テンプレートがない分、多態の選択肢が狭くて、結果的にあの文化なのだとは思う)

0993 ◆QZaw55cn4c (ワッチョイ 1f60-hE18)2018/08/16(木) 22:41:01.15ID:G1RQbz/X0
>>992
>(FizBuzzのJava実装でイテレータ導入して悪ノリしてたのがあったろ。あれ)
これ、見てみたいです…

0994デフォルトの名無しさん (ワッチョイ 0f9e-5cEj)2018/08/16(木) 23:37:52.43ID:fOCSKLtw0

0995デフォルトの名無しさん (スップ Sdbf-V6hB)2018/08/17(金) 02:02:24.00ID:itWjjCCsd
>>994
乙なんだな

0996デフォルトの名無しさん (ワッチョイ 7b23-UvnI)2018/08/17(金) 04:54:29.33ID:xjFqJl5K0
>>994
乙野郎!

0997デフォルトの名無しさん (ワッチョイ 0f01-ipLS)2018/08/17(金) 07:30:57.69ID:TtX4VAeH0
>>992
ちょっと何言ってるかわからん
983はナマポと何の関係があるのかと聞いているんだが??

0998デフォルトの名無しさん (ワッチョイ 9f73-55FN)2018/08/17(金) 08:18:10.48ID:VdqNpuZ90
うめ

0999デフォルトの名無しさん (ワッチョイ 9f73-55FN)2018/08/17(金) 08:18:29.95ID:VdqNpuZ90
うめ

1000デフォルトの名無しさん (ワッチョイ 9f73-55FN)2018/08/17(金) 08:18:59.69ID:VdqNpuZ90
1000

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 109日 3時間 31分 22秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。