C言語なら俺に聞け 141 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/07/17(月) 21:06:47.63ID:J4JGo3XO
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/


http://mevius.2ch.net/test/read.cgi/tech/1494508803/
http://www.geocities.jp/c_cpp_cs/about_c/
2017/07/29(土) 00:07:34.47ID:VkCqDRe3
lol
326デフォルトの名無しさん
垢版 |
2017/07/29(土) 00:16:53.64ID:vlC06Wfm
(lol)

こうすると顔文字のようだ。
2017/07/29(土) 00:22:54.09ID:gxbujSGs
>>324
いやそれはちょっと違う。日本語版Wikiはちょっと広めに取りすぎている。
https://ja.wikipedia.org/wiki/%E8%BB%BD%E9%87%8F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
実際のところ、俺の感覚では、以下だ。
Perl/Python/Ruby/JavaScript <-100%LL言語に含まれる
PHP/Lua <- LL言語に含める奴もいる。割合は50%位か?
AWK/bash <- LL言語に入れる奴はいない。これらはスクリプト言語と呼ばれる。

旧来の「スクリプト言語」はフルセットの機能を持っていなかった。
ところがPerl以降はプログラミング言語としても遜色なくなってきている。
とはいえC++やJavaとは明らかに違う。
ということでこれらを呼ぶために生まれた言葉が「LL言語」だ。(と思う)
よく分からなければ「Perl/Python/Ruby/JavaScript/その他」の理解で問題ない。
328デフォルトの名無しさん
垢版 |
2017/07/29(土) 00:27:01.78ID:E9tUO4Ko
LLという日本語だと思えば別に恥ずかしくないだろうに。
329デフォルトの名無しさん
垢版 |
2017/07/29(土) 00:29:11.14ID:vlC06Wfm
これからは BASIC

10 PRINT "ぷ"
2017/07/29(土) 00:31:57.73ID:gp3BUyJn
C#だろうとJavaだろうとFotranだろうと多くのライブラリはC、C++で書かれてる。
スクリプト系言語に限定して議論する理由は?
2017/07/29(土) 00:33:28.06ID:YB2Y7dkJ
>>327
Basicはどの辺に分類されるの?
2017/07/29(土) 00:36:55.90ID:YB2Y7dkJ
bashがスクリプト言語になるなら、Emacsもそうなるかな
2017/07/29(土) 00:37:55.49ID:dTbBo9oQ
で、結局リスト実装出来ない雑魚はおんのか?
2017/07/29(土) 00:48:16.16ID:gxbujSGs
>>330
何が言いたいのか分からんが、エスパーするとこれで答えになるか?

LL言語 ⊂ (君の言う超広義の)スクリプト言語

C#/Java/FortranをLL言語と呼ぶ奴はいない。
つか、知らない言語の話なんてしないんだし、
自分の知っている言語のどれがLL言語と呼ばれるかフラグ立てておけば済む話だぞ。
出現頻度だけで言えば、LL言語≒Perl/Python/Ruby/JavaScriptでいい。
2017/07/29(土) 01:53:34.44ID:YB2Y7dkJ
LL言語という物の中身は分かりましたが
そのように分類する事で、
得るものがあるようには感じませんでした
2017/07/29(土) 04:02:19.23ID:F0OdFQYT
>>294
ソートが楽になるだろう?
2017/07/29(土) 04:04:40.21ID:TpFswTs0
>>295
バーカ C言語すれだから初期化リストだと思ったとか寝言ほざいてるID:tCxrViSfのバカさを指摘するために
他の文法要素でリストばたくさんあるぞと指摘してやったんだろ

死ねバーカ
338デフォルトの名無しさん
垢版 |
2017/07/29(土) 05:24:03.96ID:sjwibnJ3
既存のCのコードをUnicode対応に書き直したいんだけど、
char を wchar_t に置換したり、文字列リテラルにプレフィックス付けてくれたり、
関数を wchar.h 版にしてくれる便利なツールは無いですか?

もしくは予約毎と文字列リテラルだけを対象にしたいので、
パースして品詞情報を出してくれるスクリプトなんかあれば改造するかも。
2017/07/29(土) 05:31:19.12ID:u24XiLoF
>>336
double とか int でもそう思ってるなら単なるアホだぞ
2017/07/29(土) 05:34:46.32ID:u24XiLoF
>>337
> 他の文法要素でリストばたくさんあるぞと指摘してやったんだろ
そんなもんは既に>>267で指摘されてるのに周回遅れでなにドヤッてんだよ w
2017/07/29(土) 05:39:01.00ID:u24XiLoF
>>335
まあLL知らなかったアホが悔し紛れにマウンティングしようとして自爆してるだけだから w
2017/07/29(土) 05:47:56.72ID:vlC06Wfm
>>338
そういうツール作ればいいじゃん。
2017/07/29(土) 07:17:17.25ID:N+YJafLA
>>338
全自動は厳しそう
文字のchatと文字以外のcharの区別が出来ない
2017/07/29(土) 07:28:56.29ID:N+YJafLA
>>337
その指摘の意図が不明
他にあるから何?
2017/07/29(土) 07:55:34.60ID:TpFswTs0
>>340
バーカ それもオレなんだが
往生際悪く日が変わってID変わったID:WViVOgsqが絡んできたから止めを刺してやったに過ぎないが
バカには理解できないようだ さすが救いようのないバカ
2017/07/29(土) 08:00:46.31ID:ULoSSJ2b
>>339
くさるほど連結リストを作るのに、いちいち特定の型に対応させてられないよ
2017/07/29(土) 08:04:41.41ID:N+YJafLA
>>345
で結局何のリストなの?
2017/07/29(土) 08:09:17.20ID:N+YJafLA
ていうか、
>>228の書き込み自体が皮肉なわけだけど
C言語自体にリスト構造なんて物はないっていう
本気で初期化リストだと主張してると思ったわけじゃ無いよな?
「初期化リスト?」だし
2017/07/29(土) 08:10:22.22ID:N+YJafLA
皮肉に対してトンチンカンな指摘をしてるアホが
一人いるみたいだけど
2017/07/29(土) 08:11:51.02ID:N+YJafLA
>>346
腐るほど連結リストを作るプログラムって何だ?
2017/07/29(土) 08:15:35.54ID:zJVnUUbX
>>345
ひょっとして同じこと繰り返してるバカって言われてることに気づいてないのか?
>>265>>280 でわざと同じように指摘してやったのに w
2017/07/29(土) 08:17:38.69ID:zJVnUUbX
>>346
>>290
2017/07/29(土) 08:25:35.65ID:N+YJafLA
>>289
使う側でいちいちメモリ確保、解放をするの?
それとも、Data自体が実体でキャストして使う?

いずれにしろ使いにく過ぎる
2017/07/29(土) 08:25:56.47ID:ULoSSJ2b
>>352
連結リストの型ごとにアルゴリズムを生成するの?それこそミスの元じゃない?
2017/07/29(土) 08:26:55.49ID:ULoSSJ2b
>>353
いちいちmalloc()/free() するんだよ
malloc()/free() でミスするようでは仕事にならん、というか検査用ラッパぐらい手持ちでもっとけよ
2017/07/29(土) 08:29:08.33ID:N+YJafLA
使いにく過ぎる

>>354
型ごとに同じコードを何度も記述する必要はないぞ
そのためのマクロだ
2017/07/29(土) 08:31:19.71ID:ULoSSJ2b
連結リストの中に連結リストとか自由にやりたいのだったら void *data 一択だよ
2017/07/29(土) 08:31:57.23ID:N+YJafLA
構造体名と型をdefineしてからインクルード
2017/07/29(土) 08:33:04.08ID:zJVnUUbX
>>354
> まあいろんな型が必要だとテンプレートが欲しくなるけど
マクロでもそこそこ行けるしね
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2017/07/29(土) 08:35:18.93ID:ULoSSJ2b
どっちが書きやすいか試せば一発だが‥これは二分木でも一緒
誰か三重の連結リストなり二分木なりを自分のやりかたで書いてくれないか?
2017/07/29(土) 08:36:09.59ID:N+YJafLA
リストのノードとは別にメモリ確保が必要なら、パフォーマンスにも影響するし
2017/07/29(土) 08:40:17.35ID:N+YJafLA
腐るほど使うなら使いやすくないと

メモリ確保、解放を自分でやれ?
あり得ない
2017/07/29(土) 08:41:10.70ID:ULoSSJ2b
>>362
それはCの基本だよ、お前さんC++に慣れきっているんじゃない?
2017/07/29(土) 08:41:31.77ID:zJVnUUbX
>>357
せっかくの静的型付を安易に捨てるのはバカにありがちな行動
struct List_t {
struct List_t *Previous;
struct List_t *Next;
union {
struct List_t *Child;
double Double;
} Data;
};
2017/07/29(土) 08:44:54.55ID:N+YJafLA
>>363
使いにくくてバグの元でパフォーマンスも悪いモジュールを強要する

お前とは仕事をしたくない
2017/07/29(土) 08:52:21.05ID:ULoSSJ2b
>>364
出た!union 野郎が出た!
そんなところで共用体をつかってコードを一本化できるのか?続きを書いてみろよ
2017/07/29(土) 08:53:25.58ID:ULoSSJ2b
>>365
ふん、それはCを知らないといっているようなものだよ‥
>>360を書けばわかる
2017/07/29(土) 08:54:11.31ID:TpFswTs0
> そこそこ行けるしね
と書くとアンダーラインになるのか?
2017/07/29(土) 08:55:16.84ID:TpFswTs0
マクロでもそこそこ行けるしね

そこそこ行けるしね

行けるしね
2017/07/29(土) 09:20:46.96ID:zJVnUUbX
>>366
続きってなんだよ w
2分木なら双方向リストと同じだぞ w
struct List_t {
struct List_t *Left;
struct List_t *Right;
double Data;
};
2017/07/29(土) 09:21:39.47ID:zJVnUUbX
>>368
アンダーライン w
2017/07/29(土) 09:28:06.03ID:14mINgXT
ん?
二分木なら3個とつながってるから、
普通3個リンクを張る
2017/07/29(土) 09:29:28.03ID:dTbBo9oQ
>>364
お、標準ライブラリのソート全否定か?
Cではちょいちょい捨てるよちょいちょいね
常に型を保存したかったらC++使うしかない
2017/07/29(土) 09:29:42.67ID:14mINgXT
あと、色情報も普通はつける
2017/07/29(土) 09:43:22.80ID:N+YJafLA
>>364>>370 も、何の構造?

親をたどれないとポインタを一個進めることも出来ない

C++でいうsetの話をしたわけじゃないの?
2017/07/29(土) 09:43:31.26ID:zJVnUUbX
>>372, >>374
赤黒とかの前に2分木の基礎からやり直せ
2017/07/29(土) 09:45:52.74ID:zJVnUUbX
>>373
> お、標準ライブラリのソート全否定か?
>> 安易に捨てるのは
の意味もわからないアホ w
2017/07/29(土) 09:49:09.48ID:zJVnUUbX
>>375
>>364 に対して親とか知ったかが背伸びするなよ w
根や親を各ノードに持つか別に管理するかは要件次第
2017/07/29(土) 09:54:12.77ID:N+YJafLA
ポインタを進めたり戻したりする必要がなければ
親にリンクを張らなくてもいいけどさ

std::setと同等なものをイメージしたけど、
まったく違うものが突然出てきたわけね
2017/07/29(土) 09:59:21.62ID:N+YJafLA
>>364はそもそも二分木では無いのか

>>357のリストの中にリストっていうのはそういう意味なのか?
2017/07/29(土) 09:59:54.86ID:N+YJafLA
おれの読解力が無さすぎるのか、
説明がなさすぎるのか、
2017/07/29(土) 10:08:25.24ID:RY+TGg1x
>>381
>>286 >>287 にある通り、previousとnextと書いてると、大抵は双方向リストを意味してるものだと取る
ここがleftとrightと書いてると、意味上は全く同じなんだけれども、単語の上からはまずは二分木を連想する
next一つだけだと、一番単純な連結リストであることを期待する
2017/07/29(土) 10:11:31.61ID:dTbBo9oQ
>>377
それいうならリストの中身void*にするのもそこまで安易な選択ってわけでもあるまいに
2017/07/29(土) 10:14:10.31ID:gxbujSGs
>>379
君以外はみんな「リスト」の話をしている。
君もそうだったのだがなぜか勝手に君だけsetだと言い出してる。

>>380
「リストの中のリスト」ってのは、配列で言うとジャグ配列、
つまりジャグリスト。(という言い方は普通しないが)

>>381
君の頭が悪すぎるだけ。
君以外はみんな噛み合っている。つまり、必要十分な説明はなされている。
つか、>>364,370を読めない奴が議論参加するな、という話でしかないが。

個人的には>>364でunionは使わない。マクロで量産だね。(手動テンプレート)
2017/07/29(土) 10:17:23.70ID:N+YJafLA
>>286は、
双方向を利用して作ったから名前が変なのかと思った
でも、追加したのが Child なのはどっちみち変だな
2分木だとしたら

>>370は2分木だろうけど、
これで何をしたいのかわからん
双方向と2分木が同じ発言の意味も不明
2017/07/29(土) 10:20:56.53ID:N+YJafLA
>>370で二分木の話が出た
もっと上ではsetの話が出ている
2017/07/29(土) 10:22:31.80ID:N+YJafLA
>>357
リストの中のリストって
list < list < int > >
こういう意味かと思ったけどこれも違うのね
2017/07/29(土) 10:26:44.77ID:N+YJafLA
まあいずれにしろ、>>289 は無いな
2017/07/29(土) 10:31:03.43ID:zJVnUUbX
>>383
ソート使うのにmalloc/freeは要らんだろ
2017/07/29(土) 10:35:15.55ID:dTbBo9oQ
>>389
リストなんてどうせmalloc/free使って運用するし別によくね?
2017/07/29(土) 10:36:49.65ID:gxbujSGs
>>385
>>286は「双方向リスト」だぞ。名前もかなり妥当。
つか、君だけまったく付いて来れてないが。

> 双方向と2分木が同じ発言の意味も不明
抽象化して「ポインタの数」という意味で捉えると同じ、ってことだよ。
これについてこれてないのは、「抽象思考出来ない馬鹿」だね。最近はよく見かけるが。

>>387
いや、そういう意味だぞ。


ふむ、なるほど、君は「リスト」を作れない馬鹿のようだ。君は何言語使いなんだ?
C言語使いなら、ド頭>>230でも否定されている通り、普通はリスト程度ならサクッと作れる。
(ただしそもそもリストなんて使わないが)
2017/07/29(土) 10:37:38.60ID:zJVnUUbX
>>384
> 個人的には>>364でunionは使わない。マクロで量産だね。(手動テンプレート)
ん?
ノードに値とリストのどちらかを入れられるリストと言う要件だと思ったが?
2017/07/29(土) 10:37:49.78ID:N+YJafLA
>>289
intのリストに1, 2, 3, ... , 10 を追加
するだけでもイヤになる
2017/07/29(土) 10:39:22.96ID:N+YJafLA
>>392
なんだ、結局おれ以外も会話が通じてないんじゃん
2017/07/29(土) 10:40:24.22ID:zJVnUUbX
>>390
まあお前がいいと思うならそうすればいいんじゃね?
2017/07/29(土) 10:41:41.06ID:N+YJafLA
>>391
あ、ごめん
>>385の一行目は >>364 の間違い
2017/07/29(土) 10:42:46.56ID:N+YJafLA
>>391の真ん中
>>364のコードはそうなってない
2017/07/29(土) 10:47:50.62ID:N+YJafLA
>>391の上半分

トポロジーがまったく違う
よって必要な処理もまったく違う
ポインタの数も、普通は2分木は3方向にリンクを張る
2017/07/29(土) 10:48:39.76ID:N+YJafLA
「普通は」とか書くと反論がくるのかな
「多くは」くらいにしておくか
2017/07/29(土) 10:58:06.68ID:N+YJafLA
>>370
結局これで何をしたいのかわからん

親へのリンクが無い、色が無い
って時点で汎用化とは程遠い
2017/07/29(土) 11:00:17.42ID:gxbujSGs
>>392
> ノードに値とリストのどちらかを入れられるリストと言う要件だと思ったが?
いや、そう明示されているわけではないよな?
次に、それが要件だったとして、或いは汎用化するために void* だろってのが皆の意見だ。
ここについては俺はいちいちキャストがウザいからデータはめ込み派(君と同じ)だが。
2017/07/29(土) 11:09:28.10ID:VkCqDRe3
Cばかり使っていると頭がこんなんなっちゃいます。
2017/07/29(土) 11:11:38.53ID:N+YJafLA
void* の問題はキャストもそうだけど
外部でメモリを管理する必要があるってところが大きいかと

多重リストだろうがunionだろうが
マクロでどうにでもなるんで
わざわざ不便な作りにする必要は無いかと
2017/07/29(土) 11:13:16.21ID:N+YJafLA
>>402
C++が使える環境なら素直にC++を使えって話だけど
いまだにCしか使えない環境ってのもあってね
2017/07/29(土) 11:14:41.46ID:eThbJX9n
(単方向)リストは先頭から終端の方向へ順にポインタを辿る、逆方向のポインタは無くても可(逆方向があるのは双方向リスト)
二分木は根から葉の方向へ再帰でポインタを辿る、親方向のポインタは無くても可(むしろ無いのが普通)
2017/07/29(土) 11:16:39.02ID:gxbujSGs
>>398
何度も言っているが君だけ付いて来れてない。いちいち全部なので端折るが、

> ポインタの数も、普通は2分木は3方向にリンクを張る
これについては既に回答済みで、引用すると、
> 根や親を各ノードに持つか別に管理するかは要件次第 (>>378)
で、全くその通りだ。

俺は君が何故これを理解出来ないのかもわかるが、
君は俺の質問に答える気がないようだから、教えてやらないことにする。
馬鹿のままで死ね。
2017/07/29(土) 11:16:58.24ID:N+YJafLA
Cってパフォーマンスを落としてまで汎用化するような使い方ってあまりしないしね
基本組み込み用

リストも片方向で済むなら片方向にするし、
そもそもリスト構造自体頻繁に使うようなものじゃない
2017/07/29(土) 11:18:34.04ID:N+YJafLA
だから、
Cで挫折する理由が「リスト」とかいう主張、
まったくチンプンカンプンで
2017/07/29(土) 11:19:32.62ID:zJVnUUbX
>>401
> いや、そう明示されているわけではないよな?
で、君は
> 連結リストの中に連結リストとか自由にやりたい
をどう解釈してマクロでやるって言ってるの?

> 次に、それが要件だったとして、或いは汎用化するために void* だろってのが皆の意見だ。
皆の意見? w
2017/07/29(土) 11:21:33.18ID:N+YJafLA
>>406
要件次第で変わるのに「同じ」と言ってしまう
2017/07/29(土) 11:23:02.49ID:N+YJafLA
>>406
>>400
2017/07/29(土) 11:26:20.62ID:gxbujSGs
>>409
俺なら型ごとにstructを用意、つまりテンプレートと同じことをする、ということ。

ただしvoid*にしろって言う意見も分かるし、C的にはそれもありだと思うぞ。
ここら辺は好みの範囲だとは思うが。
2017/07/29(土) 11:30:42.93ID:N+YJafLA
>>405
無いのが普通って
世の中を知らなすぎる

汎用のコンテナとしての2分木で
そういう実装な例があるなら
示していただけると
出来れば有名どころで

親がないと、ポインタを一個進めるのもコストがかかる
挿入した時に左右のバランスを保つのにもコストがかかる

もちろん、そういう処理がいらない
コンテナとして使わないような
特殊用途の2分木ならいくらでもあるだろうけど
今はコンテナの話だよね
2017/07/29(土) 11:30:53.18ID:zJVnUUbX
>>412
マクロの話がよくわからんがまあいいや
あんたが要件どう解釈したかもわからんからどうしようもないしな
2017/07/29(土) 11:32:58.28ID:N+YJafLA
例えばstd::setの実装はすべて親へのリンクがある
2017/07/29(土) 11:36:13.86ID:gxbujSGs
>>414
インラインマクロでゴリゴリに対応するのではなくて、
structの宣言部分をマクロ化して、
MyList(MyListDouble, double)
MyList(MyListInt, int)
で量産する、ということ。つまりテンプレートだろこれは。
2017/07/29(土) 11:44:36.57ID:N+YJafLA
コードサイズが大きい時は、
名前と型をdefineしてからinclude
とか良くやる
defineやincludeは上のMyListみたいなマクロで
2017/07/29(土) 11:59:50.67ID:ODSH1Ehs
>>416
ごめん意味わからん
union の代わりになるって言うことなんだよね?
2017/07/29(土) 12:00:47.71ID:EGnuLLJd
いつからコンテナの話になったんや
2017/07/29(土) 12:09:46.80ID:14mINgXT
>>418
型ならなんでも良い
2017/07/29(土) 12:10:50.91ID:14mINgXT
>>419
最初からずっと
2017/07/29(土) 12:13:39.65ID:14mINgXT
ていうか
コンテナじゃない2分木はあるけど、
コンテナじゃないリストなんて無いだろ

初期化リストか?
2017/07/29(土) 12:22:33.90ID:EGnuLLJd
コンテナの定義に詳しくないんだけど、Lispのリストはコンテナなん?
424デフォルトの名無しさん
垢版 |
2017/07/29(土) 12:24:27.13ID:vlC06Wfm
このスレは1000までリストの話で埋まりそうだね。物凄いスピードで。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況