◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C言語なら俺に聞け 151 YouTube動画>5本 ->画像>9枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1554171817/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ cf8f-fy95)
2019/04/02(火) 11:23:37.62ID:SQXqRaAc0
!extend:checked:vvvvv:1000:512
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/02(火) 11:27:10.68ID:SQXqRaAc0
前スレ
C言語なら俺に聞け 150
http://2chb.net/r/tech/1549427943/

!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

次スレを作る時は上記1行を「1行目に」コピーして2行に増やして必ず1行目に入るようにしてください。



…あってる…?
3デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/02(火) 11:28:04.82ID:SQXqRaAc0
これで良い…のかな

!extend:checked:vvvvv:1000:512

次スレを作る時は >>1 の上記1行を「1行目に」コピーして2行に増やして必ず1行目に入るようにしてください。
4デフォルトの名無しさん (ワッチョイ 1f19-9gjM)
2019/04/02(火) 16:37:14.52ID:VBVVrqHU0
前スレ977のリンクが404ぽいので
魚拓から復元してみた
https://ideone.com/IhBGrr

977 名前:デフォルトの名無しさん (アウアウエー Sa3f-XwTE)[] 投稿日:2019/04/01(月) 21:33:02.04 ID:v6mAk26Pa [1/3]
「要素型がint型で要素数がnの配列を受け取って、
全要素に添字と同じ値を代入する関数set_idx」を作成しました。
http://codepad.org/krsZoljq

配列aの要素数はマクロ定義で#define NUMBER 10とし、
問題なく動作しました。
ところが、この要素数10を60に書き換えてみたところ、
コンパイルされたexeファイルを実行しても動作しません。
コンパイラはMinGW(gcc)です。
思い当たる原因を教えていただけないでしょうか。
5前スレ977 (アウアウエー Sa3f-XwTE)
2019/04/02(火) 20:52:18.32ID:JwQjLW9ya
>>4
codepadが消えてしまっていたのですね、
復元ありがとうございます。
当初は16行目を
int a[] = {0};
と書いていたため上手く動作せず質問した次第です。

前スレで色々とレス頂きありがとうございました。
プログラムを書く際にバッファオーバーランの危険性を考慮する必要があることすら知らないレベルなので、
メモリの使い方を念頭において学習していきます。
C言語は諦めた方がよいというレスもありましたが、
センスがないのは重々承知の上で、腹を括って勉強していくつもりです。
6デフォルトの名無しさん (ワッチョイ 0f8f-068C)
2019/04/03(水) 00:01:40.97ID:qKRJca2S0
>>5
いえ
すみません

「呼び出し元で配列長を管理出来ている。問題はない」と言いうるようです /* むしろ free し忘れる方が問題か */
誤解・不適切な部分があったこと、申し訳なく存じます

色々大変かも知れませんが、頑張ってください
7デフォルトの名無しさん (ワッチョイ 9fc5-1m/C)
2019/04/03(水) 00:29:12.53ID:kMUljaKF0
>>5
cは非生産的で大したアプリは最初のうちは作れない
しかし覚えれば言語やOSや組み込みなどに手が出せるようになる
独学はイバラの道だが頑張ってね
8デフォルトの名無しさん (ワッチョイ 9fa5-mpQp)
2019/04/03(水) 14:57:25.86ID:PdcOYuo+0
>「c言語 おすすめしない理由」でググると
>https://www.sejuku.net/blog/3619

sejukuはねーよ
C言語のウソ記事まき散らしたとこじゃねえか
9デフォルトの名無しさん (ワッチョイ 1f19-9gjM)
2019/04/03(水) 17:06:47.20ID:jUO0vRXi0
全く以てくだらんな
何言語だろうが関係ねえ話で
習得できなかったやつの言い訳を集めただけの駄文だ

もし「初心者」がここを見ているなら一言いいたい
【 あ ん な の 忘 れ ろ 】
プログラム言語に限らず人生すべてに影響する有害な集団催眠だ
10デフォルトの名無しさん (ワンミングク MMbf-QHAD)
2019/04/03(水) 19:21:17.48ID:6tuZKWrYM
既存のソフト(dll)を引き継いだのですが、そのdll内でバイナリファイルをリードしています。
_open(xxx, _O_BINARY, _S_IREAD) しているのですが、複数のプロセスが同じタイミングでアクセスしても排他処理されないですよね?
どうもうまく読めてないのが原因かもしれない障害が発生して困っています。
どうすれば排他処理できるでしょうか。
11デフォルトの名無しさん (アウアウエー Sa3f-RDgh)
2019/04/03(水) 19:55:12.80ID:ZPobjXHOa
読むだけなら排他は要らないんじゃない
12デフォルトの名無しさん (ワッチョイ 0f63-r4m/)
2019/04/03(水) 20:00:41.26ID:ZmtTnpp/0
書き込みされたとき、どうなるかな
13デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/04/03(水) 20:13:27.48ID:OJDzRIb+0
排他処理の方法を考えようにも情報が少なすぎるよ。
14デフォルトの名無しさん (ワンミングク MMbf-QHAD)
2019/04/03(水) 20:30:58.20ID:6tuZKWrYM
レスありがとございます。
後だしですが、書き込みはされないです。そこまでかんがえてなかったですが。
リードだけなら大丈夫そうですね。だったら他のとこに問題があるのかな・・・
15デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
2019/04/03(水) 20:57:30.11ID:GUjlsyjta
ファイル書いてる最中に読まないようにそのライブラリを使う側と書き込みする側のプログラムでロック掛けるようにするぐらいしか方法ないのでは?
ライブラリのソースもあって自分でも直せるというのなら自分でその辺改造しちゃえば良いんだろうけど。それだったらわざわざここに質問書かんよな?
16デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/04/03(水) 21:24:51.36ID:OJDzRIb+0
そもそも1プロセスでもそのファイルをオープンできているのだろうか?
17デフォルトの名無しさん (ワッチョイ 3b7c-RDgh)
2019/04/03(水) 21:44:31.14ID:NesRjmW10
その障害の内容教えてくれんとな
18デフォルトの名無しさん (ワッチョイ 6b8f-cGEb)
2019/04/03(水) 21:51:55.02ID:OJDzRIb+0
どこまで説明したら適切なアドバイスもらえるかって実務にも重要な要素だよな。これも練習ですな。
19デフォルトの名無しさん (ワッチョイ 99da-iE/E)
2019/04/06(土) 14:35:16.98ID:sYe67fpI0
https://wandbox.org/

codepad死んだっぽいので次スレから代わりに↑をテンプレに入れよう
20デフォルトの名無しさん (アウアウウー Sac5-T5wd)
2019/04/08(月) 10:46:04.23ID:slzfC4/wa
ここどう?
https://www.jdoodle.com/
色んな言語使えるようだ。もちろんCもある。
21デフォルトの名無しさん (アウアウウー Sac5-L3CR)
2019/04/08(月) 10:58:04.07ID:czvLDSaVa
はい
22デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/08(月) 20:38:05.96ID:j+rCFaIP0
fprintf_s みたいな
foo_s 系の関数実装って増えてるん?

「Visual C++ でガッコウのコードがコンパイルできない」みたいな話をたまに見かけるけど…
23デフォルトの名無しさん (ワッチョイ 7d02-w1lf)
2019/04/08(月) 20:55:25.55ID:26lZNeBT0
セキュリティの為にfoo_sが推奨されてるんだから、ガッコウのコードの方を変えるべきでは?
何年経ったと思ってるんだ。
24 ◆mxojKcXMM. (ワッチョイ 6247-BZhk)
2019/04/08(月) 21:02:21.56ID:PMJ1/1Ak0
>>22
その s 系とかいうやつは、いまいち気に要らない仕様でいちいち頭に来るので私は使わないです
25はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/08(月) 21:17:15.17ID:TICLg0mt0
>>23
_s 系の関数って言語仕様上はオプショナルでしょ。
安全でない関数の中で明確に仕様から削除されたのは
gets だけのはずだし、もちろん、安全性を意識させるのは
望ましいけど、どこでも _s 系の関数を使えるわけじゃない。

あくまでもオプショナルだから >>22 は「実装って」という聞き方をしているのだと思うぞ。
26 ◆mxojKcXMM. (ワッチョイ 6247-BZhk)
2019/04/08(月) 22:00:58.21ID:PMJ1/1Ak0
>>25
Microsoft のコンパイラ以外では使えない、と聞いているのも納得がいかないのです、本当によいものなら、なぜ _s 系が移植されないのでしょうか…
27はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/08(月) 22:21:13.00ID:TICLg0mt0
>>26
そんなことを >>22 は聞いていない。
誤読。
28 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/08(月) 22:27:24.57ID:PMJ1/1Ak0
>>27
失礼。>>26>>22 への直接または間接の回答を意図しておりません
とある「有用な」実装が広く使われるべき、という意見に対して、microsoft のコンパイラ環境でしか使えない実装を教育目的で強要してもいいのか、というか、そもそもそんなに「有用」な実装なのですか?本当ですか?
という視点で >>22 を強く批判する内容です
29はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/08(月) 22:35:39.51ID:TICLg0mt0
>>28
_s 系の関数はオプショナルとは言えども規格にある存在なので、
Visual C++ は例のひとつとして挙がっているにすぎません。
間違いなくありがちな問題を軽減しますので、
使える処理系ならば使うように誘導するのは合理的です。
30 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/08(月) 23:24:16.54ID:PMJ1/1Ak0
>>29
お手数をおかけし恐縮ですが
「規格にある存在」というその規格をご教示願えますか?
手元にある ISO/IEC 9899:1999 には見えないようですが…
31デフォルトの名無しさん (ワッチョイ 698f-JThg)
2019/04/08(月) 23:30:36.72ID:dk5yj0CN0
visual studioで新しいプロジェクトを作成して始めてビルドする度に
/D _CRT_SECURE_NO_WARNINGS
に誘導されてます……
32デフォルトの名無しさん (アウアウカー Sa09-f9KT)
2019/04/08(月) 23:46:29.39ID:Z7UT2eMea
localtime_s 使ったら内部でmutex使ってて無茶苦茶遅いのはむかついた
33デフォルトの名無しさん (アウアウカー Sa09-f9KT)
2019/04/08(月) 23:48:18.87ID:Z7UT2eMea
>>30
なぜそんな古いものを…
引数にvoid入れるとびっくりするタイプ?
34デフォルトの名無しさん (ワッチョイ 698f-JThg)
2019/04/08(月) 23:50:57.39ID:dk5yj0CN0
localtimeについては批判できねぇ。
マルチスレッドでlocaltime呼び出してたせいで正体不明のバグに数日間悩まされたからな。。。
35はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/09(火) 03:49:52.59ID:jYkGM3GN0
>>30
C99 には無い。 C11 に入った。
Annex K (normative) Bounds-checking interfaces
って項目ね。
Wipkipedia でも言及がある。
https://ja.wikipedia.org/wiki/C11_(C%E8%A8%80%E8%AA%9E)#.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3.E6.A9.9F.E8.83.BD
36デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/09(火) 07:47:37.12ID:lax+sHP30
>>22
> fprintf_s みたいな
> foo_s 系の関数実装って増えてるん?

「いや増えてない」←わかる
「俺は foo_s みたいな関数が嫌い」←わかる
「俺は foo_s みたいな関数が嫌いだから >>22 を強く批判する」←全く分からない

誰か解説してくれるのだろうか



私は「ガッコウのセンセイ」でもないし「ガッコウの教材」の著者でもないから何とも
新学期だから知恵袋とかに質問増えそうじゃん?
37デフォルトの名無しさん (ワッチョイ 698f-JThg)
2019/04/09(火) 07:52:30.47ID:vvoqC9qD0
>>22 を批判してるんじゃなくて>>22 にかかれてるような状況を批判してるんじゃないの?
38デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/09(火) 09:52:53.37ID:EB2iO7oh0
>>24
同感
いけ好かねえの多いよな
39デフォルトの名無しさん (ワッチョイ ee63-k8NZ)
2019/04/09(火) 09:56:13.65ID:A5vZx8Gh0
>という視点で >>22 を強く批判する内容です

そう解釈してやっても良いが、この日本語はおかしい
40デフォルトの名無しさん (スッップ Sda2-JThg)
2019/04/09(火) 10:28:57.92ID:AXiDgdzZd
話それちゃうよ?
41デフォルトの名無しさん (アウアウウー Sac5-T5wd)
2019/04/09(火) 13:13:25.92ID:xq+Mg1lAa
漢なら localtime_r()
42デフォルトの名無しさん (スッップ Sda2-JThg)
2019/04/09(火) 13:25:42.77ID:AXiDgdzZd
真の漢なら
#ifdef _win32
localtime_s()
#else
localtime_r()
#endif
43はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/09(火) 13:27:54.07ID:jYkGM3GN0
>>42
__STDC_LIB_EXT1__ を使った方がポータブルじゃない?
44デフォルトの名無しさん (スッップ Sda2-JThg)
2019/04/09(火) 13:29:27.93ID:AXiDgdzZd
>>43
先生、それはなんですか?
45はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/09(火) 16:24:32.16ID:jYkGM3GN0
>>44
ググって。
46デフォルトの名無しさん (ワッチョイ 6969-p3R9)
2019/04/09(火) 16:29:41.88ID:obpichI70
C11 以降か…
47デフォルトの名無しさん (スッップ Sda2-JThg)
2019/04/09(火) 18:39:32.35ID:AXiDgdzZd
>>43
ググってヒットした件数的にこんなん使えませんわ。
48はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/09(火) 19:07:14.53ID:jYkGM3GN0
>>47
件数じゃなくて、用途に対する妥当性で考えてよ
49デフォルトの名無しさん (スッップ Sda2-JThg)
2019/04/09(火) 21:04:38.62ID:AXiDgdzZd
質問スレっぽいスレタイなのにそこまで考えさせられるのかよw
あんまり使われてないっぽいものは使わないってスタンスは崩さないよ、俺は。
50デフォルトの名無しさん (ワッチョイ 5152-iMOx)
2019/04/09(火) 21:11:11.26ID:e3amBytd0
使われてないものは使わない
つまりC言語自体・・・(ボソッ
51デフォルトの名無しさん (スッップ Sda2-JThg)
2019/04/09(火) 21:27:21.27ID:AXiDgdzZd
言語を自分で選べるほど偉くないんですよ
52 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/09(火) 21:47:18.63ID:ssMdw0XF0
>>35
ほえ~
Annex K は確かにみじんも記憶に残っていません…でした
ご教示いただき感謝いたします
53 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/09(火) 21:52:14.86ID:ssMdw0XF0
>>33
実は K&R2 のみが正義、K&R2 こそ必要にしてかつ十分、という立場なので、そんな私が C99 を推挙した時点で、すでにして大幅に compromise しているつもりなのでした…
54デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/09(火) 21:55:42.64ID:EB2iO7oh0
K&R2って妥協の産物だろ
K&R1こそ原理主義者の拠り所だ
55はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/09(火) 22:05:25.20ID:jYkGM3GN0
でもまあ JIS の最新は C99 相当だしな。
英語を読むのはしんどいし、
日本語の資料があるなら日本語の方がいいわ。
56 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/09(火) 22:25:14.01ID:ssMdw0XF0
>>54
>K&R2って妥協の産物

それも理解できます
K&R2 の最大の改悪部分は「構造体の実体渡しができること」
配列の実体を丸まま関数に渡せないくせに、構造体では出来るって意味わかんない
もしかして
struct S {
int a[65536];
};
とかいう構造体があったら、それを全部スタックに載せるつもりなのか?そういうことをする奴が現れる可能性を考えたのか?と小一時間問い詰めたい気分になりました…
57デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/09(火) 22:31:23.50ID:lax+sHP30
struct S {
long long ago0[1048576*1048576];
long long ago1[1048576*1048576];
long long ago2[1048576*1048576];
long long ago3[1048576*1048576];
};
58デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/09(火) 22:32:15.47ID:KCu43/3wa
>>56
それは、配列の方が悪いんでしょうに
構造体はコピーを渡すのが全然正しいじゃないの
59デフォルトの名無しさん (ワッチョイ ee63-k8NZ)
2019/04/09(火) 22:45:54.00ID:A5vZx8Gh0
>>54
K&R1原理主義って、素敵?
60デフォルトの名無しさん (ワッチョイ 2e12-bgjH)
2019/04/09(火) 22:48:12.12ID:PvJWb3nJ0
in a galaxy far,
far away...
61デフォルトの名無しさん (ワッチョイ ee63-k8NZ)
2019/04/09(火) 23:05:49.72ID:A5vZx8Gh0
/* not reach here outside the universe */
62デフォルトの名無しさん (ワッチョイ 5152-iMOx)
2019/04/10(水) 01:12:36.88ID:sw3hAH5+0
jedi = get_force();
63 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/10(水) 01:49:22.11ID:57hoitEO0
>>58
構造体といえどもアドレスを渡すのが真に正しく、配列なら言語仕様でそれを強要される、なぜ構造体には甘い顔を見せる必要があるのか?
64はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-k8NZ)
2019/04/10(水) 04:59:47.74ID:mOo8C1VR0
>>56
極端なことが「できてしまう」のが問題ということですか? そもそも C なんてそんなものでしょう。
状況を見て適当に使い分けるべきで、駄目な使い方をしたら何だって駄目ですよ。
65デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 06:18:28.03ID:qyNiIlQC0
>>63
ド素人の勝手な推測だけれども

「配列だとマジでサイズどんだけか分かったもんじゃないじゃん」
「構造体のメンバ」に配列が来る場合はあるけど、そのサイズは多寡が知れてるじゃん」

という考えかもアリかもしんない
66デフォルトの名無しさん (ドコグロ MM4a-xk87)
2019/04/10(水) 06:47:52.31ID:bjp/36w+M
むしろ勝手にアドレス渡しになる配列が甘やかされすぎ
文字列がcharの配列だからしょうがないけど
67デフォルトの名無しさん (アークセー Sx91-L3CR)
2019/04/10(水) 07:49:55.31ID:PtgOSD4Jx
配列の実引数をポインタ仮引数で受けれるという仕様上、配列のサイズ情報が失われコンパイラは何バイトコピーすれば良いか分からないから致し方ない。
68デフォルトの名無しさん (アウアウウー Sac5-T5wd)
2019/04/10(水) 09:42:54.83ID:G/tPYfHxa
>>56
昔々初心者の頃にやっちゃって物凄く遅くなって気づいた事があったw
69デフォルトの名無しさん (アウアウウー Sac5-T5wd)
2019/04/10(水) 09:49:26.10ID:G/tPYfHxa
構造体も const で渡されたらこっそりポインタ使って読むだけのアクセスするコード作っちゃっても良いのにな。
マルチスレッドで動くプログラムの時に死ぬかも知れんが。
70デフォルトの名無しさん (アウアウカー Sa09-f9KT)
2019/04/10(水) 10:06:17.49ID:QqefTxrga
そもそも[]が無ければ誤解も減ったと思うよ
いい年した大人が、引数で渡ってきた配列の sizeof 取ろうとするの良く見るぜ
71デフォルトの名無しさん (ワッチョイ 02a5-lO4n)
2019/04/10(水) 10:42:39.87ID:ryP68qDF0
現代教えられてる言語で60年代中期の古さを引きずってる言語だからだ

配列に対してsize適用すれば長さを取れるのは現代じゃあ普通で、
取れないC言語のほうがおかしい、
これ、誤解でも何でもないからな
72デフォルトの名無しさん (ワッチョイ a278-l+U4)
2019/04/10(水) 10:46:50.33ID:Y6MOlOQR0
sizeofで取れるのは要素数じゃないけどな
73デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 11:14:25.33ID:9YALwuYf0
>>58
事実上、構造体はほとんどの場合ポインタで渡すよな
実体で渡すという特殊なケースがデフォになってて
ポインタで渡すという主要な使い方でアドレス演算子が必須って
おかしくね?
74デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 11:16:06.57ID:9YALwuYf0
>>70
だよな
[]こそ諸悪の根元
自動変数と仮引数と外部宣言でみんな意味違うとか
気が狂ってるとしか思えない
75デフォルトの名無しさん (アウアウウー Sac5-T5wd)
2019/04/10(水) 11:23:36.81ID:7gi5m8N9a
そして「C言語はおかしい」と満場一致で結論が出て、また新たな言語が作られるのであった。

        完
76デフォルトの名無しさん (ワッチョイ 7d02-w1lf)
2019/04/10(水) 11:25:19.17ID:lv7m7vwC0
ここが変だよC言語って本が昔売られてたな。。。
77デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 12:05:09.58ID:JKE/90g3a
>>73
俺は安全のために実体渡すし返すよ、割と
78デフォルトの名無しさん (ドコグロ MM4a-xk87)
2019/04/10(水) 12:29:04.23ID:bjp/36w+M
>>73
たまから、構造体はint, doubleとかの変数と同じく値渡しで一貫してる
配列がおかしいだけ
79デフォルトの名無しさん (ワッチョイ 7e7c-k8NZ)
2019/04/10(水) 14:02:32.11ID:pgm3XBSH0
不定と未定義がある限り、C言語はおかしくあり続けるのだ。
80デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 14:28:30.84ID:qyNiIlQC0
>>77
仮引数にconstはダメ?
81デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 14:46:53.80ID:9YALwuYf0
>>77
const使わんの? ・・・て、先に誰か言ってるな
82デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 14:49:44.54ID:9YALwuYf0
>>78
intが値渡しと決められた理由は理解してるか?
配列みたいに暗黙のアドレス演算子にもやればできた話で
そのほうがおまえさんの主張する一貫性にも叶うわけだが
83デフォルトの名無しさん (ワッチョイ 6969-p3R9)
2019/04/10(水) 14:51:22.98ID:hStfijf/0
by val と by ref でうあぁぁぁ
84デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 15:21:31.93ID:Y9aQW1ZLa
>>80
そりゃ、付けられるときは基本いつでもconstですよ
だからなに
85デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 15:49:26.74ID:qyNiIlQC0
>>84
付けられないときってどんなときでしょう
86デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 15:56:55.75ID:9YALwuYf0
>>84
77で「安全のために」って言っているのを
誤って変更してしまうのを防ぐためと読んでいたが
これがそもそも違うのか?
87デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 16:15:30.28ID:Y9aQW1ZLa
>>86
変更しようがしまいが、意図があろうがなかろうが、コンテクストを分けるためですよ。
88デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 16:36:22.97ID:9YALwuYf0
>>87
へー、じゃあ関数を呼び出すたびごとにプロセス生成とかすんの?
89デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 16:51:52.86ID:Y9aQW1ZLa
>>88
なんで?
チミは頻繁にグローバル変数を使うってこと?やめたほうがええよ
90デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 16:58:14.51ID:9YALwuYf0
>>89
なんでグローバル変数を使っちゃいかんのだ?
スタックにしまえば安全だと思っているならおめでたいやつよ
91デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 17:08:01.10ID:Y9aQW1ZLa
>>90
グローバル変数だめでしょ。
スタックってなんのこと?まさか関数呼び出しとスタックがセットだと思ってる?
92デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 17:12:08.62ID:9YALwuYf0
>>91
なんでと聞いている
答えてくれ
93デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 17:16:15.00ID:Y9aQW1ZLa
>>92
そんなもん、密結合・低凝集を実現する目的でしか役に立たんからですよ。
94デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 17:18:23.20ID:9YALwuYf0
>>93
仮引数と自動変数が置かれるスタックもグローバルなんだが
そのせいで密結合・低凝集になったりしているか?
95デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 17:20:34.39ID:qyNiIlQC0
記憶領域確保に失敗したとき
落ちないように頑張ってくれるのと
即落ちるのと

どっちがどうだったか忘れた
最近読んだどっかに書いてあった筈だけど思い出せん…

x86 限定で良いので挙動とコーディングの関係に心当たりのある方御教示ねがいます。。。
96デフォルトの名無しさん (ワッチョイ 9dca-iMOx)
2019/04/10(水) 17:34:07.04ID:VhJLBw5p0
こんな便所みたいなところでばっちばちでワロタ
97デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 17:36:28.06ID:Y9aQW1ZLa
>>94
そうそう、だからポインタを使わないのがいいね
98デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 17:39:25.15ID:Y9aQW1ZLa
構造体に限った話でもないが、グローバル変数のポインタが引数として渡され、更にそういう関数が多段に続いたコードとか地獄だよ。
誰かが止めねばならんよ。
99デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 17:44:54.12ID:9YALwuYf0
>>97
あ、おまえさんそっち系か
・・・なんでCなんか使うの?
100デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 17:46:05.16ID:9YALwuYf0
>>98
グローバル変数をポインタ渡しは意味あるでしょ
スコープを指定する、的なやつ
101デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 17:48:27.03ID:Y9aQW1ZLa
>>100
マジ意味わからん
102デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 17:52:02.02ID:9YALwuYf0
>>101=97
二度も言わなくていいよ
103デフォルトの名無しさん (アウアウカー Sa09-f9KT)
2019/04/10(水) 18:00:58.67ID:9QKNNv28a
>>102
いや、100の解説してくれや
104デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 18:05:19.14ID:9YALwuYf0
>>103
#include <stdio.h>

int x, y;

int main(void)
{
scanf("%d", &x);
scanf("%d", &y);

return 0;
}
暗黙にxに書き込む関数とscanfは
どっちが汎用性が高いか
どっちが見通しがいいか
考えてみな
105デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 18:07:33.40ID:Y9aQW1ZLa
>>104
xとyを比較したらええんか?
106デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 18:09:36.68ID:9YALwuYf0
>>105
おまえさんに解らせることはもう諦めた
放っといてくれ
107デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 18:17:20.49ID:9YALwuYf0
俺はいま103に説明しているんだ
108デフォルトの名無しさん (アウアウカー Sa09-f9KT)
2019/04/10(水) 18:41:36.83ID:BTPtEuL0a
いや、同一人物だぞ
109デフォルトの名無しさん (ワッチョイ 8201-xk87)
2019/04/10(水) 19:37:58.47ID:WZ2DAnxG0
>>82でイミフなこと言ってるなって思ったら単なる基地外やんw
110デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 20:25:42.75ID:qyNiIlQC0
結局「constを仮引数に使えないとき」というのがどんなときなのが全く分からず
「規格通りに書いてはならない」ケースが実在したのかしら
111デフォルトの名無しさん (アウアウエー Sa8a-f9KT)
2019/04/10(水) 20:33:10.76ID:Y9aQW1ZLa
>>110
え、毎回書いてるの?
112デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 21:26:31.69ID:qyNiIlQC0
いや
仕事で使ってませんから
そもそも「毎回」っていうほど書いてませんし

何らかのツールで勝手に入るので「敢えて書く必要性がない」ということなのでしょうか
それとも一律に「書くな」というルールが定着している組織が実在しているのでしょうか
113デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 21:33:55.83ID:9YALwuYf0
>>109
そうか、82がおまえさんはイミフなのか
悪いけど匙を投げるね
114デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 21:37:03.36ID:qyNiIlQC0
>>104 にて
scanf("%d", &x);

と書かれているのですが、ターミナルから9を80字入力されたらどうなさるおつもりなのでしょうか
また、signedともunsignedとも指定されておりませんが、その点はどのように汎用性を確保なさるのでしょうか
115デフォルトの名無しさん (ワッチョイ 912d-iMOx)
2019/04/10(水) 21:55:23.88ID:9YALwuYf0
>>114
俺に聞くな、規格票を嫁
http://kikakurui.com/x3/X3010-2003-01.html

104のコードが規格厳密合致プログラム(strictly conforming program)であることのみここに宣言する
この命題を反証されたら、潔く敗北を認める

では貴殿の返答を待つ
116さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ b901-6gO7)
2019/04/10(水) 21:59:49.17ID:QzOhMry80
intだけだったらsigned intになるっしょ。
近代的な環境なら、正しく書式を設定すればscanfはオーバーフローしない。
117さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ b901-6gO7)
2019/04/10(水) 22:19:22.09ID:QzOhMry80
shortはsigned short、
longはsigned longだが、
charはコンパイラの設定によりsignedにもunsignedにもなる。普通はsignedだがな。
118デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 23:14:07.61ID:qyNiIlQC0
>>115
> 規格厳密合致プログラム

残念ながら、リンク先の日本語文章に定義が無く意味不明だったため
これから英文を読むことにします
型の件含め、皆様の御教示に感謝します
119デフォルトの名無しさん (ワッチョイ ee8f-hWz0)
2019/04/10(水) 23:41:09.21ID:qyNiIlQC0
"shall" の訳文に、筆者の苦悩のようなものが見受けられました
その点ふくめ、私は知らないことが非常に多いようで、ご迷惑をおかけしました
120 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/10(水) 23:46:11.63ID:57hoitEO0
>>65
>>56
struct S {
int a[65536];
};
121 ◆QZaw55cn4c (ワッチョイ 6247-BZhk)
2019/04/10(水) 23:49:04.71ID:57hoitEO0
>>119
規格の中に現れる shall は十中八九「話者の意思」を示す
例文:You shall die.
超訳:「死ね!」
122デフォルトの名無しさん (ワッチョイ 8b8f-ofH2)
2019/04/11(木) 00:04:19.55ID:SPJO7XdY0
>>121
> 例文:You shall die.
> 超訳:「死ね!」

さすがにそれは…

日本語の文章の方に "shall" は書かれてなかったもんで把握、と
示唆したつもりだったのですが、通じなかったようで、表現力につき反省する所しきりであります
123デフォルトの名無しさん (ワッチョイ d901-LJPv)
2019/04/11(木) 00:44:10.66ID:Nah1Abkj0
I shall return 0.
124デフォルトの名無しさん (ワッチョイ fb02-XGqV)
2019/04/11(木) 01:53:26.52ID:5ienNbe20
  *'``・* 。
  |     `*。
 ,。∩彡⌒ミ   *    みんなハゲにな~れ
+  (´・ω・`) *。+゚
`*。 ヽ、  つ *゚*
 `・+。*・' ゚⊃ +゚
 ☆   ∪~ 。*゚
  `・+。*・ ゚
125デフォルトの名無しさん (ワッチョイ 392d-XGqV)
2019/04/11(木) 07:54:50.71ID:YCq7KtVA0
>>118
4. 規格合致性
規格厳密合致プログラム(strictly conforming program)は,この規格で規定する言語機能及びライブラリ
だけを使用しなければならない(2)。さらに,いかなる未規定の動作,未定義の動作又は処理系定義の動作に依存する出力も生成してはならず,しかもどのような最低限の処理系限界も超えてはならない。

(2)規格厳密合致プログラムは,どの処理系でもサポートしているわけではない機能(附属書 F の中に例
がある。)を使うことができる。ただし,その機能を使うことができるのは,それが適切なマクロをもつ#ifdef 指令とそれに対応する#endif 指令とに囲まれている場合に限る。次に示すプログラム片がその例である。

#ifdef _ _STDC_IEC_559_ _ /* FE_UPWARD

が定義されている */

/* ... */

fesetround(FE_UPWARD);

/*

... */

#endif
126デフォルトの名無しさん (ワッチョイ 2969-5LTE)
2019/04/11(木) 09:09:31.46ID:AbBe4c020
RFCなんかである要請の強度( MUST SHALL MAY ) みたいに使う用語の縛りはない?
127 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
2019/04/11(木) 20:58:24.95ID:mnND5pqz0
>>122
あくまで私見ですが、現代英語では will に単純に置き換えられるような shall の使い方はもうありえなく、
shall を使うのは shall を使う必然性があるから、だから、shall は辞書でいうところの「意志未来」であり、したがって shall を訳出しないのは不誠実な訳だとどうしても私は感じてしまいます…
128デフォルトの名無しさん (ワッチョイ 8b8f-ofH2)
2019/04/11(木) 21:23:32.90ID:SPJO7XdY0
「英文読解」の場ではなかったので控えていたのですが

>>127
個人的には「こんなのを訳出させられた人は凄い」と思ってます

「原典は英語で日本語訳がある」もので「日本語訳が意味不明」の場合
原典で確認すると「訳出で明確ではない」部分が確認できるケースが多々あります

"shall" をどのように訳出するかは個人差ありますし
今回の箇所が「以前同じ文言があったので単純にコピペした」ものかどうかは確認していません


もちろん>>126さんが仰るように「強度の要請で助動詞を変える」ものもありえますが
C99の文書の場合は丁寧に "shall" の定義から書かれていますし、
何より "strictly conforming program" という表現は、明確に 4.5 での新情報です
129デフォルトの名無しさん (トンモー MM4d-Ouf2)
2019/04/13(土) 04:36:48.17ID:/Uq84pFNM
昔の話。
若い頃K&Rの日本語版を買ってきて読み始めて、
間違いというか
サンプルとしてよろしくない
ところを見つけていた。

それが7年後に役立って
沢山仕事が入ってくるようになった。

本はキチンと読みましょう!
130デフォルトの名無しさん (ワッチョイ 298f-Glgm)
2019/04/13(土) 12:55:05.18ID:hvrKDDfY0
>>129
面白そうな話の気もするが、抽象的すぎてよくさっぱりわからん。
せっかくだしもう少し詳しく教えて欲しい。
131デフォルトの名無しさん (ササクッテロ Sp85-Sq8Y)
2019/04/14(日) 04:54:50.50ID:jIyXk5jhp
You shall die.

日本語の古語にすると分かりやすい
汝死すべし

shallはべしに近い
132 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
2019/04/14(日) 05:55:46.19ID:AVvjfIV70
>>131
「べし」が二人称主語のときは「当然~するべき」「義務」をあらわすことが多いですね
ただしこの場合も、主観的な意見の場合・客観的な義務の場合の両方がありうるかもしれません
shall=べき、べし、というのはいい線いっていると思います
133デフォルトの名無しさん (ワッチョイ 597b-/1Ht)
2019/04/14(日) 06:22:08.07ID:JgI3yl/w0
日常会話や文学なら "You shall die." を「汝死すべし」と訳して
原文のもつ「お前死んだ方がいいよ」と「お前はいつか死ぬであろう」の
両方のニュアンス(他の解釈もあるかも)を残すってのはアリだと思うけど、
技術的な文章では、複数の意味に取れる書き方はしないでしょ。
翻訳の読者が欲しい情報も、原文がどちらを意図してるのか、だろうし。
134デフォルトの名無しさん (ワッチョイ 39ab-FipA)
2019/04/14(日) 06:41:56.55ID:Sc1FWDft0
shall
~するものとする。
135デフォルトの名無しさん (ワッチョイ 1301-EjgJ)
2019/04/14(日) 08:56:50.49ID:/sR0LrTu0
ISO9001の要求事項とか見たことないのか?
Shall: しなければいけない
Should: した方が良い
って訳すのは常識だぞ
136 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
2019/04/14(日) 09:36:41.79ID:AVvjfIV70
>>135
>>121 >>127 のとおり、shall は単純未来の可能性は捨て一律に意志未来に決め打ちしちゃっていいってことですね…
137デフォルトの名無しさん (ワッチョイ b952-XGqV)
2019/04/14(日) 09:43:00.26ID:zcg/ytHt0
英会話スレ
138デフォルトの名無しさん (ワッチョイ 298f-Glgm)
2019/04/14(日) 09:54:03.65ID:/V8zrPr00
一年程度だが海外で仕事した経験のある俺にコメントさせてくれ。
shallにとくに意味はない。日本語に訳すのは難しいが方向性でいえば
汝死ぬ(shallなし)

汝はねぇ死ぬよ(shallあり)
かな。
つまり特に意味はない。特に強調してるわけでもないけど、つまり断定か。
139デフォルトの名無しさん (ワッチョイ b952-XGqV)
2019/04/14(日) 10:09:12.15ID:zcg/ytHt0
余計分かりにくい
140デフォルトの名無しさん (ワッチョイ 1301-EjgJ)
2019/04/14(日) 10:38:07.79ID:/sR0LrTu0
>>136
未来とか関係ない
そうしないと規格に合致しねーぞって言うある意味条件だよ
141 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
2019/04/14(日) 10:50:12.57ID:AVvjfIV70
>>140
「意志未来」という言葉は辞書の言葉ですが、私の本意は >>121
つまり「規格」または「規格の書き手」が "You will die" という感情の含まれない淡白な表現を、それが実現するように強要する、それが "You shall die."
142デフォルトの名無しさん (ワッチョイ 298f-Glgm)
2019/04/14(日) 11:15:43.43ID:/V8zrPr00
いや、ほんとに意味はないんだよ。書き手がなんか気持ち悪いからshallつけてるだけでshall抜きでもかわらん。
willとかshouldに比べてshallどうとかじゃなくて、willとかshouldがなかったらどうかを考えるべき。
143デフォルトの名無しさん (ワッチョイ 695f-26O/)
2019/04/14(日) 11:36:05.15ID:xBNIHV910
そもそも他言語を日本語で正確に訳せるってのは幻想でしかないから
規格でshallやshall notについて扱いが明記されてる(C11なら4.1~4.2)以上それが全てでしょ
144デフォルトの名無しさん (ドコグロ MMbd-EjgJ)
2019/04/14(日) 11:56:00.83ID:CLAWTkIiM
>>141
だからお前さんの本意とかはどうでもいい
規格でのshall/shouldの解釈は
> Shall: しなければいけない
> Should: した方が良い
って訳すのは常識って話
145デフォルトの名無しさん (ワッチョイ 818f-ofH2)
2019/04/14(日) 12:01:14.41ID:El+pt49w0
>>128
> 「英文読解」の場ではなかったので控えていたのですが
(中略)
> C99の文書の場合は丁寧に "shall" の定義から書かれています


これ以上、「C言語のスレ」として、どんな話題あるんですか
「ANSI C(なりC90なり)」「C95」「C11」を持ち出すなら意味があるかも知れませんが?
146デフォルトの名無しさん (ワッチョイ 695f-26O/)
2019/04/14(日) 12:28:26.87ID:xBNIHV910
あと、そんなに辞書が好きならshallに「(法律・商業)~(すべき)である, ~(するもの)とする, ~のこと」ってあるからそれが一番近いと思うよ
147 ◆QZaw55cn4c (ワッチョイ d347-yqpC)
2019/04/14(日) 12:51:54.61ID:AVvjfIV70
>>144
その百人一首の上の句と下の句をつなげるように日本語と英語の一対一対応を増やしていくスタイルは、カルタが少ないうちはいいけれども腐るほど多くなったときに困りませんか?
でも、最終的には慣れればなれるほど自動的に丸暗記になるのだろうから(私も「you shall die =死ね」状態なのは事実)、語学に理屈付けは不要なのかもしれませんね…
148デフォルトの名無しさん (ワッチョイ 115f-XGqV)
2019/04/17(水) 17:36:41.54ID:LDzja3MF0
C95って何?
ああAMD1のことか、一瞬ぎくっとした
しかしあの文脈では、それを言うならC99だろ
149デフォルトの名無しさん (アウアウウー Sa5d-clLQ)
2019/04/17(水) 19:18:17.08ID:xaCKxF64a
C言語で、配列を渡すときは&付けなくていいとありましたが
scanf("%c", &array[i][j]);
このときに&つけなならんのはなんでですか

cだとつけるのか二次元配列だとつけなきゃならないのか(根本的にわかってないかも)
そこら変詳しくおしえてもらえませんか
150はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b3e-clLQ)
2019/04/17(水) 19:46:08.34ID:UWuCQ9XR0
>>149
配列は、条件を満たしたとき (というより条件を満たす場合の方が多いのだが……) にその先頭要素を指すポインタに型変換されるという特殊ルールがあるから。
配列 array を単に array と書いた場合には、 &array[0] に読み替えられると考えてもいい。
配列 array に & を付けて &array と書いた場合は「配列を指すポインタ」であって、「配列の先頭要素を指すポインタ」ではないことにも注意が要る。 (型が違う)

そのあたりのルールは歴史的経緯があってややこしいんだけど、この規則がないとそれはそれで記述がぐちゃぐちゃになるんでな……。
151デフォルトの名無しさん (ワッチョイ 09da-La48)
2019/04/17(水) 20:36:55.41ID:VoxdaNRv0
>>149

int array[2][2]と仮定すると、array[0][0]の型はint
scanf()は渡されたアドレスを書き換える関数なので必要なのはint *
152デフォルトの名無しさん (ワッチョイ 115f-XGqV)
2019/04/17(水) 23:51:24.14ID:LDzja3MF0
>>149
[]は、配列を、配列でなくす(要素にする)演算子だからだ
153デフォルトの名無しさん (ワッチョイ 0901-Ce13)
2019/04/18(木) 04:53:03.15ID:3hgPbfMt0
文字列とscanf
154デフォルトの名無しさん (ワッチョイ 697b-Xu0i)
2019/04/18(木) 06:35:48.92ID:gmBt4t3M0
文字列(Cでは'\0'終端のchar配列)を格納できる変数 char s[SIZE]; に対して、

文字列を格納したい場合は
scanf("%s", s); // 連続したメモリ領域 s[0], s[1], s[2] ... に格納
配列名 s は &s[0](配列の先頭要素へのポインタ)と、値と型が等しい

1文字だけ格納したい場合は
scanf("%c%c", &[0], &s[1]); // s[0] と s[1] に1字ずつ格納
&s[0] は s と同じだが、 &s[1] との対応から &s[0] と書く方が分かりやすい

「配列名が暗黙に先頭要素へのポインタに変換される」話と、
「何を操作しているかをソースの書き方で明瞭に表現しようぜ」って話と、
整頓されずに混乱してるんじゃないかな。
「Cでは“文字列”とは何か」も絡んでるかも。


それに加えて、2次元配列という、これまたCではやや微妙な問題が噛んでるし。
char array[ROW][COLUMN]; // charの2次元配列
char *array[LINE]; // charへのポインタの1次元配列
>>149 の質問では二次元配列と明記されてるから本質じゃないけど、
説明を厳密にしようとすると、触れないのは片手落ちになっちゃうよね。
& 演算子でアドレスを得るときの内部的な処理の周辺。
155デフォルトの名無しさん (ワッチョイ 555f-YIQo)
2019/04/18(木) 06:48:49.78ID:o0KoJkQh0
&[0]なんて構文ねえよ
よりにもよって、そんなとこtypoしちまったら致命傷だろうが
156154 (ワッチョイ 697b-Xu0i)
2019/04/18(木) 07:30:33.11ID:gmBt4t3M0
ありゃ本当だ。&[0] は誤りだね。ご指摘ありがとう。

誤: scanf("%c%c", &[0], &s[1]); // s[0] と s[1] に1字ずつ格納
正: scanf("%c%c", &s[0], &s[1]); // s[0] と s[1] に1字ずつ格納
157デフォルトの名無しさん (ワッチョイ d952-YIQo)
2019/04/19(金) 12:12:59.76ID:Nwj37sNi0
C言語ってarray[3]だけじゃなくて3[array]もできるんだね
[]が演算子って今更知った
158はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f63e-JNgg)
2019/04/19(金) 12:21:05.01ID:mypEidUJ0
>>157
array[3] は *(array+3) と等しい、構文糖であるということになっているので結果的にそうなった。
159デフォルトの名無しさん (アウアウウー Sacd-kBNU)
2019/04/19(金) 12:39:59.72ID:U46FCs4Qa
かといってそんな書き方してるプログラムはサンプルプログラム以外では見たことがない。
160デフォルトの名無しさん (ワッチョイ 193f-YIQo)
2019/04/19(金) 12:58:54.90ID:8C7kRl9M0
これとか
https://www.ioccc.org/2018/burton1/prog.c
161デフォルトの名無しさん (スップ Sd12-fGro)
2019/04/19(金) 15:31:03.70ID:y1N4KfNld
>>157
コレ好き。たまーに混ぜ込んでおいてレビュー担当迷わせるの楽しい。
162デフォルトの名無しさん (オイコラミネオ MM91-cxay)
2019/04/19(金) 16:22:40.20ID:t0MiT6LCM
>>161
作法違反で低評価になるだけじゃねw
163デフォルトの名無しさん (ワッチョイ 193f-YIQo)
2019/04/19(金) 16:50:40.06ID:8C7kRl9M0
スキルの使い途を間違えているな
弱い者いじめではなく生産に使え

チーム得点につながらない無駄なことをするやつを
上司は冷ややかに見ているぞ
164デフォルトの名無しさん (ワッチョイ b18f-fGro)
2019/04/19(金) 17:06:38.82ID:GSI3q7h60
初めて5[a]がOKなんだと知ったときの感動を思い出せ。そんな感動と興奮を仕事に散りばめてくれるエンターテイナーだよ。
165デフォルトの名無しさん (ワッチョイ b18f-fGro)
2019/04/19(金) 17:07:35.94ID:GSI3q7h60
buf[5[buf]]
166デフォルトの名無しさん (ブーイモ MMd5-M3sR)
2019/04/19(金) 19:15:23.29ID:g/tNuT86M
Cに配列なんて概念なくて、
配列宣言っぽく見えるのはポインタ宣言とallocaの構文糖だという
言語だったらよかったのに。
167デフォルトの名無しさん (ワッチョイ 193f-YIQo)
2019/04/19(金) 22:01:37.69ID:8C7kRl9M0
いや、それは困る
ポインタが指す先の実体は
いつかどこかで配列になれなきゃ話が発散してしまう
168デフォルトの名無しさん (アウアウエー Sada-aFPd)
2019/04/19(金) 22:17:39.05ID:jGjLpvILa
だから、これは配列ではないという結論になる
169デフォルトの名無しさん (ワッチョイ a901-HmQt)
2019/04/19(金) 23:18:20.25ID:UowN6RnT0
"0123456789abcdef"[n % 10]
170デフォルトの名無しさん (ワッチョイ 193f-YIQo)
2019/04/19(金) 23:34:23.62ID:8C7kRl9M0
アホ
n % 16だろうが
171デフォルトの名無しさん (ワッチョイ b18f-fGro)
2019/04/20(土) 00:07:20.17ID:WPUlIDDo0
>>169
つよい
172デフォルトの名無しさん (ワッチョイ 3602-YIQo)
2019/04/20(土) 01:30:17.77ID:2mEBnGIe0
早く配列になりたい
173デフォルトの名無しさん (ワッチョイ 69ad-61/s)
2019/04/20(土) 12:04:07.28ID:adBHY6Cw0
忙しかったものですから、ウルトラ亀レスで申し訳ありません。

もちろんK&Rは良い本だとは思いますが、
よくないところがあると書きましたら、「それどこですか?」
のような質問がきていたのですが、仕事に忙殺されてレスが遅くなりました。

例えば、K&Rのハッシュ探索のプログラム。
ソースを見ればバグがあるとすぐわかるはずです。
K&Rのソースは単なるサンプルです。
仕事で実際に使えるわけではありませんし、

吐き出すハッシュ値をチェックしてみてください。
そのソースをF社の東大卒のプログラマがパッケージに組み込んでしまい、
大きなバグを引き起こしました。
で、俺が呼ばれてソースを見た瞬間に原因がわかって直しました。
K&Rを読んだときに気が付いていたからです。

K&Rを読んだときに、気が付く人はすぐ気が付いていると思います。
自分で考える人です。
本当のプログラマです。
174デフォルトの名無しさん (スプッッ Sd12-fGro)
2019/04/20(土) 13:35:25.67ID:UeTDxeBdd
>>173
自分で考えるのが良いってのは、プログラマに限らずなんでもそうだよね。
その上で本当のプログラマとやらにもとめられるのは、考えて理解することよりバグを出さないテストを行う能力だと思うね。
考えてもミスる時はミスるし。
場数を踏んだプログラマは、もちろんちゃんと考えるけど、その上で自分の理解やコードを信じない。
ちょっと話が違うかな。
175デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/20(土) 18:04:05.64ID:YpwC1XIf0
>>173
それはK&Rのよくないところか?

K&RはCとはどんな趣旨のものかを紹介する本で
アルゴリズムを正確に教える本ではない

単にCの機能を説明するために例を挙げただけのナンチャッテコードを
いきなり本番環境に持っていった東大卒とかぬかすやる気のねえクズと
大きな事故に至るまで欠陥を検出できない会社の検証ルールの問題だろうが
176デフォルトの名無しさん (ワッチョイ 368c-HmQt)
2019/04/20(土) 18:21:44.59ID:rZAwW+3j0
在るプログラムを作るのは間違い。買うのが正しい。
177デフォルトの名無しさん (ワッチョイ 5587-imD6)
2019/04/21(日) 00:16:47.67ID:NOPBo00z0
買ったもの、存在するものが四角い車輪だけだったとしてもか?
178デフォルトの名無しさん (ワッチョイ 5e63-JNgg)
2019/04/21(日) 00:25:39.70ID:sE/qbOcV0
買ったもの、つまり売っているものは、自作したものよりも性能がいい
179デフォルトの名無しさん (アウアウウー Sacd-cxay)
2019/04/21(日) 05:49:28.91ID:HT/hFmaDa
Cできる人は(ここの住人のような)C++も当たり前にできるん?
180デフォルトの名無しさん (ワッチョイ 19ab-Gvo/)
2019/04/21(日) 06:09:41.42ID:znB8VhQa0
>>179
会社に今までC一筋20年くらいの人がC ++のプロジェクトに来たんだが使えなさすぎてクソワロタ
181デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/21(日) 06:45:11.14ID:XP3sT+Yd0
>>178
何も言うまい
破門だ
それだけだ
182デフォルトの名無しさん (ワッチョイ 12a5-GXKd)
2019/04/21(日) 08:31:58.96ID:nzBarAq00
もしかしてCのライブラリのソースコード全部読んでんの
アホじゃね
183デフォルトの名無しさん (ワッチョイ 69ad-61/s)
2019/04/21(日) 10:26:51.61ID:gW8lsVjX0
>>175
173です。
おっしゃるとおりです。
俺の言いたかったのは、まあそういう感じです。
K&Rの信奉者があまりに多いので
どゆふうに指摘していいのか困惑している次第です。

つまり、言語の紹介本としては良い本だと思いますけど、
それ以上ではない。
現在、英語版のK&Rしか私の本棚に見つからないけど、
PREFACEの15行目からは、
This book is meant to help the reader learn how to program in C.
と始まっています。
この部分、日本語版にはどのように翻訳されていたか失念しましたが、
まさに、そのとおりなのです。

しかし、ハッシュ値のところですけど、
あと数文字をコーディングするだけでまともなコードになるのに、
なぜしなかったのか?という疑問はあります。
184デフォルトの名無しさん (ワッチョイ b18f-fGro)
2019/04/21(日) 10:42:02.64ID:ZEQClH310
プログラマなんて正常な判断ができないような過酷な状況に追いやられることなんてよくあるし、想像の余地はいろいろあるな。
185デフォルトの名無しさん (トンモー MMd5-+96b)
2019/04/21(日) 10:51:08.83ID:MDootfcvM
>>179
Cを数年やってからC++を
やりましたけど
最初は全くわかりませんでしたよ。
C++に慣れるまで1年ぐらいかかったかな?
全く別の言語と思ったほうが
よろしいかと思います。
186デフォルトの名無しさん (アウアウエー Sada-aFPd)
2019/04/21(日) 11:08:55.42ID:gKcyDuy9a
Cでインターフェース・抽象性を意識したプログラムを書いてたらそんなに変わらんと思う。
ただ現実としては委譲を使ってたところから無理して継承に適応するために混乱することはある。現場で待っているのは神クラス。
187デフォルトの名無しさん (ブーイモ MMa6-ku7y)
2019/04/21(日) 12:18:59.87ID:+Seww2xKM
まるで別物と思うわ。
ただ仕事で使う分にはみなjavaと同程度の構文しか使ってないから、違いはさほどないと感じるかも
188デフォルトの名無しさん (ワッチョイ b18f-fGro)
2019/04/21(日) 13:49:17.56ID:ZEQClH310
仕事以外でC++使うなんてドMでしょw
189デフォルトの名無しさん (ラクペッ MM81-1KF1)
2019/04/21(日) 13:55:23.49ID:7uFZhwV3M
C言語で開発しているのも大概だけどなw
190デフォルトの名無しさん (ワッチョイ 09dc-YIQo)
2019/04/21(日) 14:18:53.79ID:P3URCDUY0
仕事以外でプログラミングすること自体がドMの極みw
191デフォルトの名無しさん (トンモー MMd5-+96b)
2019/04/21(日) 14:48:54.11ID:YKRN8m01M
34年間、ほぼ毎日プログラミングしてますよ!
定年になってもずっとやってると思います。
作りたいものが一杯有りすぎて体が2つ3つ欲しいです。
今、最も力を入れているのが人工知能です。
人類を滅ぼす悪魔のソフトを造るのが人生最大の目標です!
192 ◆QZaw55cn4c (ワッチョイ 7247-hooH)
2019/04/21(日) 15:58:12.64ID:MozNv5pX0
>>191
>人類を滅ぼす悪魔のソフト
これにはとても興味がありますね

「人類を滅ぼす悪のソフトウェア」
うーん、ぱっと思いつくところではテトリスとか…
193デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/21(日) 17:58:31.04ID:XP3sT+Yd0
>>183
全然わかってねえじゃん
あと数文字をコーディングすることが
Cの機能を説明するサンプルとしては邪魔だったら
その数文字をコーディングしねえのは当たり前だ

サンプルってのはS/N比が大事なんだよ
そこで伝えようとしていること以外のノイズは
徹底排除する必要があるんだ
194デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/21(日) 17:59:26.99ID:XP3sT+Yd0
>>191
おまえ自分が作ったプログラムの敵が未来からタイムマシンで暗殺に来るぞ
195デフォルトの名無しさん (ワッチョイ 368c-HmQt)
2019/04/21(日) 19:19:27.57ID:AjzRUWat0
脳波を検出して見たいVRを出してやるわ ==> 人類滅亡
196デフォルトの名無しさん (ワッチョイ 69ad-61/s)
2019/04/21(日) 20:04:10.03ID:gW8lsVjX0
>>193
初心者向きの本ですから真似する馬鹿もいるということを
想像すべきでしょうね。
おまえこそ馬鹿だな
想像力がゼロだ
笑えるぞ?
知ったかのクズだ
197デフォルトの名無しさん (トンモー MMd5-+96b)
2019/04/21(日) 20:08:24.68ID:YKRN8m01M
今どきCとか
K&Rとかで
能書きこいて
馬鹿ジジイにも
ほどがあるwww
198デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/21(日) 20:10:12.48ID:XP3sT+Yd0
>>196
「初心者」という隠れ蓑に逃げる馬鹿って、自己紹介か?
199デフォルトの名無しさん (ワッチョイ b18f-fGro)
2019/04/21(日) 20:48:49.16ID:ZEQClH310
>>197
イラッとするのはわからんでもないが、ここはC言語スレだからそんなこというのは荒らしだぞ
200デフォルトの名無しさん (ワッチョイ 7252-U8iM)
2019/04/21(日) 23:45:38.39ID:2X82VWTJ0
>>196
あの時代の初心者は今時の初心者と違って、大半はちゃんと自分で考えて自力で技術を習得していく姿勢があり、ただ教えてもらった通りにするだけのようなのは自然と落伍していったと思うよ。当時の想定する読者層にあった適切な内容だったろうと思う。
201デフォルトの名無しさん (アウアウエー Sada-aFPd)
2019/04/22(月) 00:28:58.76ID:1mQu6LUBa
単に裾野が広がってるだけで
202デフォルトの名無しさん (ワッチョイ 92ad-AoSc)
2019/04/22(月) 01:07:58.48ID:HMkHCtfr0
>>196
人の意見を聞く気がないなら
チラシの裏にでも書いてなよ

175にもあるけど
初心者の真似するバカのコードが
そのままリリースされる態勢を反省した方が前向き

あと何であの本に信奉者がいるのか
理解できない自分も
203デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/22(月) 02:24:36.97ID:RPRc4IKz0
>>200
当時のccが寡黙だったのが却ってよかったよな
なんで動かないのか自分の頭で考えるしかなかった
今どきのコンパイラは過保護で
落伍すべき者を引っ込み付かないところまで引きずっちまう
204デフォルトの名無しさん (トンモー MMd5-+96b)
2019/04/22(月) 08:39:06.04ID:29O1k2F2M
>>202
お前のような馬鹿な奴は
そのうち自滅するよ(笑)

お前は「おれ天才!」とか
思ってる低知能のクズだ
もっともたちが悪いクズ
205デフォルトの名無しさん (アウアウウー Sacd-kBNU)
2019/04/22(月) 10:09:04.63ID:y6AB5FtQa
>>179
いや、俺は使えない。

C++は30年ぐらい前にやろうとはしたが当時のPCでもワークステーションでも流行っておらず当然そのような仕事もなく、自分は主にUNIX関係の仕事だったので使う機会がほとんどなかった。

その後PCの方ではWindowsが流行ったが仕事はそのままなので変わらず、趣味ではWindowsでDelphi使ったりもしたがC++はほとんど手を着けず大雑把にしかわからないまま。

仕事はやがてLinux関係に移行するがそこでもC++が必要とされる事はなく現在に至る。趣味でJavaを覚えたりもしたが自分の仕事ではほとんど必要とされなかった。
今は趣味で Kotlin を覚えているところだが、C++については複雑化し過ぎたようなので今さらやる気は起きない。多分今後もやらないと思う。
Windowsプログラムを作る必要が出てきたとしても今ならC++なしで出来そうだし必要になるとしても局所的だろう。
206193 (ワッチョイ 0d5f-YIQo)
2019/04/22(月) 10:13:09.11ID:RPRc4IKz0
>>204
196の時点ではまだ僅かに技術的な話題に振れていたが
今度は100%罵倒のみ
とうとう落ちるところまで落ちたな
207デフォルトの名無しさん (アークセー Sx79-m+ec)
2019/04/22(月) 12:15:04.42ID:IrgyqU7Vx
>>179
MFCが流行ってたりC++Builderが流行ってた時にはそれなりに使う人口がいたと思うけど、過去メンテ以外で現在積極的に使ってる人は少ないかもね。
208デフォルトの名無しさん (オッペケ Sr79-45C/)
2019/04/23(火) 01:03:01.93ID:dZlKsmD/r
>>157
え?こんな書き方出来たの!?
初めて見た
[]が演算子??
そんなの今まで読んだ本にのってなかったよ!
209 ◆QZaw55cn4c (ワッチョイ 7247-hooH)
2019/04/23(火) 06:21:01.09ID:JSYnwir10
>>208
ioccc
210デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/23(火) 07:52:30.55ID:ITUqyUOr0
https://www.ioccc.org/
211デフォルトの名無しさん (ブーイモ MMb2-M3sR)
2019/04/23(火) 09:50:22.14ID:tEWsQxq+M
[]が演算子って常識じゃないのか?
どの優先順位表にも載ってるだろ?
212デフォルトの名無しさん (ワッチョイ 12a5-GXKd)
2019/04/23(火) 09:56:40.16ID:EYeaOvlg0
もちろんこういう書き方も出来るのが[]演算子と文字列リテラルの合わせ技

int wday = 2;
printf("%c", "SMTWTFS"[wday]);
213デフォルトの名無しさん (アウアウウー Sacd-JNgg)
2019/04/23(火) 11:04:29.35ID:lZSXa7efa
標準入力で最初に数字を入力して、その値だけ文字列を入力するのはどんな感じで書けばいいですか

3
asdf
qwert
sdfghg

こんな感じで最初の入力の値に合わせて配列を用意する?感じになるとおもうんですが
なにもひらめきまへん
214デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/23(火) 11:22:00.88ID:ITUqyUOr0
>>211
配列の宣言に使う[]は演算子ではない
直接宣言子の一部だ

意図的に演算子に似せてあるので
勘違いするのは無理ないが
演算子は式に作用するもので
宣言子に含まれる[]はこの定義に該当しない
215デフォルトの名無しさん (ワッチョイ 5e63-JNgg)
2019/04/23(火) 11:44:40.51ID:5E3fgZzA0
>>212
土日・・・
216デフォルトの名無しさん (アウアウエー Sada-aFPd)
2019/04/23(火) 11:54:58.53ID:mPLR84qwa
>>214
またおまえか
217デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/23(火) 12:32:49.10ID:ITUqyUOr0
>>216
何か用か?
218デフォルトの名無しさん (アウアウウー Sacd-kBNU)
2019/04/23(火) 15:59:59.72ID:gv0SOq8da
>>213
文字を入力するだけで変数に入れる必要がないなら getchar() で '\n' 三回読んだら終わり。
変数に入れる必要があるなら最初の値の分だけ char * を保持する配列を char ** に malloc() や calloc() 使って確保して、更に全要素を malloc() や calloc() 使って確保して、それに対して fgets() を繰り返す。
219デフォルトの名無しさん (ワッチョイ 6e7c-JNgg)
2019/04/23(火) 16:43:21.53ID:56NoAZCP0
>>215
土曜は日曜であり、全は一である。
220デフォルトの名無しさん (アウアウウー Sacd-kBNU)
2019/04/23(火) 17:41:00.23ID:gv0SOq8da
月月火水木金金
221デフォルトの名無しさん (ワントンキン MM62-o4pp)
2019/04/23(火) 20:20:58.69ID:i9di+stUM
おじいちゃん戦争はもう終わってるよ
222デフォルトの名無しさん (ワッチョイ a901-m+ec)
2019/04/23(火) 20:24:41.37ID:aEjNiIWC0
令和も戦争のない年号になると良いが、ちょっと雲行きが怪しいな。
223デフォルトの名無しさん (ワッチョイ 69ad-61/s)
2019/04/23(火) 20:44:52.15ID:k/LWg8++0
>>222
日本は戦争しないでしょ?
そして巻き込まれもしないと思う。

だって日本には軍隊がないんだもの。
自衛隊なんて銃もろくに撃てないへなちょこばかりだから。
224デフォルトの名無しさん (アウアウカー Sab1-aFPd)
2019/04/23(火) 20:56:24.90ID:XDXL3q34a
コンピュータ好きなオタクって勇ましいやつおおいよね
225デフォルトの名無しさん (ブーイモ MMd5-ku7y)
2019/04/23(火) 21:21:40.55ID:Dz3CEytOM
語尾によねをつけて同調を求めたがるのは左巻きの典型だよね
226デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/23(火) 21:58:52.95ID:ITUqyUOr0
俺は右巻きだが「よね」はよく使う
レッテル貼りは瞬時に反証される論議の中では自爆行為だ
しょーもね
227デフォルトの名無しさん (アウアウエー Sada-aFPd)
2019/04/23(火) 22:34:42.99ID:bUhZMb1va
やっぱり自信がないからコンピュータ好きになるのかな?
228デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/23(火) 23:06:00.81ID:ITUqyUOr0
断言できないおまえが自信ないだけだ(pgr
229デフォルトの名無しさん (ワッチョイ 3602-Mntl)
2019/04/24(水) 03:42:44.00ID:SZsIFAZx0
よね
230デフォルトの名無しさん (ワッチョイ 5e63-JNgg)
2019/04/24(水) 08:04:11.05ID:P2wnwvJc0
ICEデバッグしてるとき、とある変数の値をいくつか足し算して、別の変数に代入する関数で、
変数の内容同じなのに、結果が違う。。
最適化OFFにしてビルドしてる。
231デフォルトの名無しさん (ワッチョイ 5e63-JNgg)
2019/04/24(水) 08:05:24.40ID:P2wnwvJc0
その関数は、別の場所から2度呼んでて、1回目と2回目で結果が違う
計算に使う値は全く同じなのに
232デフォルトの名無しさん (ラクペッ MM81-1KF1)
2019/04/24(水) 08:51:50.10ID:zvRm4GUYM
>>230
自分の経験則で言えば、大抵は関数の処理途中で割り込み処理が発生してメモリかレジスタバンクを書き換えていると思う
233デフォルトの名無しさん (ワッチョイ 12a5-GXKd)
2019/04/24(水) 10:14:34.45ID:V3yGzJXe0
一回目から二回目の間で変数のどれかが書き変わってるに決まってんじゃん
234デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/24(水) 10:55:30.16ID:HTDgYDWT0
>>230
加算に使っているレジスタを割り込みで使いっぱしてね?
235デフォルトの名無しさん (ワッチョイ 0d5f-YIQo)
2019/04/24(水) 10:58:08.05ID:HTDgYDWT0
>>230
_Atomic使ってるか?
236デフォルトの名無しさん (アークセー Sx79-m+ec)
2019/04/24(水) 11:21:13.53ID:IysC1nu6x
>>230
ほぼ100%スタックのゴミ拾ってる。
237デフォルトの名無しさん (ドコグロ MM1d-R3jW)
2019/04/24(水) 12:37:12.74ID:AiHhhuXgM
まれにポインタ周りバグっててメモリー書き換えてるとか
てかICE使ってるならそこで止めて変数の中身確認しろよ
238デフォルトの名無しさん (ワッチョイ 12a5-GXKd)
2019/04/24(水) 13:14:34.92ID:V3yGzJXe0
ICE製造の過程でICEそのもののデバッグでもしてんじゃね
239デフォルトの名無しさん (ワッチョイ 3602-Mntl)
2019/04/24(水) 18:27:12.37ID:SZsIFAZx0
まずはアイスクリームでも食べて休むといい
よね
240デフォルトの名無しさん (ワッチョイ a901-m+ec)
2019/04/24(水) 18:45:45.47ID:JD7HGNH40
ここ20年ほどフルICE使ってないなぁ。
未だにあるんだろうか?
241デフォルトの名無しさん (ワッチョイ 5e63-JNgg)
2019/04/24(水) 20:00:32.37ID:P2wnwvJc0
230だけど、俺の見当違いでした。
インプットの変数の値が違っていたので、当然足し算の結果も違っていたというオチ。
ICEデバッグだと変数を表示するとメモリの中じゃなくて表示した時点で割り当てられたレジスタの値を表示するので、
変数としては変わってないはずなのに他で書き換えられるので逐一変わって混乱していた。

ICE初心者でしたw
242デフォルトの名無しさん (ワッチョイ 3669-hooH)
2019/04/24(水) 22:16:06.15ID:03JhFb4B0
デバッグ中に最適化を抑制するのは間違いではないと思います。
慣れてくると最適化したままでもある程度推測できるようになりますので、
リリースオプションでICEを使用することの方が多くなるかもしれません。
243デフォルトの名無しさん (ワッチョイ 19ab-Gvo/)
2019/04/24(水) 22:18:24.10ID:lwqMqFKi0
CPUぶっこぬいて差し替えてやるやつ?
244デフォルトの名無しさん (ラクペッ MM81-1KF1)
2019/04/24(水) 22:41:36.06ID:W4WRMDmVM
ぶっこ抜くと言うよりターゲットボードのCPUの代わりに専用のソケットを実装して専用プローブで接続する
PCなどと違って組み込みのSoCにソケットなど無いのでぶっこ抜いて差し替えるなど無理
245デフォルトの名無しさん (ワッチョイ 9201-R3jW)
2019/04/24(水) 23:07:42.00ID:gVrMWpFh0
>>243
20年前のICEならそうなんだろう
>>244
JTAGの話か?
ソケット云々の前にGHzオーダーのCPUだと信号引き出すなんてとても無理
246デフォルトの名無しさん (アウアウウー Sae9-MRXB)
2019/04/25(木) 00:33:17.24ID:1oTSGFU/a
scanf("%d%d%d", &a, &b, &c);
こうまとめて入力するのをfgets使うとどうやるの?

fgets(s, sizeof(s), stdin);
sscanf(s, "%d", &a);

このセットをループで三つまわすしかない?
一行でやる方法あるんかな
247デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/04/25(木) 00:56:36.76ID:WntZOZIYa
いや、1行中に入ってるなら同じじゃないか?
行の区切りとか要素の区切りとか細かい話はあるけども
248デフォルトの名無しさん (ワッチョイ 5d5f-KxX0)
2019/04/25(木) 03:18:03.15ID:rmDyF6iV0
またfgets教か
マジいやらしさがカルト教団さながらだ
249デフォルトの名無しさん (ワッチョイ 1b02-1PXK)
2019/04/25(木) 04:21:17.20ID:D6NtakiX0
>>246
なんというか、ほとんど答えが上に書いてあるかのような質問だな・・・

sscanf(s, "%d%d%d", &a, &b, &c);
250 ◆QZaw55cn4c (ワッチョイ 6347-HJzg)
2019/04/25(木) 05:17:53.53ID:6xUIrXDu0
>>246
http://2chb.net/r/tech/1434079972/55
251デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/25(木) 21:00:37.28ID:E+TyVG800
>>244
そんな感じ
CPUじゃなくてROMだけど
就業先で当たり前のようにICE使わせて頂いてるけど、お値段見てビックリ・・
252デフォルトの名無しさん (アウアウウー Sae9-MRXB)
2019/04/26(金) 10:01:13.22ID:EJ4BH9nCa
>>250
商売すんなや…
253デフォルトの名無しさん (アウアウウー Sae9-tnqD)
2019/04/26(金) 10:28:55.76ID:YRtkzMZRa
>>252
それって商売になってるのか?
普通に公開されてるが。
254デフォルトの名無しさん (ワッチョイ 1dda-zd//)
2019/04/26(金) 13:15:14.86ID:0jspcAl20
商売のための宣伝だろ
255デフォルトの名無しさん (アウアウウー Sae9-tnqD)
2019/04/26(金) 14:06:27.08ID:YRtkzMZRa
そうなの?何の宣伝になってるのか全くわからんのだが。
256デフォルトの名無しさん (ワッチョイ 1dda-zd//)
2019/04/26(金) 14:27:22.39ID:0jspcAl20
誰もアクセスしない隔離スレなんで
時々こうやって宣伝して引っかかるカモを呼び寄せようと
257デフォルトの名無しさん (アウアウウー Sae9-tnqD)
2019/04/26(金) 14:36:01.95ID:YRtkzMZRa
元々有償でプログラム作るスレとして作ったスレだったんだろうけど結局誰もそんな風には使ってなくてただのプログラム発表の場になってるよね?

ま、しかし、5ちゃんのような掲示板で稼ぐのは無理があるよなあ。それ専用のサイトなら可能だろうけど。
258デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/27(土) 10:20:19.39ID:H+/AGAV+0
既存をちょっと修正してほぼデグレのテストというスタイルの俺には、
要望に応じて1から新しいプログラムを組む人を尊敬する
修正は修正で既存への影響の面でそれなりのノウハウは要るにしても
259デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/27(土) 10:42:26.45ID:e+ce++rA0
>>258
むしろ俺は人の作ったワケワカメなコードを文句も言わずメンテしてる人はすごいと思う。
260デフォルトの名無しさん (トンモー MM79-LqAG)
2019/04/27(土) 16:22:24.62ID:W91FG5LxM
>>259
文句を言わずに、というより
文句を言わせずに、だと思う。

俺は奴隷だったので
よくわかる。

会社辞めて派遣になって
気分すっきり!
な~んの責任もないのに
年収1000万だもの

派遣辞められません!
261デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/27(土) 17:56:34.08ID:H+/AGAV+0
>>260
派遣でそれほどの能力があったら独立して2000万は稼げるのでは
262デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/27(土) 18:25:28.46ID:H+/AGAV+0
派遣でそれだけ貰える程のスキルがあるってことは、
C言語だと本当に低レベルのデバイスの制御からビジネスロジックの
設計からお任せできるレベル
独立すべきでしょう
263デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/27(土) 19:19:15.66ID:e+ce++rA0
ハードの設計から組み込みソフトはもちろんWindows、Android.、iOSのアプリ、DBもWebもゼロから設計できるスキルがあったらどこに行ったらそんな高級取りになれるでしょうか?
264デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/27(土) 19:26:07.70ID:mTDcTDsb0
火事の現場
265デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/27(土) 19:26:19.83ID:H+/AGAV+0
コンサルレベルでもなかなか
266デフォルトの名無しさん (ワッチョイ 1b02-KxX0)
2019/04/28(日) 03:02:09.70ID:IQfIs7rY0
自分で開業した方が良さそうな感じもするが、そうなると営業力も必要になるな。

まあでも Android や iOS アプリの場合は営業力あまりなくても世界中に売れれば儲かる事がある。
電卓アプリでこんな風に稼いでいる人も居るし。
https://appmarketinglabo.net/calculator-1100man/
これは世界での需要がどのぐらいあるかとプログラムが簡単かどうかはあまり関係ないってことでもあるかな。
需要がないものだと作るのが大変なプログラムでも売れなくて稼げない。苦労と儲けは無関係。
267デフォルトの名無しさん (ワッチョイ 1b8c-B2tE)
2019/04/28(日) 07:50:35.97ID:3xnz0I0C0
大半の自営業は開発費半分を前金でもらいとんずら。
268デフォルトの名無しさん (トンモー MM79-LqAG)
2019/04/28(日) 13:24:06.83ID:JRRKtJTbM
>>267
日本に前金払うところなんてないから。
たからデスマになる
269デフォルトの名無しさん (ワントンキン MMa3-sCra)
2019/04/28(日) 20:30:30.58ID:I/cjvEXhM
そんなことすれば詐欺として警察に追われる身になる
270デフォルトの名無しさん (ワッチョイ 5d21-ynyp)
2019/04/29(月) 21:07:19.95ID:2RjR17Kk0
Linuxでシリアル通信のソフトを作成しています。
http://codepad.org/L4BLwgAQ

コマンドを送信すると、相手が応答電文を返してくる仕様なのですが
write→readでは、うまく受信できないようです。
teratermで同じ電文を投げると、受信できるので
このソースが悪いのだと思っています。
投げて、受けるというのを上手くやるにはどうしたらいいでしょうか。
お助けをよろしくおねがいします。
271デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/04/29(月) 21:50:17.89ID:AbuAGGh6a
socatパクってみれば
272デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/29(月) 22:10:00.81ID:atpu4K080
>>270
とりあえずwrite()の戻り値とread()の戻り値が-1でないことから確認しようか
273デフォルトの名無しさん (ブーイモ MM43-CH6N)
2019/04/29(月) 22:16:47.11ID:zdawGwopM
>>272
writeはバイト数の13が返ってきます。
readはここで止まります。ずっと待ち?状態になるようで、ctrl+cで抜けるしかありません。
274デフォルトの名無しさん (トンモー MM79-LqAG)
2019/04/29(月) 22:19:37.72ID:dHR449jcM
Cっていいよね。
シンプルで全て見えてる。
キチンと組めば性能も素晴らしく、
ソースも分かりやすい。

ま、馬鹿が使うと酷いことになるから
馬鹿には触らせたくない!

馬鹿にはJavaがお似合いw
275デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/29(月) 22:40:41.10ID:atpu4K080
>>273
そもそもtioが未初期化
33行目にtcgetattr(fd, &tio)とかを入れて
276デフォルトの名無しさん (ワッチョイ 8552-KxX0)
2019/04/29(月) 22:45:19.28ID:InnqLHhB0
Cのスレで用途も構造も違うJavaとか出してくるあたり相当頭悪いんだと思った
277デフォルトの名無しさん (トンモー MM79-LqAG)
2019/04/29(月) 23:27:52.24ID:dHR449jcM
ああ
Javaわかんね―馬鹿か

Cしかわからん馬鹿院生って感じかな(笑)
278デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/30(火) 01:53:25.72ID:AMBMNz/t0
なんでスレがカテゴライズされているかも理解出来ない
279デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/30(火) 08:20:44.73ID:QYNECMA50
Cが分からないってやつはコンピュータの基礎の基礎が理解できてない。
いきなりプログラミングから学ぶからそうなる。
280本田宗一郎 (トンモー MM79-LqAG)
2019/04/30(火) 09:04:16.26ID:UDRlTLQRM
Cしかできない奴はCを評価できない

そんな簡単なこともわからない

院生くずれのバカニート(笑)
281デフォルトの名無しさん (ワッチョイ cb34-KxX0)
2019/04/30(火) 10:31:21.97ID:FQfKtoeU0
いや評価はできる

この世の森羅万象すべてを知り尽くしているやつなんかいない
みんなそれぞれ何らかの「井の中」にいる
そこからCならCがどう見えるかを述べているのを
聞いた者がどう捉えるかの問題だ

自分の「井の中」のほうが相手より大きそうだからって
天狗になるやつこそ成長の止まった将来性のないやつだ
282デフォルトの名無しさん (トンモー MM79-LqAG)
2019/04/30(火) 11:10:18.88ID:UDRlTLQRM
できね―よ馬鹿
283デフォルトの名無しさん (ワッチョイ 1b8c-B2tE)
2019/04/30(火) 11:15:16.30ID:/zD1IEOE0
OSなしで書ける言語はC?
284 ◆QZaw55cn4c (ワッチョイ 6347-HJzg)
2019/04/30(火) 11:39:21.09ID:iYYZTFZo0
>>283
C といえども OS なしではなにもできません
285デフォルトの名無しさん (ワッチョイ cb34-KxX0)
2019/04/30(火) 11:40:42.65ID:FQfKtoeU0
フリースタンディング環境のことだろ
ソース入力やビルドをOSなしでって意味ではなく
286デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/04/30(火) 11:43:53.69ID:vCAloE34a
ハンドコンパイル・アセンブルするってことだろう
287 ◆QZaw55cn4c (ワッチョイ 6347-HJzg)
2019/04/30(火) 11:45:02.69ID:iYYZTFZo0
>>285
C だけではなにも出来ないのではないでしょうか、最低限アセンブラの部分が数%はあるでしょう?
288デフォルトの名無しさん (ラクペッ MM91-jdJy)
2019/04/30(火) 12:02:29.80ID:FWtA2SNeM
クロス開発ではホスト環境とターゲットは別
小規模組込み開発ではターゲットにはOSと呼べるものが存在しない場合もある
289デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/30(火) 12:17:23.14ID:QYNECMA50
>>287
CPUによってはリセットエントリから100%C言語だけで記述できるよ。
290デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/04/30(火) 12:28:19.12ID:AMBMNz/t0
書くことはできる
紙と鉛筆さえあれば
291デフォルトの名無しさん (ワッチョイ 1dd2-DhOR)
2019/04/30(火) 13:23:52.39ID:JZ+qVZdl0
OS無しで動くプログラムが書ける言語はC?
ってことだろうな
292 ◆QZaw55cn4c (ワッチョイ 6347-HJzg)
2019/04/30(火) 13:41:26.32ID:iYYZTFZo0
>>289
へえ!そうなんですか!多倍長演算をCで書くときキャリーフラグはどう扱うのですか?
293デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/30(火) 14:20:29.60ID:Cm5pFeJF0
>>292
15bit+キャリーみたいな形で扱えばいいだけ
294 ◆QZaw55cn4c (ワッチョイ 6347-HJzg)
2019/04/30(火) 15:00:43.85ID:iYYZTFZo0
>>293
それは私もやりましたが、悲惨なコーディングになりました、キャリーを使えるのにそれを無視してCですべて記述するとか、ありえない選択だと考えています
http://2chb.net/r/tech/1434079972/51
295デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/30(火) 15:58:16.84ID:QYNECMA50
>>294
そりゃビットサーチとか場合によってはCPUの機能を使ったほうが速かったりシンプルに書けるケースもあるけど、それはそれでまた別の話。
それを以てC言語で書けないとは言えないよ。
296 ◆QZaw55cn4c (ワッチョイ 6347-HJzg)
2019/04/30(火) 16:35:39.02ID:iYYZTFZo0
>>295
まあ java だけで「やってしまった」OSというのもありますから…多分 JNI を使っているとは思いますけど…
C 言語だけで全部やってしまう、というのはありえなく、例外 exception の実装に有用な setjump(), longjump() ですら、CPU を叩かずにはいられない内容ですから、世に蔓延する「C言語マンセー」は、その機会があればなんとしても叩かずにはいられないのです
297デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/30(火) 17:01:36.40ID:QYNECMA50
>>296
もしかしたら貴方と私は違う思想の元で仕事してるのかも。
JNIはAndroidぐらいでしか使ってない、てかそもそもJavaを使う機会が少ないような業界の人です。
なんちゃってtry~catchのためのsetjmp系はそれでもやっぱりアセンブラを使わないC言語の範疇内な訳であって、やっぱりC言語否定の理由にはならんとです。
唯一、OSを記述する際のタスクプリエンプトだけはC言語だけで記述できず悪魔のスタック操作とコンテキスト切り替えが必要なのでアセンブラが必須だとは思いますが。
298デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/30(火) 17:54:15.66ID:Cm5pFeJF0
>>296
別にsetjmp, longjmpなくてもプログラムは組めるし
Memory Mapped I/Oならデバイス制御もC言語だけで組めるだろ
299デフォルトの名無しさん (ワッチョイ 2d5f-zd//)
2019/04/30(火) 18:21:31.59ID:hc3e5D+80
プログラミング素人です。
scanf関数について質問なのですが、
char str[10];
for(i=0;i<5;i++){
scanf(“%c”,str[i]);
}
として、「abcd」と入力された場合、
str[0]=‘a’
str[1]=‘b’
str[2]=‘c’
str[3]=‘d’
str[4]=‘¥’
str[5]=‘0’
となるのでしょうか?
str配列の0~3番目にa~dが格納されていることはprintfでわかりましたが、4以降は何が格納されているのか自分で調べる方法がわかりません…
300さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ b501-VySk)
2019/04/30(火) 18:41:15.22ID:lzNlO/OB0
>>299
C/C++では文字は整数なんだ。整数として出力して、アスキー表を参照すれば、文字がわかるはず。
301 ◆QZaw55cn4c (ワッチョイ 6347-HJzg)
2019/04/30(火) 18:44:59.71ID:iYYZTFZo0
>>299
鋭い質問ですね…手元でいろいろ試していますが、今ひとつ事情がつかめないでいます
https://ideone.com/l3ZslT

ideone と x64/gcc/cygwin でも結果が変わってしまいます…
302さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ b501-VySk)
2019/04/30(火) 18:51:26.51ID:lzNlO/OB0
str[5]以降は決まってないから調べてもあまり意味がない。多分ゴミデータ。
303デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/30(火) 19:09:43.34ID:QYNECMA50
>>299
str[4]='¥0'
それ以降はゴミ
304デフォルトの名無しさん (ワッチョイ 65b3-6xWl)
2019/04/30(火) 19:30:23.83ID:CZMZfk1L0
>>303
str[4]は'\n'じゃね?
305デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/04/30(火) 19:42:59.90ID:ZdpyyptHa
まあ改行入れたら改行ですね
306デフォルトの名無しさん (ワッチョイ a373-MRXB)
2019/05/01(水) 00:16:42.15ID:pM2+GGDK0
自作関数内のエラー時にerrnoに値をセットするのってマナー違反ですか?
307デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/05/01(水) 00:27:56.20ID:Lv+8X8zta
入れられるもんなら入れてみろ
308デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/05/01(水) 01:10:53.33ID:dGckAS/m0
信長 入れられないなら殺してしまえそのプロセス
秀吉 入れられるまで仕様変更を待とう
家康 俺が直してやる!
309306 (ワッチョイ a3c5-MRXB)
2019/05/01(水) 02:42:38.43ID:LlVhs4fx0
https://ideone.com/JeNdi9
こういうエラー処理を書きたいんですが
310デフォルトの名無しさん (アウアウウー Sae9-lbZQ)
2019/05/01(水) 13:05:10.79ID:Vm5gAWGsa
>>305
str[4]が改行コードの\nだとして
str[5]は\0にはならないの?
311デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/05/01(水) 14:38:29.13ID:pGaFGHQ6a
>>310
それは明らかになりません。
null文字入れるのは大抵はこっちの役目です。
312デフォルトの名無しさん (JP 0H13-1PXK)
2019/05/01(水) 14:41:59.38ID:yF2N0E1tH
>>304
%c は空白文字は入らないのでは?
313デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/05/01(水) 15:19:37.49ID:pGaFGHQ6a
%cは文字は全部入る。
受け付ける文字をはっきりさせたいなら[]使うのがよい。
314デフォルトの名無しさん (ワッチョイ 7fda-51S+)
2019/05/02(木) 12:01:07.73ID:oq2ExZVd0
printf()のペアっぽいからという理由で
scanf()を使わせる初心者本をこの世から駆逐すべき
315デフォルトの名無しさん (ワッチョイ 0663-Cg3z)
2019/05/02(木) 12:52:42.24ID:Yg4L14jR0
使い方を熟知している人が使う分には問題ないが
「良い子はマネをしてはいけません」の典型だな
316デフォルトの名無しさん (ワッチョイ 62a5-PJjo)
2019/05/02(木) 13:24:17.15ID:+EePt9KB0
初心者はただ値が入力できりゃ楽しいんじゃね

ついでにscanfはかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる
317デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/02(木) 15:41:08.09ID:jQNzLmJja
昔のマイコン的なものだと暴走したりしてなお良い。
core dump してるようじゃまだまだ安全過ぎる。
318デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/02(木) 19:38:22.59ID:lQcGaGZC0
たしかにscanfが危険なものだと知った時にどうやってfgetsに置き換えるか考えたの思い出した
319デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:18:22.90ID:H376nx5x0
>>287
その数%のアセンブラの部分を、おまえさんは「OS」と呼ぶのか?
320デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:20:29.21ID:H376nx5x0
>>314
scanfの仕様をロクに調べもせず自分の頭で考えもせず
どっかの受け売りを初心者に吹聴する無能老害こそ
この世から駆逐すべきだろうが
321デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 21:21:11.50ID:TaSBDpemM
>>319
ヨコからスマンけど
そゅ意味じゃないのが
理解できないほどの馬鹿は
ここにくるべきではない
322デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:22:02.02ID:H376nx5x0
>>315
「よい子は真似をしてはいけません」と言われる芸当をやっているプロになろうって人には当てはまらない
323デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:24:27.49ID:H376nx5x0
>>321
おまえさんこそ>>283からの話の流れを読んでるか?
人を馬鹿呼ばわりした自分の発言に責任を持てよ
324デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:25:23.96ID:H376nx5x0
匿名掲示板だから逃げたければ逃げられるが
おまえさんの人間性の問題が変わるわけではない
325デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 21:34:15.84ID:TaSBDpemM
馬鹿丸だし(笑)

論文ゼロの院生くずれ馬鹿ニート
という雰囲気プンプンだな(爆)
326デフォルトの名無しさん (ワッチョイ f7dc-ahOC)
2019/05/02(木) 21:53:25.96ID:TlCaXbcx0
院生とかめっちゃ高評価じゃんw

俺には大学にコロコロコミックを持ってきて、全ての人間が敵に見えて毎日発狂してた同級生の江○君と被ってしまう。
頭はすこぶる良いんだけど、頭が弱い残念なアイツの雰囲気がプンプン
327デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:55:19.32ID:H376nx5x0
学歴コンプレックスまる出しだな
頭隠して尻隠さずw
328デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 22:04:26.88ID:TaSBDpemM
院生の意味が理解できない馬鹿(笑)
329デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 22:05:27.60ID:TaSBDpemM
学歴など無意味
馬鹿は馬鹿(笑)
330デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/02(木) 22:06:18.25ID:BLoepDOP0
>>319
何を言いたいのか意味不明w
331デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 22:22:28.19ID:H376nx5x0
効いてる効いてるw
突然論文ゼロとか言い出すカモは扱いやすすぎ
332デフォルトの名無しさん (アウアウクー MM9f-I0oC)
2019/05/03(金) 00:28:15.71ID:ykdjIw3IM
#include <stdio.h>

int main(void){

remove("http://2chb.net/r/tech/1554171817/";);

return 0;
}
333デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/03(金) 03:22:53.97ID:l9gwftmb0
文字列を消しても実態が消えないのでは
334デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/03(金) 07:52:51.95ID:EnpL9vkxM
Cできるけどアセンブラできない、
ってのはCもできないってことだ。
335デフォルトの名無しさん (ワッチョイ 06d2-R0y6)
2019/05/03(金) 09:31:51.08ID:Adh7HeMA0
アセンブラからCに行ったらアセンブラでやってたアルゴリズムがCで表現できなく、非常にもどかしくて・・・
336 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/03(金) 10:16:06.44ID:ZD3cPA9Q0
>>335
それは初耳、いや、どういうのに手こずったのか参考に教えていただけませんか?
337デフォルトの名無しさん (ワッチョイ cb02-R0y6)
2019/05/03(金) 17:51:44.54ID:VHrwonhY0
出来る出来ないっていう話なら、基本Cできるんじゃないかな。
CPU固有のブルック転送命令とかそんなのを除いて。
(それすら別にできるけどね。)
1命令でできてたことがめんどくさくなるってものならあるかも。
338デフォルトの名無しさん (ワッチョイ 0663-Cg3z)
2019/05/03(金) 18:09:15.33ID:Mu7G7jjV0
アセンブラで作るにしてもでもアルゴリズムで実装しているならCでも出来るんじゃないの?
339デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/03(金) 18:10:41.96ID:3HjiUXGl0
プラットフォーム依存の問題は言語じゃなくてコンパイラより下が解決するわけでさ、それをできると言っていいならなんでもできると思うよ。
340 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/03(金) 18:51:30.00ID:ZD3cPA9Q0
>>335
一つ思い出しました、キャリーフラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね
ローテートとかシフトとか
341デフォルトの名無しさん (ワッチョイ 4240-ahOC)
2019/05/03(金) 19:20:32.29ID:Qo5d3PXm0
>335
キャリーフラグが無くてオーバーフロー/アンダーフロー判定が面倒だとか、
ビットシフトはあってもローテーションが無いとか。
ジャンプ命令使うとパイプラインが初期化されるからなるべく使うなと聞いたのに
逆汗見たらジャンプしまくってるじゃないかとか。
8/16bit時代のアセンブラは1バイト、1ステート削って処理速度稼いでたんで
上記の差を補う処理が無駄に思えて・・・。
かといってインラインアセンブラ使うのはなんか違うと(インライン使うと最適化されないとも聞いてたし)。
それならアセンブラでCから呼べる関数書いた方がすっきりするとか。

20世紀時代のことだ。
342デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 19:43:11.87ID:EWn4tN7a0
マシン語でコード書いてるときはオンレジスタ思考なのに
当時のCはデフォautoつまりオンメモリなので
ああ、やはりマシン語よりは速度が落ちる言語なんだな
コンパイラ言語とインタプリタ言語のような違いが
もう1つあるんだなって思っていた
343デフォルトの名無しさん (ワッチョイ d701-LHRJ)
2019/05/03(金) 20:21:30.59ID:B4eLqFJ00
スパゲッティなものを書いてるならともかく、真っ当にサブルーチン化してたら必要悪としてレジスタ志向は早々に諦めてたわ。
局所的に最適化するならそれは別問題として解決してた。
344デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 20:27:04.09ID:EWn4tN7a0
構造化なんか眼中になかったね
速度こそ純粋で美しい法律だった
345デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/03(金) 20:31:26.00ID:4Ii/FXBd0
>>340
> 一つ思い出しました、キャリーフラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね
それはアルゴリズムと言うより実装の話かと
346デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 20:52:43.47ID:EWn4tN7a0
PC9801のVRAMを1ドットスクロールさせるのなんか
キャリー使って書いてたのをキャリーなしで書き直させられるのは悲しかった
347 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/03(金) 21:19:31.21ID:0u/4Gvfl0
>>345
>アルゴリズムと言うより実装の話
いや、それは不思議な分類だと思います、DES/AES などはローテート・シフトがそのままアルゴリズムになるのでは?
348デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/03(金) 22:27:22.12ID:4Ii/FXBd0
>>347
そのアルゴリズムにキャリーフラグなんて出てこないでしょ?
349デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 22:32:04.75ID:EWn4tN7a0
アルゴリズムという特定ワードに囚われて用語の定義の話に逸れていくつまらん展開だ
350デフォルトの名無しさん (ワッチョイ cb5f-zb9T)
2019/05/04(土) 04:19:37.51ID:qzgt3pmZ0
文字列入力を受け付けて、それをstrという変数に代入する…というプログラムを書きたいのですが、知りたいことがあって以下のような条件を課させていただきます。

・for文を使い、その中でscanf(“%c”,str[i])により1文字ずつ文字をstrの各配列に格納していくこと
・文字数は最大50文字までとし、たとえば「abcd」などのように4文字であった場合も、abcdと入力→Enterが押された時点で、その文字列をstrに代入して、その4文字を表示して完了とする
・if文を使ってそれを実現すること


#include<stdio.h>
int main(void){
int i,str[50];
for(i=0;i<50;i++){ //入力処理
scanf(“%c”,str[i]);
}
for(i=0;i<50;i++){ //出力
printf(“%c”,str[i]);
}
}

このコードだと、「abcd」と入力してEnterを押しただけでは、出力されません。(50文字入力されるまで入力受け付け状態から遷移しない)
どのように改良すればよいでしょうか?
351デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/04(土) 05:12:15.70ID:Yh80Q70x0
入力される度に文字のチェックしてみれば。
352デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/04(土) 05:15:36.04ID:eVIwB2YR0
>>350
宿題は自分でやれ
353デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/04(土) 05:21:50.50ID:I31OC90J0
何故誰もscanf("%c", str[i])に突っ込まないのか
354デフォルトの名無しさん (ワッチョイ 177b-VjZg)
2019/05/04(土) 05:39:39.99ID:RAMEL17i0
>>350
「入力処理」のforループで、「50文字入力されたら」を判定してるけど、
もう一方の終了条件「Enterが押されたら」を判定してないからでしょ。
1文字受け取るごとに、Enter '\n' ならループを抜ける、をやらなきゃ。
というわけで >>315 に至る。

>>353 このスレッドの伝統かと。>>299 以下を参照のこと。
あちらはスルーしたのに、こちらでツッコむのは抵抗感がある、みたいな。
355354 (ワッチョイ 177b-VjZg)
2019/05/04(土) 10:20:54.58ID:RAMEL17i0
誤: というわけで >>315 に至る。
正: というわけで >>351 に至る。

315 を確認したところ、まるっきり見当違いでもなかったね。
356デフォルトの名無しさん (アウアウウー Sabb-H3I8)
2019/05/04(土) 10:47:02.91ID:lguQ1Ppja
>>354
>>299は見逃していたなあ。空目だな。
357デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/04(土) 11:41:09.49ID:yT0QTmUja
>>350
もし宿題が本当に scanf(“%c”,str[i]) と書いてある場合は先生が間違えてるので「 scanf(“%c”, &str[i]) ですよね?」とツッコミを入れてみると良い。

そうすると君はできる学生と思われて成績が上がるるか、または気に入らんやつと思われて成績が下がると思う。
358デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/04(土) 13:40:22.89ID:tOD9kuurM
そういえば東大では今でも
C言語が必修なのか?

まじ時代遅れの馬鹿だと思ってたら、
Cしかできない在日の馬鹿教員が
いるのだとか
359デフォルトの名無しさん (ワッチョイ 0663-Cg3z)
2019/05/04(土) 13:51:43.16ID:k+B84EwL0
学歴コンプレックスの人?
360デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/04(土) 14:16:41.02ID:vXlxEQ1E0
参照型とか出てくるのにそもそも参照がなにかも理解出来てないにわかオブジェクト指向が増えるよりよっぽどマシよ
なんの言語とは言わないけども
C言語なら理解しなければ先に進まないから
361 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/04(土) 14:19:50.76ID:7fnHNdb20
>>358
C が分からないようでは話にならないのでは?
362デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/04(土) 14:47:16.31ID:tOD9kuurM
>>361
トヨタ系の研究所には
Cの分かる研究員がもういないのです
研究には全く支障がないです

組込みやってる高卒やFランが
Cをやるべきでしょ?
363 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/04(土) 14:55:00.73ID:7fnHNdb20
>>362
それは多分ありえない話でしょうね、なぜならば C は計算機言語の基本で、各種書籍ではアルゴリズムの記述に C を使うものが大半ですから
本も読めない人がトヨタの研究者とか、あなたの空想の話なのでは?
364デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/04(土) 15:22:49.59ID:Yh80Q70x0
アルゴリズムの勉強はpythonがいいよ
365 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/04(土) 15:25:54.07ID:7fnHNdb20
>>364
python で二分木の実装とかできますか?
366デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/04(土) 16:05:03.07ID:Yh80Q70x0
>>365
できますん
367デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/04(土) 16:07:19.80ID:LvYM7SOrM
>>365
そんなのはFランの仕事でしょ?
368デフォルトの名無しさん (ワッチョイ bb87-ahOC)
2019/05/04(土) 16:13:20.77ID:8Q7/PMC20
論文の次はFランか、哀れだなw
369デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/04(土) 16:49:12.48ID:vXlxEQ1E0
やっぱり相当コンプレックスの塊で頭悪いんだろうなぁ
370 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/04(土) 18:28:05.43ID:7fnHNdb20
>>366
本当ですか?ポインタがない python では無理なんじゃないですか!?
371デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/04(土) 18:39:36.30ID:yT0QTmUja
pythonって参照ないの?
372デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 18:43:01.66ID:gINSNBZZa
真面目に言うとpythonは基本的に全部参照渡しだね。
参照したものを直接いじれるかというとそうでない場合があるけども。
373 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/04(土) 19:05:41.64ID:7fnHNdb20
>>372
なるほど、ではユーザー定義の型は自動的に参照扱い、すなわち Java みたいなかんじなんですね
であれば苦労すれば二分木を実装できますね、大変失礼いたしました
374はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/04(土) 19:18:51.61ID:21Of2ELD0
>>370
Python に限らず動的型の言語の多くは変数に値を入れるんじゃなくて、
オブジェクトと変数の間に束縛 (bind) を作ることで成り立ってる。
辿ることでオブジェクトを参照するんだ。 実質的にポインタだよ。 むしろポインタしかない。

(小さい値 (小さい数値とか文字とか) はアロケーションを抑制するためにそのまま
ワードに突っ込むような最適化をする言語 (処理系) もあるけども。)
375 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/04(土) 20:22:17.94ID:7fnHNdb20
>>374
Java ならば boxing でヒープにとる値とスタックに取る値とをある程度(意識せずに)変換できますね(そういう C/C++ like な意識が皆無ではない、という意味)
ただし、二分木に関してはいいたいことがまだあって、「本物の」二分木は二重ポインタ(ポインタのポインタ)が必要なのではないか?と思っています
さすがに Java には二重ポインタはない、そんな用途の言語じゃない
Python や ruby にはあるのでしょうか?
376デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 20:55:58.63ID:cZ5M6KFWa
二重ポインタを何に使う?
Cだと引数でノードのオブジェクトを返す辺りか?
377 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/04(土) 21:01:18.06ID:7fnHNdb20
>>376
ノードを追加する関数add の引数を
add(&root, Object)
ってするでしょ?&root ってことは、struct *node のアドレス、すなわち struct node ** が必要なのではないかと
378デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 21:43:09.25ID:cZ5M6KFWa
>>377
わからんが、Cでも戻り値でポインタを返せばいいんじゃないか?
379はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/04(土) 21:46:08.02ID:21Of2ELD0
>>375
参照を持つオブジェクトへの参照を持てるんだから、事実上の二重ポインタとして使えるよ。
380デフォルトの名無しさん (ワッチョイ bb87-ahOC)
2019/05/04(土) 21:57:52.42ID:8Q7/PMC20
二重までは使うんだよなあ
三重をなぜ使わないか、説明できるか?w
381デフォルトの名無しさん (ワッチョイ d701-o1CB)
2019/05/04(土) 22:09:57.55ID:RtDHzLy60
ガベージコレクションと裸のポインタって相性が悪いような
382デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/04(土) 22:15:35.23ID:eVIwB2YR0
>>378
2個返したい時とか、戻り値は成功かどうかのコードを返したいとか
383デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 23:07:46.23ID:cZ5M6KFWa
道はいろいろあると思うが、せっかくあるんだから構造体使って皆くるんじゃえと思うよ。
384デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/05(日) 00:20:41.66ID:nwgMKC8Ra
微妙にスレチのように思うので続きはJava初心者のスレでやった方が良いのではないか?

まあ人に聞かなくても Java を勉強して Java の API のソースを読めばそういうのをどうしているのかは何れわかると思うけどね。
385デフォルトの名無しさん (ワッチョイ e22c-4xtZ)
2019/05/05(日) 00:21:53.66ID:tvdtPjB+0
Ruby での、Jaggy 配列は、

ary = [ ] # 配列の配列

ary.push [ "a" ]
ary.push [ 1, 2 ]

p ary #=> [["a"], [1, 2]]

C/C++ 以外のたいていの言語では、数字などのprimitive 以外は、すべて参照。
(primitiveは参照にするよりも、その場所へ値を埋め込んだ方が速い)

外側の配列は、内側の配列の参照を持っている。
内側の配列は、(primitive以外の)各要素の参照を持っている

primitive以外は、コピーしても参照がコピーされるだけで、値はコピーされない。
つまり、同一インスタンスを指す。
別のインスタンスは作られない

new されていなければ、インスタンスは作られない。
代入しただけでは、参照がコピーされるだけ

これを、shallow copy (浅いコピー)と呼ぶ(同一インスタンス)。
new して、別のインスタンスを作ることを、deep copy (深いコピー)と呼ぶ(別のインスタンス)
386デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/05(日) 00:37:14.86ID:RPhfdkos0
>>385
馬鹿は消えろ
387 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 08:54:51.63ID:3EWrT4Pn0
>>378
それは無駄な代入が発生するでしょう?
388 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 09:01:10.92ID:3EWrT4Pn0
>>380
余裕で三重ポインタなどほいほいと使いますよ
http://2chb.net/r/tech/1434079972/26
void prep_exe(char *sttp, char **path, char ***argv)
char **argv を使うことが理解できるのだったら「argv のアドレスを渡す」みたいな場合に渡された関数側では三重ポインタを使うことになるでしょう
389デフォルトの名無しさん (ワッチョイ 9b6d-ahOC)
2019/05/05(日) 09:04:36.94ID:hoO1o10+0
>>388
それcodepadだろ? 使いさえすればいいって話じゃなくて
390 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 09:08:14.08ID:3EWrT4Pn0
>>389
無論使いさえすればいい、というわけではなく、この例では小さなシェルを実装しており、シェルのパイプ機能を実装するのに三重ポインタを使ったのです
391デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 09:21:39.41ID:2T/oydys0
>>387
引数を介すと代入が減るってこと?
392 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 09:47:47.39ID:3EWrT4Pn0
>>391
代入命令が増えるという意味ではなく、「同じ値」なのに代入してしまう、という作業が >>378「戻り値でポインタを返」す方式の書き方だと不可避です
393デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 10:05:07.93ID:bV6goPu10
呼び出しの前後で、ptrの値が 同じかもしれない、場合よっては変わるかもしれない関数

ptr = func1(ptr, opt); と func2(&ptr, opt);

うーんどっちも使うな…
394デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:28:11.80ID:2T/oydys0
>>392
じゃあ、一時変数に代入しとけば?
395 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 10:29:23.05ID:3EWrT4Pn0
>>393
前者
>ptr = func1(ptr, opt); 
は初心者用で、>>392 のいう無駄な代入が含まれています、二重ポインタがわかるのなら後者にするべきです
396 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 10:30:14.08ID:3EWrT4Pn0
>>394
シンプルな記述ができるのに、わざと複雑な書き方にするのは問題なのでは?
397デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:32:32.58ID:2T/oydys0
>>396
じゃあ、戻り値そのまま使えば?
mallocは使うんでしょ?
398 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 10:33:46.84ID:3EWrT4Pn0
>>397
その場合無駄な代入が発生しますね、>>393 がいい例を示しています
399デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 10:35:01.06ID:bV6goPu10
エラー伝達に NULL を使う realloc は即代入するとお漏らししちゃうし
あれ、なん引数書き戻しにしなかったんだろう? 素朴な疑問
400デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:35:57.12ID:2T/oydys0
>>398
代入されているのかされていないのか、わからない方が良いってこと?
401デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 10:36:08.55ID:bV6goPu10
×あれ、なん引数書き戻しに
○あれ、なんで引数書き戻しに
402デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:41:29.60ID:2T/oydys0
>>399
正直、nullが来た時点で終わってるしなあ…。
まあでも一時変数使うのが筋だと思いますよ。戻り値でも引数でも同じこと。
403 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 11:25:51.36ID:3EWrT4Pn0
>>400
ちがいます
代入するのか代入しないのかは malloc() したかしなかったかにかかっています。
代入は malloc() したとききだけにすればよく それが >>393 の func2(&ptr, opt); の書き方
一方 >>393 ptr = func1(ptr, opt); は malloc() したかしないかにかかわらず代入を行います、これは無駄な代入を含みます
404デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:31:24.71ID:2T/oydys0
>>403
だから、関数の内部的に何してるのかわからんのが良いってことじゃない?
405 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 11:37:36.53ID:3EWrT4Pn0
>>404
着目点はそこにはありません。関数による記述で内部を隠蔽するのが目的ではありません
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…①、にかかっており
>>393 ptr = func1(ptr, opt); は①を記述できる可能性が皆無、一方
>>393 func2(&ptr, opt); は①を記述できる可能性がある、というわけです
406デフォルトの名無しさん (スプッッ Sd22-ph/v)
2019/05/05(日) 11:38:01.66ID:orE8GGyod
>>393
前者の方が好ましい
2重ポインタなんて最適化の妨げになるものは、それしか使えない場面でのみ使うべき
407 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 11:44:46.28ID:3EWrT4Pn0
>>406
非常に大きな二分木(ノートが1億個)があって、そのはるか先端で malloc() してそこで代入すればいいだけなのに、
その先端から root に戻ってくる途中の30箇所ほどで、軒並み全部のノードで「必要のない無駄な代入」をするのですか?

>それしか使えない場面でのみ使うべき

この二分木を実装する、というのがまさしく「それしか使えない場面」なのですよ
408デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:45:42.03ID:2T/oydys0
>>405
つまり、後者でmallocしてnullが返った時はそれを代入するってことですか?同じじゃん。
409デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:47:06.67ID:2T/oydys0
>>407
二分木のコストってのは比較であって代入じゃないと思いますよ。
まあアルゴリズムの一般論としては。
410 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 11:53:15.92ID:3EWrT4Pn0
>>408
>>393 func2(&ptr, opt); では
malloc() して null が返ってきたときは、例えば何もしない、ということはできますね

でも >>393 ptr = func1(ptr, opt);
は、malloc() しようがしまいが代入してしまいますね、これは「やる必要のない無駄な代入」が含まれることになり、好ましくないです
>>393 ptr = func1(ptr, opt); の記述法は二分木を最初に習うときに、この記述法で理解を促すという意味では有用であっても、
いつまでもこれで書いているようでは進歩していない、もっといえば怠惰である、と考えています
411 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 11:55:53.32ID:3EWrT4Pn0
>>409
しかし無駄な代入を放置してよいというわけではないでしょうね、削れるところは削るべきです
単純二分木よりさらに改良された平衡二分木(AVL木、赤黒木等)を紹介する書籍では、最初から >>393 func2(&ptr, opt); で記述されていますよ
412デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:57:28.30ID:2T/oydys0
>>410
じゃあ隠蔽しろという話なんじゃないの?
関数の中で成功失敗を判定して外にnullは返すな入力時のままにしとけ、という関数。
413デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:58:36.27ID:2T/oydys0
>>411
代入回数比較してよ。頼むよ。
414 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 12:05:45.99ID:3EWrT4Pn0
>>412
ちがいますね
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…①、にかかっています。

>>413
>>407 に書いておきました、1億ノードの二分木にて各ノードが最適に配置されているとして、削ることのできる代入は malloc() 一回に対して 30 個の代入になります
>>393 ptr = func1(ptr, opt); では 1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
代入のコストは大したことがない、にしても、アルゴリズムを正確に記述できないのは問題ですね
洗練された記述とはそういうものではないでしょうか
415デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 12:48:51.19ID:2T/oydys0
>>414
いや、mallocがnull返した時はいれないんでしょ?
成功か失敗かじゃないの?呼んだかどうかじゃなくて。
416デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 12:52:54.83ID:2T/oydys0
仕事では戻り値に成功失敗が入ってオブジェクトのポインタは引数に来るような関数は使うけどさ、
結局どっちもチェックするよ。信じられねえもんな。
417 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 13:12:30.38ID:3EWrT4Pn0
>>415
malloc() が成功したか失敗したかは、今の話には関係ありません
今関係があるのは、
malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…①
です
418デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 13:42:25.11ID:2T/oydys0
>>417
じゃあ、絶対代入するってことだろうよ。
引数に渡したポインタに。ポインタを。
419 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 13:51:49.48ID:3EWrT4Pn0
>>418
malloc() したときは代入しますよ、でも malloc() しないときは代入なんかせず、そのまま呼び出し元に返るだけです
それが>>393 ptr = func1(ptr, opt); 方式と絶対的に違うのです
420デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 13:55:35.88ID:2T/oydys0
>>419
戻り値はvoidってこと?
421 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 14:02:45.71ID:3EWrT4Pn0
>>420
>>393 func2(&ptr, opt); 式なら void もありえます
422デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 14:08:06.37ID:2T/oydys0
>>421
いや、必須なのでは?
423 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 14:11:38.90ID:3EWrT4Pn0
>>422
いいえ、実際に実装するならば、エラーを伝達する手段として返り値を準備することは大いにありえるでしょうね
void が必須ではありません
必要な代入なら使えばいい、でも
>>393 ptr = func1(ptr, opt);
方式は不必要な代入があり、単に二重ポインタを使用して記述すればこれは除去できるので、
>>393 ptr = func1(ptr, opt);
を書くのは問題だし、これを書く人は頭を使っていない、と判断します
424デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 14:33:08.37ID:bV6goPu10
異常は戻りをNULLにするパティーンで 
 node_t *func3(node_t**, ...)

正常だった場合に ptr = func3(&ptr, opt); と書けるしw (無駄な努力の可能性
425デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 14:34:34.27ID:bV6goPu10
って書いたけど鼻から悪魔踏みそうな嫌らしさがあるな…
426 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 15:03:58.07ID:3EWrT4Pn0
>>424
そのパターンでは、異常値 NULL をうっかりノードに登録してしまうと、そのノードより下が浮いてしまい危ないですね、ま、異常系をミスったままリリースしてしまうことも私はよくやりますけど
427デフォルトの名無しさん (アウアウカー Sa47-3iRC)
2019/05/05(日) 15:42:24.13ID:8x8syc+Fa
>>423
いや、必須でしょ?代入消せるんだから。消さないと。
428 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 17:54:28.38ID:3EWrT4Pn0
>>427
言葉尻を捕らえて攻めたつもりになっているようですね
「すべての代入を消去できる」なんていってませんよね

>>393 ptr = func1(ptr, opt);

この代入は不要な代入を含むので、

>>393 ptr = func1(ptr, opt);

は不適当な書き方だ、とこれまで首尾一貫して述べているのです
429デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 18:13:23.13ID:bV6goPu10
423の文意は
「void が必須なわけではなく
 引数と同じ型のポインタを戻すことはせずに、別の目的の何か、たとえばエラーコードとして int を戻す
 なんてのはアリでしょ?」
ってことだと思うけど
430デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/05(日) 18:42:49.42ID:dOx23ziba
returnしちゃだめでしょ
代入が駄目ってくらいだから
431デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 18:56:43.02ID:bV6goPu10
「代入不要なケースでも代入記述を要求するのはよろしくない」スタイルの延長だと
戻り値評価も破棄可能ならそうすべき って話か
432 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 19:00:00.98ID:3EWrT4Pn0
>>430
どんな代入もだめだとは主張していませんね…

>>393 ptr = func1(ptr, opt);
方式は不必要な代入があり、単に二重ポインタを使用して記述すればこれは除去できるので、
>>393 ptr = func1(ptr, opt);
の代入が駄目だとはいってきていますけれども
433はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 19:03:30.45ID:TxpPZKKr0
>>407
434はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 19:13:46.27ID:TxpPZKKr0
あ、ごめん、ミスって文章を書く前に投稿してもうた。

>>407
あらためて確認するが、この代入を「無駄」としているのはアルゴリズムの表現の上では不要なことをしているという
意味の上での無駄であって、性能上の無駄という意味ではないんだね?
そして、アルゴリズムを正しく表現する上では (ときには二重・三重のも含めて) ポインタが必要だと。
435 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 20:16:09.59ID:3EWrT4Pn0
>>434
>性能上の無駄という意味ではないんだね?
性能の上で分析するとなると、間接参照にてデータをロード、ストアするコストと値をストアするコストを天秤にかける、ことになりますね
なるほど、その点を言いたくて、でも言いたくなくて、しつこく絡んでいたのですか…

私は二重ポインタでの表現の方がトータルでお得だ、とは思ってはいますが、これまで表に出ている私の発言は、あえてそこには踏み込まず(だって性能の話はうかつに断言できませんからね…)、
おっしゃるとおり「アルゴリズムの表現の上では不要なことをしている」に留まっています
436はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 20:57:45.43ID:TxpPZKKr0
>>435
たとえば数学上の表記なら「A=1 であり B=1 のとき A=B は真である」と「1=1 は真である」には何も差が無い。
途中で名前を付けるのは人間に対する便宜であって、無駄な「操作」は存在しない。

代入が無駄たりうるのは C のパラダイムだからなので、
「C で表現するにはポインタが必要だし、代入では不適当だ」は事実であっても
「ポインタが無い言語では表現できない」というわけではないよ。

C の低級な世界でまともな意味論を表現しようとするのがそもそもの間違いだろう。
437 ◆QZaw55cn4c (ワッチョイ 8247-R0y6)
2019/05/05(日) 21:02:18.49ID:3EWrT4Pn0
>>436
>「ポインタが無い言語では表現できない」というわけではないよ。
それは理解しています、なぜなら
Java での二分木の実装を検討したことがある(探せば2ch過去ログにあるかもしれません)
Java にはポインタはありませんが、実装できるかできないか、といえば「できる」の方に入りますね
438はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 21:54:26.85ID:TxpPZKKr0
>>437
そこまでわかっているのなら、
「代入しない」と「同じ値を代入しなおす」が意味論的に等しいということがどうしてわからないんだ。
439デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:34:40.25ID:RXFRr1FQ0
C言語のプログラム内で確保していいメモリってユーザー空間の仮想メモリ上限いっぱいまで取っていいの?
複数の変数a, b, c, ・・・の値を表示するだけのプログラムを時系列に並べて考えてみるんだけど

0. 実行ファイルを起動する
1. 32bitプロセスが生成される ←たとえば32bit windowsだとユーザー空間とカーネル空間で計4GBの仮想メモリが確保される
2. int a; ←仮想メモリ(1で確保されたユーザー空間)上にaが確保される
int b; ←上に類似
int c; ←上に類似
・・・・・(複数の変数の宣言やprintf関数が続く)

こんな感じなんだろうけど
上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
440はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 23:38:14.20ID:TxpPZKKr0
>>439
いいけど、もっと効率的な方法があるならそれに越したことは無いっていうそれだけの話
441デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:41:29.98ID:RXFRr1FQ0
簡潔に書くと
安全のためにはどこまでメモリを使っていいの?
そのメモリの大きさはユーザー空間の上限と同じなの?
という室問なのに長くなってしまた
442デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:47:50.76ID:RXFRr1FQ0
>>440
ありがとう
ただ初心者なので効率性を目指すにはきつい部分が出てくる
そうなるとメモリの残量を監視する、つまり残量の値を取得する必要があるわけだけど
これは一般的にはwindowsのAPIを使うのが普通なの?
(そんなものがあるのかは知らない)
443デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/05(日) 23:52:54.47ID:RPhfdkos0
>>442
スタックとヒープという概念は知ってる?知らなければまずそれを調べてみて。
それと、初心者なら効率を求める前に正しくメモリ管理を扱えるようになる必要があるが、その時点で残量は気にする必要はないぞ。
444デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:59:16.82ID:RXFRr1FQ0
FIFOだとかナントカ程度にしか。
「~~領域」という幾つかの用語がOSとかの環境が違っても
全く共通のものなのかよく分からないから正直スルーしてる
445デフォルトの名無しさん (ワッチョイ e22c-4xtZ)
2019/05/06(月) 05:38:27.60ID:wr9bFPpT0
>>414
>1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
2^10 = 約1,000 千
2^20 = 約1,000,000 百万
2^30 = 約1,000,000,000 十億

>>441
Java VM の初期値は、256MB とか。
それよりも大きいと強制終了されるが、起動時に、512MBに設定できる

たぶん、4GB の仮想メモリでも、ユーザー空間3GB・カーネル空間1GBぐらいだろ

それ以上のデータは、動画みたいにstream になる。
バッファサイズ、例えば、1MB を読んでは捨てて、次の1MB読んでは捨てて、の繰り返し

読み込んだデータを使ったら、すぐに捨てないといけない。
ユーザー空間に、空きを作らないといけない
446デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/06(月) 06:20:53.21ID:Geq8Gq1G0
>>445
いつものRubyバカだろ。いい加減な知識でC言語のメモリの話題に口を挟むのはやめろ。この板になれている者からすれば「またいつものか...」ですむが、初心者にとっては害悪でしかないから消えろ。
447デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/06(月) 06:25:32.64ID:Geq8Gq1G0
>>444
組み込みとかの特殊な環境では例外もあるけど、基本的には環境によらずC言語で必須の概念だからスルーせずにちゃんと調べるべき。
448デフォルトの名無しさん (ワッチョイ 06d2-R0y6)
2019/05/06(月) 08:39:59.60ID:s1ulBxFy0
>439
>上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
他のプロセスがスワップ起こして重くなるから止めろって言いたい。
449デフォルトの名無しさん (ワッチョイ 2f05-73UM)
2019/05/06(月) 10:14:49.95ID:Om5TJBQR0
>>447
うん調べてみるよ
ありがとう

>>448
そんな視点もあるのか
他のプロセスも考慮しないといけない
思ったよりも数段以上やっかいだな
450デフォルトの名無しさん (ワッチョイ 2f05-73UM)
2019/05/06(月) 10:19:59.43ID:Om5TJBQR0
>読み込んだデータを使ったら、すぐに捨てないといけない

データをガンガン読み込んでいくようなプログラムだと「使ったらすぐ捨てる」のが鉄則か
451デフォルトの名無しさん (ワッチョイ d701-LHRJ)
2019/05/06(月) 10:40:24.77ID:F7BEaxMm0
>>439
ユーザープロセスなのでカーネル空間はマッピングされないよ。プロセス管理のための領域はカーネル空間に多少は確保されるとは思うけど、それはユーザープロセス用ではないし。
ページサイズの関係で効率的に確保できるかどうかは別問題だけど仮想メモリ領域いっぱいまで取れるか否かと言えば取ることはできる。
実際にそんなことしたらスワップ発生しまくりでまともに動かないとは思うけど。
452デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/06(月) 12:43:21.39ID:53K/0wkW0
実装としてはだいたいcopy on writeだから、確保だけだったら特に問題発生しないよ
453デフォルトの名無しさん (ブーイモ MM3e-iz+S)
2019/05/06(月) 16:08:26.90ID:95XsbNbMM
>>451
どのOSなのか明示してくれ。
少なくともlinux 32bitは3GB以降はkernel空間にマッピングされてるだろ
454デフォルトの名無しさん (ワッチョイ 4321-QjK4)
2019/05/06(月) 21:20:46.06ID:lSipB+Y80
配列にある16進数アスキーを
整数型変数に数値として入れたいのですが、上手くいきません。
valの値をprintfで出力しても「0」になります。

rbuf[5]の中身は「0xDC」
rbuf[6]の中身は「0x18」でした。(printfで出力してみたところ。)


#include <stdio.h>
unsigned char sbuf[255] = {'\0'}; //送信バッファ
unsigned char rbuf[255] = {'\0'}; //受信バッファ
unsigned char work[10] = {'\0'}; //ワークバッファ
unsigned int val = 0; //値

work[0]=rbuf[5];
work[1]=rbuf[6];
work[2]='\0';
sscanf((char *)work, "%x", &val);

よろしくお願いします。
455デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/06(月) 21:29:36.69ID:v87Zm/5a0
sscanf の %x は、文字列で記述された数字+アルファベットの列を 16進数として抜き出す
sscanf("10", "%x", &val); → val の値は 10進で16 となる

0xDC 0x18 の並びから どういう整数値にしたいんだろうか?
456454 (ワッチョイ 4321-QjK4)
2019/05/06(月) 21:38:34.55ID:lSipB+Y80
>>455
回答ありがとうございます。
val=0xDC18
という感じで取り出したいです。
457デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/06(月) 21:40:18.62ID:v87Zm/5a0
>>456 それなら
val = rbuf[5]; じゃあかんの?
458454 (ワッチョイ 4321-QjK4)
2019/05/06(月) 21:50:08.40ID:lSipB+Y80
>>457
ありがとうございます。そういうことか・・・
下記で上手くできました!

val= rbuf[5];
val = val << 8;
val |= rbuf[6];
459デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/06(月) 21:54:12.13ID:v87Zm/5a0
>>458 解決してよかったね
0xDC 0x18 の並びから
(最低でも32bit長の整数)0xDC18 が欲しかったということだね
460デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/06(月) 21:55:43.20ID:v87Zm/5a0
(俺がちゃんと >>456 を読めてなかった説 val=0xDC18 って書いてるやんけw)
461デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/06(月) 22:06:19.06ID:NYoOX9LAa
>>454
> rbuf[5]の中身は「0xDC」
> rbuf[6]の中身は「0x18」でした。(printfで出力してみたところ。)

だったらそれはASCIIではないよね。
462デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/06(月) 22:08:02.81ID:NYoOX9LAa
などと、ゆっくり書いていたら既に解決か・・・
463デフォルトの名無しさん (ワッチョイ 4321-QjK4)
2019/05/06(月) 22:09:16.82ID:lSipB+Y80
>>460
>>461
ありがとうございます。
お陰様で解決できました。
勝手にASCII、文字列と勘違いしていたのがよくなかったです。
464デフォルトの名無しさん (ワッチョイ e22c-4xtZ)
2019/05/07(火) 06:48:35.98ID:/Z9tG+PY0
ASCII は、7 bit キャラだろ

欧州文字コードなら、8 bitとか
465デフォルトの名無しさん (ワッチョイ 23d2-R0y6)
2019/05/07(火) 15:31:36.79ID:gGAOuhJk0
BASIC時代 文字→文字コード変換関数が ASC(文字) だったな。
466デフォルトの名無しさん (ワッチョイ d701-LHRJ)
2019/05/08(水) 20:11:19.53ID:w7dyIR3e0
逆はCHR$(コード)だったな。
467デフォルトの名無しさん (ワッチョイ 9b6d-ahOC)
2019/05/08(水) 22:02:13.36ID:LqpjdKM80
「なんで朝潮?」と思ってしまった当時の俺w
468デフォルトの名無しさん (ワッチョイ 7f7c-gMth)
2019/05/09(木) 08:32:10.12ID:IVg2TokP0
わらってよりとも というのは、当時の人気番組名をもじったものだよ
469デフォルトの名無しさん (ワッチョイ 9f35-AilG)
2019/05/09(木) 12:40:11.38ID:J26JobOx0
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚
470デフォルトの名無しさん (ブーイモ MM9b-f8ez)
2019/05/09(木) 20:40:23.75ID:axmpki24M
「はじめてのC」なら買う
471デフォルトの名無しさん (ワッチョイ ff63-gMth)
2019/05/09(木) 22:18:17.14ID:fgRKvhjn0
その本の名前、買うときに恥ずかしいw
472デフォルトの名無しさん (ワッチョイ 9f79-ScLU)
2019/05/09(木) 23:03:35.49ID:vEdVh+9n0
質問です
文字列の配列
char matrix[Y][X]を関数に引数として渡して、渡した先の関数でtxtファイルに出力したい。
YとXはその時々によって違う値でmatrixは文字列の配列だけど1行ごとに'\0'が入っていないとき、渡した先の関数でYとXをどうやれば参照できますか?
例えば
matrix = {{‘a’, ‘b’, ‘c’}, {‘d’, ‘e’, ‘f’}};
みたいな配列です
473デフォルトの名無しさん (アウアウエー Sadf-NBbm)
2019/05/10(金) 00:00:40.06ID:IBOrEgMWa
X(配列のサイズ)を共有してやればいいんじゃないかな
474デフォルトの名無しさん (ワッチョイ ff63-gMth)
2019/05/10(金) 00:14:05.05ID:Ojl9YgLP0
>>472
matrixのアドレスと共にX、Yの値を渡さないと無理
475デフォルトの名無しさん (ワッチョイ bf02-XC4S)
2019/05/10(金) 03:11:16.60ID:+vHN15fT0
>>472
https://qiita.com/Hiraku/items/babed27bc1d750c2e12d
476デフォルトの名無しさん (ワッチョイ 9f79-ScLU)
2019/05/10(金) 09:26:09.21ID:bwAvNWKg0
>>474
やっぱり配列のサイズ一緒に渡さないとだためですか
477デフォルトの名無しさん (アウアウウー Sa1b-wdoq)
2019/05/10(金) 09:44:04.32ID:0Zlxa6bHa
そう。他の言語だと裏でこっそり渡すようになっていたりしてプログラムに書かなくても動くかも知れないが、Cはそこまでやってくれない。
478デフォルトの名無しさん (ワッチョイ ff69-PnGR)
2019/05/10(金) 10:05:05.80ID:hw8N8wYC0
標準関数も一次元配列ですら大きさを渡してるからねー
(文字列は '\0' が終端である という了解を持って大きさを不要にしているだけ)
479デフォルトの名無しさん (スップ Sdbf-63hD)
2019/05/10(金) 12:34:03.34ID:zZfQYrbwd
>>475
URL張って解党した気になってるアスペルガーのカスがスレ来んな
480デフォルトの名無しさん (ワッチョイ bf02-y0Vo)
2019/05/10(金) 23:50:49.39ID:svzEPJh90
え?読んでもわからなかったの?
481デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/11(土) 07:43:24.28ID:glRpLuyC0
確かにつまらんね
リンクだけとかググレカスとか
せっかく掲示板にいるのに対話がないのは
482はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth)
2019/05/11(土) 09:55:06.58ID:GtXmrqj00
>>481
リンクを示すのも、ググればわかるようなことにググれというのも対話だよ。
対話を終わらせてるのはお前だろ。

リンク先を見て意味がわからんかったならどうわからなかったか、
よりよい説明があると思うならそれを示してもいい。
望むことだけ欲しいというのは対話とは言えんよ。
483デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/11(土) 10:34:34.75ID:glRpLuyC0
>>482
話が噛み合ってない
おまえさんとは平行線のようだな
484デフォルトの名無しさん (ワッチョイ 57dc-y0Vo)
2019/05/11(土) 11:46:55.45ID:0ygzdBDA0
ID:glRpLuyC0が対話する気なさすぎて草w
485デフォルトの名無しさん (ワッチョイ ff63-gMth)
2019/05/11(土) 12:23:55.76ID:9iCvmH6s0
ここは質疑を行うスレであって
対話したり、雑談したりする場ではない
486デフォルトの名無しさん (ワッチョイ 9f2d-y0Vo)
2019/05/11(土) 19:10:51.09ID:HOBfdmGr0
Cの上位互換(?)として、C++がありますが。C++は覚えた方がいいですか?
もしくは、CとC++を両方覚えたら、Cは不要になり、C++でコードを書くようになりますか?
C++でできることはCでもできるように見えますので、ならCだけでいいようにも思えたり。
487 ◆QZaw55cn4c (ワッチョイ 9f47-vVMj)
2019/05/11(土) 19:18:54.28ID:KtHZQgR00
>>486
C++ は最近規格の改定がすすみ、いろんなことが C++ の枠内でできるようになりました
488デフォルトの名無しさん (ワッチョイ 375f-PSXp)
2019/05/11(土) 19:21:03.92ID:2v2BzL6t0
>>486
言っておくが、python,C++,Java,javascript,C#,shellでできる事はC言語でも出来る
更に君が作ろうとしてるものや、やりたいことは、もう誰かが作ってる
ましてや大規模になると、googleとかamazonと戦う羽目にもなる
それが嫌ならプログラミングなんて辞めとけ
489デフォルトの名無しさん (ワッチョイ 9f2d-y0Vo)
2019/05/11(土) 19:32:35.19ID:HOBfdmGr0
>>487-488
了解です、ありがとうございます
490デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/11(土) 21:07:19.81ID:glRpLuyC0
>>484-485
482は反対意見を述べているという意味でまだいいところがあったが
てめーらは一方的な押しつけしか頭にない100%真のノイズだ
491はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth)
2019/05/11(土) 21:28:03.11ID:GtXmrqj00
>>490
既に解説があると示すのも質問に対する回答として十分だし、それで不満な理由がまるでわからん。
それが対話でないと断言するのも意味がわからん。
結局のところどうして欲しいの?
492デフォルトの名無しさん (アウアウウー Sa1b-wdoq)
2019/05/11(土) 22:15:36.12ID:YLmnNEXIa
きっと寂しいんだよ。
493デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/11(土) 22:49:22.08ID:glRpLuyC0
>>491
意味がわからんからどうした?
平行線の相手に何か言って欲しいのか?
494はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth)
2019/05/12(日) 10:19:15.38ID:l86zXz3/0
>>493
そう決めつけて続きを拒むなら「一方的な押し付けしか頭にない」「対話がない」というまさにそれでしかなくね?
意味がわからんから解説してくれっての。
わからんことを理解する必要があるから対話になるんだろ。
495デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/12(日) 11:22:06.40ID:VeGHf8Lz0
>>494
自分の言葉で何か言えよと思う俺の意見を
おまえ真っ向から全否定しただろ
だから接点がないと判断したんだ
接点があるなら最初の態度を撤回しろ
話はそれからだ
496デフォルトの名無しさん (ワッチョイ 9f52-tfUF)
2019/05/12(日) 11:57:36.56ID:7nn+3/Jt0
>>495
意見を全否定って、そりゃ異なる意見があるのは当然だろう。異なる考えなら議論にならないなんて、議論する気が無いだけだろう。

ついでだが、俺もお前さんの意見には反対だ。自分の言葉で書くかはまったく重要ではないと思う。お手軽に書ける掲示板のレスは言葉足らずだったり不正確な表現なことも多々あるが、それよりきちんと纏まった情報をリンクされた方がありがたいことも多い。
497デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/12(日) 12:19:14.09ID:VeGHf8Lz0
>>496
意見が異なるのと全否定は違うぞ
自分はこう思うと述べるのと
おまえは間違っているというのの違いだ

よくいるんだよ、どっかからの受け売りを壊れたレコードみたいに繰り返すだけなやつとか
俺は自分の知見からは何も出てこないのかよと思うことがあるが
おまえはそれで満足なら勝手に満足してろよ

そこが俺とおまえの違いだな
498デフォルトの名無しさん (ワッチョイ 9f79-ScLU)
2019/05/12(日) 15:34:15.26ID:SbCKIsfP0
質問です
テキストファイルから文字を1文字ずつ読み込んでchar型の2次元配列matrixに入れていきたい。
この時改行は配列に入れたくないときどうすれば良いですか?

うまくいかないコード
for (i=0;i<10;i++) {
for (j=0;j<10;j++) {
if (fgetc(fp) == ‘\n’) {
continue;
}
matrix[i][j] = fgetc(fp);
}
}


テキストファイルは行数と列数があらかじめ分かってるとして
例えば
AAAAAAAAAA
BBBBBBBBBB

のようなファイルです
499デフォルトの名無しさん (アウアウカー Saeb-NBbm)
2019/05/12(日) 15:51:11.62ID:L7lYUohVa
fgetc二回呼びたいの?
500デフォルトの名無しさん (ワッチョイ d77f-hzJM)
2019/05/12(日) 16:10:46.32ID:7kDDqNbD0
>>498
continueだと内ループ先頭に戻るから違うんじゃないの
501デフォルトの名無しさん (ワッチョイ ff12-f8ez)
2019/05/12(日) 16:24:47.11ID:R31sKZyy0
>>498
.for ... {
. for ... {
. char c = fgetc(fp);
. if (c != '\r' && c != '\n') {
. matrix[i][j] = c;
. }
. }
.}
502デフォルトの名無しさん (ワッチョイ 9f79-ScLU)
2019/05/12(日) 17:12:05.74ID:SbCKIsfP0
>>499
呼ばなくていいです
>>501
これでもうまくいかないです
503経団連 ◆T6xkBnTXz7B0 (ワッチョイ 1701-PJeF)
2019/05/12(日) 17:22:08.08ID:uLUIsoqa0
for (i=0;i<10;i++) {
for (j=0;j<10;j++) {
matrix[i][j] = fgetc(fp);
}
fgetc(fp); //読み捨て
}
504デフォルトの名無しさん (ワッチョイ b77c-NBbm)
2019/05/12(日) 17:29:14.22ID:CrklWm7I0
変な例出すなよ…
505デフォルトの名無しさん (ワッチョイ 9f1e-bWAY)
2019/05/12(日) 17:29:29.19ID:gzai7Rgq0
サイズが固定なら fread でよくない?
そうすべきというほどのものでもないだろうが。
506デフォルトの名無しさん (ワッチョイ 577b-djxj)
2019/05/12(日) 17:35:10.27ID:x4ccFx6b0
>>498
「うまくいかない」症状を見れば、もう少し見当がつくんだけど…。
格納先の配列を char matrix[LINES][CHRS]; とか定義して、
printf("%s\n", matrix[n]); で表示してるの違うかな。

各行の文字列の末尾にあるべき '\0' が格納されてない、みたいな。
507デフォルトの名無しさん (ワッチョイ ff63-gMth)
2019/05/12(日) 17:36:33.22ID:JjryTeWM0
2重ループやめても良いか?
 while (1) {
  int c = fgetc(fp);
  if (c == EOF) {
   break;
  }
  if (c == '\n') {
   continue;
  }
  matrix[i][j] = c;
  j++;
  if (j == 10) {
   i++; j = 0;
  }
 }
508デフォルトの名無しさん (ワッチョイ ff63-gMth)
2019/05/12(日) 17:38:28.80ID:JjryTeWM0
501の方法だと'\n'読んだ時に、スキップしているけど
ループ変数の方は ++1 してるからズレてくる
509デフォルトの名無しさん (ワッチョイ 9f79-ScLU)
2019/05/12(日) 18:35:08.99ID:SbCKIsfP0
>>503
>>507
どちらも行けました
507のは理解できるんですが
503の読み捨てというのはどう言うことなのでしょうか
510デフォルトの名無しさん (ワッチョイ ff63-gMth)
2019/05/12(日) 18:43:30.54ID:JjryTeWM0
>>509
10個読んで1個捨てる
511デフォルトの名無しさん (ワッチョイ 3702-vVMj)
2019/05/13(月) 20:38:42.19ID:WOFscy660
バッファにつめるところを簡単にしてみた。
https://ideone.com/fJ91BI
512デフォルトの名無しさん (オッペケ Sr8b-lJiK)
2019/05/14(火) 06:41:01.67ID:7SLYc+Rqr
OSSで構造体を公開しようとおもってる

そのサイズをバージョンアップしても固定にしたいんだけどいいアイデアないかな?
struct foo {
int a;
double b; // ここをバージョンアップで追加
}

char[100] buffer;

上記を予め含めておいて、追加サイズ分だけ減らすってのがよくある手段だと思うけど、intや他の型が固定サイズの保証はないから、処理系をかんがえると使えない
パディングでサイズも変わっちゃうしね

C++ならテンプレートでいけるけど、OSSだから利用者が多いC言語で書いておく必要がある
構造体を公開しないで、ハンドラとセッタで扱えばいけるだろうけど、今回は構造体でいきたい
513デフォルトの名無しさん (ワッチョイ 9ff9-vVMj)
2019/05/14(火) 08:01:00.18ID:YNmKUGxB0
「sizeof(int)が環境依存」を前提にするなら
バージョンアップ以前のint a;だけでもう既にサイズ固定じゃないじゃん
int32_tですら必ずある保証はないよ

「汎用な記述で全ての環境に対応したい」ってのが、土台無理な注文なのよ
低レベルなことやるなら、サポートする環境を列挙限定しなければならない

素直に「よくある手段」でやりなさいってことだ
514デフォルトの名無しさん (アークセー Sx8b-Vhni)
2019/05/14(火) 08:07:10.74ID:0o/9QF7Tx
>>512
処理系によるパディングとかの問題を別にしたら、bufferをunionにしといたらわざわざ減らさなくても良いのでは?
515デフォルトの名無しさん (オッペケ Sr8b-lJiK)
2019/05/14(火) 08:25:38.55ID:7SLYc+Rqr
>>513
たしかにint aですでに違うね
ただ今回考えてるのは、コンパイルせずに共有ライブラリを差し替えるって状況を想定してる
そのときにセグメンテーションフォールトがでないようにしたい
だから、すべての処理系で同じサイズにしたいってわけじゃなくて、同じ処理系の中ではバージョンにかかわらずサイズを保ちたいってことなんだよね
説明不足ですまん
516デフォルトの名無しさん (アウアウエー Sadf-NBbm)
2019/05/14(火) 08:36:30.40ID:2RiYyx1fa
あらゆる環境だったらシリアライズしないとだし。
同じ処理系だったら同じ構造体でいいだろうし。
517デフォルトの名無しさん (ワッチョイ ff69-PnGR)
2019/05/14(火) 13:41:09.36ID:d9/Wmgv60
>>514 のはこんな感じですかの

union foo {
 struct {
  int a;
  double b; // ここをバージョンアップで追加
 };
 char dummyBuffer[100];
};
518デフォルトの名無しさん (ワッチョイ ff69-PnGR)
2019/05/14(火) 13:59:44.65ID:d9/Wmgv60
構造体の大きさが char[100] に収まってる範囲での話
>>512 のように末尾に用意したギャップを引き算していくにしても、引ききれなくなった段階で破綻するよね

※ 突破したことをチェックするには sizoef(union foo) と sizeof(char[100]) とを比較すんのかなぁ…
519経団連 ◆T6xkBnTXz7B0 (ワッチョイ 1701-PJeF)
2019/05/14(火) 14:09:24.00ID:4po1tQ0w0
C99 <stdint.h>のuint*_t型を使った方がいいと思う。
520デフォルトの名無しさん (アウアウエー Sadf-NBbm)
2019/05/14(火) 14:39:04.31ID:2RiYyx1fa
普通符号付きでしょ
521デフォルトの名無しさん (ワッチョイ 7f7c-gMth)
2019/05/14(火) 14:51:20.14ID:5nOlmwWa0
符号プログラミングか
522デフォルトの名無しさん (アウアウエー Sadf-NBbm)
2019/05/14(火) 15:42:40.54ID:2RiYyx1fa
今はstatic_assertとかいうものがあるらしいぞ
これでコンパイル時にチェックすればよい
523デフォルトの名無しさん (ワッチョイ bf54-vVMj)
2019/05/14(火) 21:12:50.85ID:8soz04JH0
>>512

不格好だけどこれでいけるよ
全部プリプロセッサで処理できて、構造体サイズは100バイト固定になる。
予想を超えてサイズを突き破った場合は別構造体作るしかないね。

#include <stddef.h>

struct inner_foo {
int a;
char buf[];
};

#define MAX_STRUCT_SIZE 100
#define BUF_SIZE (MAX_STRUCT_SIZE - offsetof(struct inner_foo, buf))

struct foo {
int a;
double b;
char buf[BUF_SIZE];
};
524デフォルトの名無しさん (ワッチョイ 577b-djxj)
2019/05/15(水) 07:47:15.99ID:FPbZusNo0
>>523 ちょっと間違ってるみたい。
struct foo には struct inner_foo に double b; が追加されてるせいで
sizeof(struct foo) == MAX_STRUCT_SIZE にならない。
sizeof(struct foo) == MAX_STRUCT_SIZE + sizeof(double) になっちゃう。

inner_foo と foo とで char buf[] より前のメンバを一致させる必要がある。
525デフォルトの名無しさん (ドコグロ MMdf-vyow)
2019/05/15(水) 08:35:12.84ID:0TljqresM
>>515
なんでサイズが違うとセグメンテーションフォールトになるのかよくわからんが…
Win32APIみたいに頭にサイズ入れときゃいいんじゃね?
526デフォルトの名無しさん (ワッチョイ 57f2-y0Vo)
2019/05/15(水) 08:56:22.39ID:nK0I7Knm0
データファイルの話なら分かるが、intのサイズが違う環境の共有ライブラリってそもそも使えるのか?
527デフォルトの名無しさん (アウアウウー Sa1b-NBbm)
2019/05/15(水) 09:12:43.64ID:e9I3VVqQa
コンパイルは自分でしろって話だと思うよ。
そうすると単にメモリ配置を意識したプログラムだな。
当然、バイトオーダーも気にしろよっていう話に
528デフォルトの名無しさん (アウアウウー Sa1b-wdoq)
2019/05/15(水) 09:32:21.44ID:k0yjAgrYa
やっぱ int32_t みたいな環境に関係なく同じビット数になるやつにしといた方が良いんじゃないかな。
529デフォルトの名無しさん (ワッチョイ ff69-PnGR)
2019/05/15(水) 09:45:02.94ID:25auY+1H0
515の
>ただ今回考えてるのは、コンパイルせずに共有ライブラリを差し替えるって状況を想定してる
>そのときにセグメンテーションフォールトがでないようにしたい

構造体のパラメータを追加し共有ライブラリを差し替えつつ
呼び出し側のコンパイルは行わないって無理ないか?

旧ソースで追加されたパラメータ部分は不定値であって
その不定値をうけて共有ライブラリ内部が正しく動作できるとは思えないが…
530デフォルトの名無しさん (ワッチョイ 9f2c-NS0m)
2019/05/15(水) 11:40:27.07ID:AfKgri370
構造体には、サイズの変わらない、ポインタだけを置いておいて、

実際の領域は、ライブラリ内で確保して使って、解放すれば?
531デフォルトの名無しさん (アウアウウー Sa1b-NBbm)
2019/05/15(水) 12:19:01.09ID:e9I3VVqQa
さすがに実体を共有するという目的がないとこういう発想にはならんでしょ。
共有メモリとか、ファイルとか、通信とか。
532デフォルトの名無しさん (オッペケ Sr8b-lJiK)
2019/05/15(水) 12:31:29.02ID:dMKqDPXvr
>>529
呼び出す側がバージョン情報をもっておいて、処理側で振り分けてアクセスしないようにすれば問題ないね

#define version 2

void func (const struct* foo) {
func_impl(foo, version);
}


void func_impl(const struct* foo, int version) {
if (version > 1) {
foo.b;
}
}
533デフォルトの名無しさん (ワッチョイ ff69-PnGR)
2019/05/15(水) 12:43:05.74ID:25auY+1H0
>>532
そのバージョン情報の数字を埋め込むのに一番適度なのは実構造体のサイズって話に(>>525)

>>531 のような背景なら
ペイロードサイズは触りたくない ってのは納得できるな
バージョン違いの吸収法は別途必要だけど
534デフォルトの名無しさん (アウアウウー Sa1b-wdoq)
2019/05/15(水) 12:53:24.07ID:k0yjAgrYa
構造体の中身を公開しないでポインタだけ使わせて読み書きする関数を別途用意するって方法もあると思う。オブジェクト指向の言語でのプロパティのようなものね。
内容のファイルへの読み書きやネットワークでのやり取りはそれようにデータをpack、unpackする処理を作ってそこにバージョン番号も埋め込む。
535デフォルトの名無しさん (ワッチョイ 9ff9-vVMj)
2019/05/15(水) 12:59:51.65ID:Wbf0zcGJ0
exeがnew(malloc)するけど中をいじるのは全てdllの関数ってのはままある
dllだけ差し替えで済ましたい、サイズが変わらなければexeはビルドし直さなくていいのに…
ってことだろう

>512の
>intや他の型が固定サイズの保証はないから、処理系をかんがえると使えない
>パディングでサイズも変わっちゃうしね
は全く関係ない話だったということだ

素直に「よくある手段」でやればいい

>514,517のunionもいいと思うけど
foo.aでアクセスできないよね?foo.body.aとかしないと
536デフォルトの名無しさん (ワッチョイ ff69-PnGR)
2019/05/15(水) 13:12:20.84ID:25auY+1H0
>>517 の foo.a でいきなりアクセスできる union が記述できるのは C11 からみたい
無名構造体/無名共用体
537デフォルトの名無しさん (オッペケ Sr8b-lJiK)
2019/05/15(水) 14:41:00.06ID:dMKqDPXvr
>>535
intが4バイトなんて保証はないから、char[] bufの大きさを決められないって話でしょ?
intメンバを追加したとして、bufのサイズはどれだけ減らせばいいのかわからないのが問題
4の環境が多いだろけど、2の環境だと2を減らさなきゃいけないわけで

dll差し替えで再ビルドしない場合、構造体サイズが変わると特に配列渡しの場合はセグメンテーションフォールトになる可能性が高くて危険
セーブデータみたいに構造体をそのままファイルに落とすとしても、サイズはずっと不変なのが扱いやすいね
538デフォルトの名無しさん (アウアウウー Sa1b-NBbm)
2019/05/15(水) 14:56:07.34ID:e9I3VVqQa
数字付かないintのでかい方に合わせるなら、それこそunion使って明示的にオフセット決めるとか。
本当にそんなことしたいのか?という話は置いといて。
もちろんint32_tとかint_least32_t使う方がいいし、本当に位置合わせするならバイト位置指定して読み書きするし、そもそもサイズ固定せずにシリアライズ用のライブラリ使うのが正しいよ。
539デフォルトの名無しさん (ドコグロ MMdf-vyow)
2019/05/15(水) 19:35:47.81ID:0TljqresM
>>537
> intが4バイトなんて保証はないから、char[] bufの大きさを決められないって話でしょ?
そんな話はとっくに終わっとる
>>515をちゃんと読めよ
540デフォルトの名無しさん (ワッチョイ 9ff9-vVMj)
2019/05/15(水) 20:46:54.27ID:Wbf0zcGJ0
>>536
ほう知らんかった
なら>517でほぼデメリットないね

>>537
「その環境」でのintのサイズはsizeof(int)でおk
541デフォルトの名無しさん (ワッチョイ d7ab-xJZP)
2019/05/15(水) 21:55:29.06ID:ZaVTFrP70
win32apiはバージョンによって構造体の変数が追加になるから構造体のサイズを構造体の先頭にセットする
542デフォルトの名無しさん (ワッチョイ baa5-bDB9)
2019/05/16(木) 08:13:26.18ID:eEplP63Q0
windows.hのsmallで一時間潰した
543デフォルトの名無しさん (ワッチョイ 29ad-BnNU)
2019/05/16(木) 19:38:59.34ID:GXqxfUU20
文字配列列sを逆順に文字配列tに格納して出力したいのですが、
以下のコードでは実行してもt=[]と出力されてしまいます
#include <stdio.h>
#define MAXLINE 1000
main()

{
char s[MAXLINE],t[MAXLINE];
int c,i,I;

for(i=0; i<MAXLINE-1 && (c=getchar())!=EOF && c!='¥n'; ++i)
{
s[i]=c;
}
if(c=='¥n'){
s[i]=c;
++i;
}
s[i]='\0';

I=i;
for(i=i; 0<=i; i=i-1)
{
t[I-i]=s[i];
}

printf("t=[%s]",t);
}

どこがおかしいのでしょうか…
544デフォルトの名無しさん (ワッチョイ 3f01-pg4x)
2019/05/16(木) 19:48:10.73ID:q0J7kB7g0
後のループの一発目は

s[i]='\0';
I=i;
/* ここのforを削って */
t[I-i]=s[i];

こういうことになるから

t[0] = s[i] ってことになって t[0] = '\0'; をやってることになる
上記のは
  1 2 3 4 \0 → \0 4 3 2 1 のコード
実装すべきなのは
  1 2 3 4 \0 → 4 3 2 1 \0 となるコード
545デフォルトの名無しさん (アウアウウー Sa83-RNyv)
2019/05/16(木) 20:27:22.18ID:m1+/MMjMa
惜しいねえ。綺麗に逆に入ってはいるんだよな。
546デフォルトの名無しさん (ワッチョイ 29ad-BnNU)
2019/05/16(木) 20:38:11.53ID:GXqxfUU20
おっしゃる通りでした…今度は上手くいきました
ありがとうございます
547デフォルトの名無しさん (ワッチョイ 29ad-BnNU)
2019/05/16(木) 20:38:46.73ID:GXqxfUU20
おっしゃる通りでした…今度は上手くいきました
ありがとうございます
548デフォルトの名無しさん (ワッチョイ 3f01-pg4x)
2019/05/16(木) 21:09:34.65ID:q0J7kB7g0
自己解決できたようでなにより
整数の配列を逆に整列させるなら正解だったんだけどねー
「文字列」操作の落とし穴ですな
549デフォルトの名無しさん (ワッチョイ 2c5f-N32O)
2019/05/18(土) 22:03:40.11ID:e0Mh58zT0
今C言語教室でSQLとGUIやってる初心者なんだがCでDB弄る仕事ってあるのか
JavaとかC#に取られそうだけど
550デフォルトの名無しさん (アウアウエー Sa6a-ZkGz)
2019/05/18(土) 22:06:44.17ID:8rj7/ih6a
sqliteは使うよ
551 ◆QZaw55cn4c (ワッチョイ ea47-8NB0)
2019/05/18(土) 22:07:47.63ID:Pqc0+ZP00
>>549
ODBC 経由ならできますが…昔、ハンドルのキャストをとちったミスを、その意味不明の動きから突き止めるのは大変でした
ODBC を直書きする情報はネットにほとんどありませんね
552デフォルトの名無しさん (ワッチョイ 2c5f-N32O)
2019/05/18(土) 22:19:48.67ID:e0Mh58zT0
SQL使うのか慣れてないからあんまやりたくないんだよなあ
頑張るか
553デフォルトの名無しさん (ワッチョイ aa01-A+mh)
2019/05/18(土) 22:37:47.44ID:D3aJPSyb0
>>549
C++ならまだしもC言語でGUI?
どこの教室だよ…
554デフォルトの名無しさん (ワッチョイ d863-N32O)
2019/05/18(土) 22:53:12.41ID:RWbfx4gX0
むかーし、Pro*C って使った事がある
Cのソース内にSQLを埋め込み
プリコンパイルする感じ
今は流行らないかもしれない
555デフォルトの名無しさん (アウアウエー Sa6a-ZkGz)
2019/05/18(土) 22:58:45.45ID:8rj7/ih6a
SQL使いこなしてる人ってすごいけど、正直ああはなりたくないという感じだよな。
556デフォルトの名無しさん (ワッチョイ d863-N32O)
2019/05/18(土) 23:01:53.11ID:RWbfx4gX0
賢いファイルシステムとして利用すると超便利だぞ
557デフォルトの名無しさん (ワッチョイ d863-N32O)
2019/05/18(土) 23:02:38.45ID:RWbfx4gX0
同じ事をCのロジックで組むとなると、アタマおかしくなるかも
558デフォルトの名無しさん (ワッチョイ 73c3-AU7T)
2019/05/18(土) 23:08:58.89ID:Y/SMFmS40
普通にアプリケーションの規模が大きくなるとsql使いたくなるだろ

そういう場合はsqlite使う
559デフォルトの名無しさん (ワッチョイ d863-N32O)
2019/05/18(土) 23:10:30.33ID:RWbfx4gX0
5ちゃんねる専用ブラウザもsqlite使っているそうですね?
プログラムコードはCではないですが
560デフォルトの名無しさん (ワッチョイ 8654-2aw6)
2019/05/19(日) 10:01:29.20ID:EV8D9m9A0
IoTのデバイス開発やってるけど、C言語でDBのクライアントライブラリ使ってるよ
561デフォルトの名無しさん (ワッチョイ 9ff6-EL+e)
2019/05/19(日) 16:30:57.06ID:b6d7Y/CF0
リーナスさんはC++嫌いつーてるしな
トレードマークのfuck口調で
562デフォルトの名無しさん (アウアウウー Sa83-RNyv)
2019/05/19(日) 17:49:51.40ID:V/GPYpFPa
この頃は間に何かライブラリ挟んでDB変わってもSQL文がほぼ同じままで行けるようなのが流行りなのでは?
563デフォルトの名無しさん (ワッチョイ 4edc-EL+e)
2019/05/19(日) 19:08:51.80ID:SqCxdnVY0
大学の情報科の人たちってどのレベルでC言語使えるんですかね?
Cに限ったことではないですが大学4年でどの程度の練度が身につくのか
564デフォルトの名無しさん (ワッチョイ 4652-EL+e)
2019/05/19(日) 19:17:39.10ID:Ic55MIMX0
人によるだろ
そもそも好きなやつは大学入る前からやってるからな
565デフォルトの名無しさん (アウアウエー Sa6a-ZkGz)
2019/05/19(日) 19:22:28.74ID:qBoKnLB7a
>>563
別に使えなくてもいいよ
566デフォルトの名無しさん (ワッチョイ 9ff6-EL+e)
2019/05/19(日) 21:05:03.54ID:b6d7Y/CF0
>>565
おまえは情報科に来るなってだけ
やる気ねえやつが畑違いな学部に入ること自体が害悪だ
567デフォルトの名無しさん (アウアウカー Sa0a-ZkGz)
2019/05/19(日) 21:14:52.17ID:Y3pJ4vrOa
>>566
お前が入ったの専門学校だろ?
568デフォルトの名無しさん (ワッチョイ 9ff6-EL+e)
2019/05/19(日) 21:19:32.43ID:b6d7Y/CF0
>>567
化学科だけど
569デフォルトの名無しさん (ワッチョイ d863-N32O)
2019/05/19(日) 21:24:37.32ID:RJz4Ejb00
学校だとアルゴリズムやシステム設計手法は学べるだろうが
練度が上がるのはやはり仕事を始めてからだと思う
570デフォルトの名無しさん (オッペケ Sr88-2aw6)
2019/05/20(月) 12:44:26.31ID:PSRVLRmYr
コンピュータサイカヨウの基本は一通りやるんじゃない?
情報処理試験の基本レベルくらいのもの
初心者は実務にはそのままは使えないけど、中級以上のエンジニアならこのあたりの知識があると差がついてくるね
571デフォルトの名無しさん (ワッチョイ 328c-TfzP)
2019/05/20(月) 14:12:04.87ID:0d3wAWyu0
業務のほとんどは手作業の自動化だから差は出ない。そしてみんなリストラされる。
572デフォルトの名無しさん (ワッチョイ 462d-EL+e)
2019/05/20(月) 18:18:34.53ID:IJBxlZ980
仕事で出会った、いろいろな人を思い出すに、ガチに使える人材って凄いからなあ。
学校や仕事を通じて学ぶ、みたいな次元じゃないんだよねえ。
573デフォルトの名無しさん (アウアウエー Sa6a-ZkGz)
2019/05/20(月) 19:49:19.18ID:Nbm/sW0Oa
おまえが使ってるんだったらおまえが偉いよ
574デフォルトの名無しさん (ワッチョイ ae2c-uMtI)
2019/05/21(火) 00:42:18.33ID:jVHVO/YL0
setbuf関数っていつなんの為に使うんや?
バッファリングのためにあるのはわかるけどそもそもバッファリングがなんの為にあるのかわからん
575デフォルトの名無しさん (ワッチョイ 1c79-N32O)
2019/05/21(火) 00:44:38.83ID:Hcv2vO/e0
ちまちま出力するより溜めてからまとめて出力した方が高速
576デフォルトの名無しさん (ワッチョイ ae2c-uMtI)
2019/05/21(火) 01:29:10.75ID:jVHVO/YL0
1万文字くらいのテキストファイルを標準出力でやってみたけど変わった気しなかったぞ
もしかして数百万文字レベルの巨大ファイルだと劇的に変わるんか?
577デフォルトの名無しさん (ワッチョイ 73c3-AU7T)
2019/05/21(火) 01:34:19.46ID:XM845/F70
10kbって小さくね
578デフォルトの名無しさん (アウアウカー Sa0a-ZkGz)
2019/05/21(火) 01:46:59.05ID:+xvLcOVEa
というか普通はバッファリングする関数ばっかりだが、自前でバッファ用意したいときもあるって話。
基本変わらんよたぶん。
579デフォルトの名無しさん (ワッチョイ ae2c-uMtI)
2019/05/21(火) 01:47:43.41ID:jVHVO/YL0
確かに少ないな
と思ったんで2,700kbでやってみたらむしろ4秒長くなったぞ
580デフォルトの名無しさん (ワッチョイ 9602-XAPB)
2019/05/21(火) 02:21:13.21ID:Y+BS98b80
>>574
FILE * 経由で出力する printf() 等は内部でバッファリングしていてバッファがいっぱいになったらまとめて出力する(出力先が端末の場合は行単位で出力する)。
そのバッファを自分で指定した領域を使わせるか、またはなしにできるのが setbuf()。更に自由に大きさやモードも指定したいなら setvbuf() を使う。

バッファリングに関して考慮しなくても良い入出力をする場合は read(), write() で行う。この場合は全くバッファリングされないので少ないバイト数の入出力が多いと遅くなる。
それと printf() のようなフォーマットを考慮した出力はないので必要なら自作する。
581デフォルトの名無しさん (ワッチョイ 9602-XAPB)
2019/05/21(火) 02:26:07.71ID:Y+BS98b80
>>576
open()してwrite()で1バイトづつ書くのとまとめて書くのとではバイト数によっては大幅に違いが出ると思う。環境依存ではあるが。
582デフォルトの名無しさん (ワッチョイ ae2c-uMtI)
2019/05/21(火) 03:47:59.45ID:jVHVO/YL0
>>581
大きなファイルの入出力を高速化したい時はsetbuf(fp,buf)
バッファリング無しにしてバッファをフラッシュするタイミングを順番に逐一実行させたい時はsetbuf(fp,NULL)
みたいな感じでええんかな?
583デフォルトの名無しさん (ワッチョイ 9602-XAPB)
2019/05/21(火) 03:58:34.93ID:Y+BS98b80
>>582
setvbuf()で自分でバッファの大きさ決めてしまった方が良いかも。
584デフォルトの名無しさん (ワッチョイ a601-uGxO)
2019/05/21(火) 04:24:32.31ID:zmxtmgNI0
既出かもしれませんがconstがjavaのfinalと違うと知りました。どう違うのでしょうか?c初心者です
585デフォルトの名無しさん (ワッチョイ 4101-MvwS)
2019/05/21(火) 05:39:22.97ID:SRv5ILQj0
>>576
OSによってはHDDへ遅延書き込みするから、結局バッファしてるのと大して変わらなかったりする。
586デフォルトの名無しさん (ワッチョイ 462d-EL+e)
2019/05/21(火) 06:44:08.98ID:UPiNM42a0
>>584
20年前くらいの知識で、しかも完全に理解してるわけではないので、間違っていたらゴメンだけど。

変数について言えば、Java の final 変数は、値が未定義かどうか、という情報を内部的に持っていて。
もし、変数の値が未定義の場合は、1回だけ代入できたはず。例えば

final int i;
System.out.println("test");
i=4;
System.out.println(i);
i=5;
System.out.println(i);

の場合、1回目の代入(i=4)は許されるけど、2回目の代入(i=5)は怒られる。

それに対して、(C89の頃のだけど)Cのconst変数は・・・

const int i;
printf("test\n");
i=0;
printf("%d\n",i);

1回目の代入(i=0)であっても怒られる。

みたいな感じの違いはあったような。最近のCやJavaは知らないんだけどね。
あまり自信がないので、詳しい方のレスを待ちましょう。
587デフォルトの名無しさん (ドコグロ MM02-A+mh)
2019/05/21(火) 06:49:56.40ID:tdstqwiHM
>>585
そっちもあるけどAPI呼出し回数の削減もあるから
588デフォルトの名無しさん (オッペケ Sr88-2aw6)
2019/05/21(火) 07:08:29.24ID:6muVxYSDr
>>585
今どきのディスクならほぼ遅延書き込みしてるといってもいいね
バッファには二段階あって、
①プロセスが持ってるバッファ
②OSが持ってるバッファ

flush関係のライブラリ関数やシステムコールは①を②に吐き出す
②を吐き出すにはLinuxだとfsyncもしくはfdatasync
589デフォルトの名無しさん (アウアウウー Sa83-RNyv)
2019/05/21(火) 09:19:53.31ID:BVi2WQ22a
>>584
Cはポインタの指す先が const という指定ができるがJavaは配列の要素まで final にする指定ができなかったと思う。
つまり配列やクラスそのもののインスタンスへの参照は final にてきる。しかし参照される中身までは final にできず書き換え可能(クラスの場合はpublicのクラス変数とか、外部から書き換えられるようになっていれば書き換えられる)。

ま、ちょっと試してみな。
590デフォルトの名無しさん (ワッチョイ f6d2-cXFR)
2019/05/21(火) 10:05:33.15ID:DLRGb2lZ0
LTOのオプション
を使ってコンパイルすれば
インライン関数をヘッ
ダーに書かなくても
勝手にインライン化できるものはインラ
イン化してくれる
という理解で
あってますか?
591デフォルトの名無しさん (アウアウウー Sa83-RNyv)
2019/05/21(火) 10:21:18.62ID:BVi2WQ22a
>>590
それコンパイラ依存なのでは?
592デフォルトの名無しさん (ササクッテロル Sp88-uMtI)
2019/05/21(火) 12:55:43.68ID:PZq+OQZ5p
>>589
これな
Javaを最初に設計した奴はバカなんじゃないかと final の仕様を見たとき思ったな
593デフォルトの名無しさん (ワッチョイ ae2c-rckI)
2019/05/21(火) 15:23:18.72ID:ZAINLMmO0
Linux では、HDD へ書き込むのは、デフォルトで、5秒に1回

USB メモリで、書き込み回数を減らしたい場合は、
15秒に1回とかに設定する人もいる
594デフォルトの名無しさん (オッペケ Sr88-2aw6)
2019/05/21(火) 18:23:31.31ID:6muVxYSDr
>>593
書き出し周期はファイルシステムに依存するよ
例えばext3かext4かで挙動は違う
595デフォルトの名無しさん (ササクッテロル Sp88-Qul6)
2019/05/21(火) 18:37:21.97ID:G/IUf+gXp
C言語のfprintfを用いるときに、前行の改行を消す方法をご存知ないですか?
エスケープシーケンスでバックスペースを試したのですか上手くいかなくて困っています。

状況としてはfor文を用いて改行を含んだ文字列を繰り返し出力させているんですが、最後の行だけ改行を無くし、続けて別の文を出力したいのです。
繰り返しの回数を変えて最後に改行なしの処理をいれればいいと思うのですが、簡単な方法があればと思い質問させていただきました。
よろしくお願いします。
596デフォルトの名無しさん (ワッチョイ 3f01-pg4x)
2019/05/21(火) 18:40:11.67ID:UdJL+OJH0
ストリームの撒き戻しは難しいんじゃないか? 表示装置なのかファイルなのかでも変わるだろうし…
597デフォルトの名無しさん (ワッチョイ 1c79-N32O)
2019/05/21(火) 18:54:48.20ID:Hcv2vO/e0
ファイルポインタは巻き戻せる
標準出力ならエスケープシーケンスで右上に行けばいい
598デフォルトの名無しさん (ワッチョイ ee02-8NB0)
2019/05/21(火) 19:19:14.41ID:IJ+i04U80
こんな感じでいいのか?

#include <stdio.h>
int main(void) {
FILE* fp;
fp = fopen("Test.txt","w");
fprintf(fp,"hoge\n");
fseek(fp,-1,SEEK_CUR); /* 改行2byteなら-2 */
fprintf(fp,"fuga\n");
fclose(fp);
return 0;
}
599デフォルトの名無しさん (ワッチョイ 462d-EL+e)
2019/05/21(火) 19:53:55.55ID:UPiNM42a0
質問者が知りたい情報とは違うので、スルー推奨かもですが。

もし自分が、同じことをやれ、と言われたら。
「改行を含んだ文字列」を、「改行」と「それ以外の文字列」の2つに分けて、別々に出力しようとするかなあ。
ループの回数を変える必要はなくて。イメージとしては

for() ※行単位のループ
{
if(最初の行でなければ) fprintf で「改行」を出力

fprintf で「それ以外の文字列」を出力
}
fprintf で「別の文を出力」
600デフォルトの名無しさん (ドコグロ MM02-A+mh)
2019/05/21(火) 19:58:03.98ID:kdkwqODuM
>>595
bool First = true;
for( … ){
if(First){
First = false;
} else {
fprintf("¥n");
}
fprintf( … );
}
601デフォルトの名無しさん (ドコグロ MM02-A+mh)
2019/05/21(火) 19:58:35.62ID:kdkwqODuM
あっ、被ったや
602デフォルトの名無しさん (ワッチョイ ee02-8NB0)
2019/05/21(火) 20:07:13.38ID:IJ+i04U80
ファイルが標準出力等でvt100互換端末であれば。
#include <stdio.h>
#include <string.h>
int main(void) {
int i;
i=fprintf(stdout,"hogehogehogehoge\n");
if (0) fprintf(stdout,"\E[01Afuga%*c\n",i,' '); /* これか? */
else fprintf(stdout,"\E[01A\E[%02dCfuga\n",i-strlen("\n")); /* あるいはこれか? */
return 0;
}

cmdとかdos窓なら無理?
603デフォルトの名無しさん (ササクッテロル Sp88-Qul6)
2019/05/21(火) 20:22:57.69ID:G/IUf+gXp
>>596-602
皆様回答ありがとうございます。
ファイルを扱っているので、fseekで戻す方法を試してみようと思います。
604デフォルトの名無しさん (スププ Sd94-AU7T)
2019/05/21(火) 20:31:17.43ID:JOJ6V6qzd
プログラムいじられるなら、改行出す方をどうにかした方が良さそうだが
605デフォルトの名無しさん (ワッチョイ aaf9-8NB0)
2019/05/21(火) 20:31:52.25ID:8vKfOnx40
ansi.sysを組み込めばVT100互換エスケープシーケンスが
という昔話…と思ったが、ググったらvistaまであったんだな驚き
Windows 10 Threshold 2(10.0.1058)ではコマンドプロンプトでANSI/VT100互換表示が可能に
というスラドの記事も出た
606デフォルトの名無しさん (アウアウウー Sa83-RNyv)
2019/05/21(火) 20:52:46.26ID:BVi2WQ22a
最後に改行出すんじゃなくて最初に改行出すようにすれば良いだけでは?
一番最初の行だけは最初に出さなければ良いだけ。
バッファリングされて出力されないのが嫌なら行末でfflush()する。
607デフォルトの名無しさん (ワッチョイ aa01-A+mh)
2019/05/21(火) 21:47:10.75ID:n1jvW3Ih0
>>606
>>599-600
608デフォルトの名無しさん (ワッチョイ 9602-XAPB)
2019/05/21(火) 22:06:40.11ID:Y+BS98b80
>>607
おお。既にあった。
さっきスマホで見てて気付かなかった。
609デフォルトの名無しさん (ワッチョイ 1e01-Qul6)
2019/05/21(火) 22:09:47.12ID:JtLDtEYt0
>>604-607
603です。>>600の意味をちゃんとわかってませんでしたが、>>606の方のレスでわかりました。
>>600の方が安全な気がするのでそちらを検討します。
610デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/24(金) 09:00:19.45ID:h3dkW7YJ0
C言語はクラスが無い。
それは実際どれくらい問題になりますか?

昔C使ってたけど、本格的な抽象的設計をやってたわけじゃなくて、
最近Java使っててそういうのをやりだしたけど、
今思い返してみるとC言語はクラスや継承や多態性が無いから
かなり厳しい言語なんじゃないかな、と思ったんです。

メジャーなカーネルがCで作られてるという事実に驚愕します。
クラス無しで大規模開発は不可能としか思えません。
それどころか、1アルゴリズムの実装でもクラスは有用だと思うんですが。

最近、NimとかRustのようなCを代替するかもしれない勢いのある言語があります。
そういう言語はかなり抽象的な設計が可能です。
そういうのと比べると、小さなデバイスドライバみたいなものはCでいいだろうけど、
大規模開発におけるCはかなり無理があるんじゃないかな?と

そうでもないものですか?
611デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/24(金) 09:04:22.51ID:a6wIXg41a
まあファイルがクラスと同じだし。
継承はしづらいけど、そんなもん使ったらC++でもむしろ見通し悪くなるでしょ?
612デフォルトの名無しさん (ワッチョイ dfa5-vAXu)
2019/05/24(金) 10:11:20.70ID:M2ZwKTAn0
最大のデバイスドライバがOSのカーネルなんじゃねえの
そしてそれがC言語の限界
613デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/24(金) 10:43:06.36ID:h3dkW7YJ0
Linuxカーネルは2100万行を超えているそうなので
たぶん地球上でもっとも大規模な開発の1つです。
614デフォルトの名無しさん (ワッチョイ bf8c-GX6Y)
2019/05/24(金) 11:21:47.36ID:0dR+L/D60
責任ある人は気がくるっているじゃない。
615デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/24(金) 12:25:59.56ID:Cw+6mW4za
Cでもオブジェクト指向的に考えて作ることは可能。構造体へのポインタまたは情報を区別する番号などを渡してその中身に基づいて処理する関数作ればいいので。
ファイルアクセスとかは作りがそうなってるよね。
616デフォルトの名無しさん (ワッチョイ c7d2-Fpyl)
2019/05/24(金) 12:32:21.84ID:M3xcEept0
クラスはコンストラクタ/デストラクタは活用したけど
継承で面倒になって、ちょっと便利な関数付き構造体としてしか設計したことない。
617デフォルトの名無しさん (ブーイモ MMcb-/OyN)
2019/05/24(金) 12:35:03.01ID:C+5joBz9M
C言語ではオブジェクト指向も関数型プログラミングもできる。その下位レイヤーだから。
面倒臭いけど。
618デフォルトの名無しさん (ドコグロ MM9f-LXA5)
2019/05/24(金) 12:50:51.48ID:8pSuDyEhM
>>613
デバドラとかが山ほどあるだけでコア部分はそんなにたいしたことないよ
619デフォルトの名無しさん (ドコグロ MM9f-LXA5)
2019/05/24(金) 12:53:08.72ID:8pSuDyEhM
>>610
構造体に関数ポインタ入れたりすれば継承も多態も可能
書くのが面倒ってだけの話
モジュールを適切に分割すれば個々の開発部分はそんなにでかくならないし
620デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/24(金) 12:59:14.48ID:Cw+6mW4za
まあしかしC++は複雑怪奇な状態になったような感じがするのでなんか別の言語でオブジェクト指向やった方が良いような気がする。
621デフォルトの名無しさん (ワッチョイ c7da-YLUn)
2019/05/24(金) 13:49:11.26ID:FIKXvkBI0
Javaがとてもシンプルな言語に見えてくる
622デフォルトの名無しさん (スププ Sdff-OWKl)
2019/05/24(金) 14:27:11.63ID:YkjJvwKvd
linux kernelなんておもくそオブジェクト指向的な構造だろ
623デフォルトの名無しさん (ワッチョイ e701-/OyN)
2019/05/24(金) 19:13:34.31ID:E0qJKDus0
関係ないけどOOPが流行り始めた頃に「WindowsのUIはオブジェクト指向だ」と言ってたやつを思い出した。
624デフォルトの名無しさん (ワッチョイ 7f63-buEI)
2019/05/24(金) 19:26:36.07ID:omgaeJxY0
目指していた方向はそうだったと思う
625 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 20:26:08.87ID:0N6+tWvP0
>>615
>Cでもオブジェクト指向的に考えて作ること
あくまでも「オブジェクト指向『的』」であることに注意すること
C ではオブジェクト指向を実現できない(断言)
626 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 20:27:08.05ID:0N6+tWvP0
>>617
>C言語ではオブジェクト指向も関数型プログラミングもできる

C ではオブジェクト指向はできない(断言)
継承をCでどのように記述するのでしょうか?
627 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 20:27:59.68ID:0N6+tWvP0
>>622
>linux kernelなんておもくそオブジェクト指向的な構造だろ

あくまでも「オブジェクト指向『的』」であってオブジェクト指向そのものではありません(断言)
628デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/24(金) 20:41:47.14ID:1FXcUtRQa
いやできなくはないよ。何せC++は元々はCへのコンバータだったしな。C++のソースを読んでC言語に変換して後のことはCコンパイラに任せてたんだよ。それが初期のC++。

もちろんCは言語そのものがオブジェクト指向をサポートしてないから人間がそれをやろうとするととても面倒な事になるけどな。
629デフォルトの名無しさん (ワッチョイ e701-/OyN)
2019/05/24(金) 20:51:16.47ID:E0qJKDus0
そんなん言い始めたらアセンブラでもオブジェクト指向プログラミングできることになっちゃう。
言語としてOOPがサポートされてなきゃ認められないでしょ。
630 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 21:00:32.57ID:0N6+tWvP0
>>628
>C++のソースを読んでC言語に変換して後のことはCコンパイラに任せてたんだよ。それが初期のC++。
C++ から C へのトランスパイラが存在したからといって、C にてオブジェクト指向(的ではなくそのものずばり)なプログラミングができるわけではありません
C++ のコンパイラが存在するからといって機械語が OO でないのと同じです、まず、

C++ https://ideone.com/vAp2Sj

に対応する C のコードを示してください
631 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 21:01:09.07ID:0N6+tWvP0
>>629
>言語としてOOPがサポートされてなきゃ認められないでしょ。

激しく同感いたします!
632デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 21:12:51.85ID:ZwmHdTYl0
>>610
全く問題にならない
classというキーワードがなくても
コードを書く者の考え方次第でカプセル化や継承はできる
FILE構造体がその例だ
多態性がないというのは、おまえさんの認識不足で
関数ポインタでそんなものはすぐに実現できる
そういう認識不足があるからこそ
メジャーなカーネルをなぜ書けたかが理解できないのだ
633デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 21:15:04.81ID:ZwmHdTYl0
>>630
対応するCのコードを示せるやつがいたら、おまえどうする?
朝8時の品川駅のホームでストリーキングでもするか?
634デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/24(金) 21:24:37.67ID:QPLeHwR8a
まあ継承なんてオブジェクト指向と関係ないよ
635 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 21:45:54.65ID:0N6+tWvP0
>>632
>classというキーワードがなくても
>コードを書く者の考え方次第でカプセル化や継承はできる

C ではカプセル化はできても継承は不可能ですよ
636 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 21:46:59.73ID:0N6+tWvP0
>>633
>対応するCのコードを示せるやつがいたら、おまえどうする?
あなたができないことをそんなにアピールしなくてもいいと思いますよ
637デフォルトの名無しさん (ワッチョイ e701-GX6Y)
2019/05/24(金) 21:56:28.68ID:wwZ4gkZH0
仮想関数テーブルの実装方法について語るスレはここですか?
638デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 22:01:07.63ID:ZwmHdTYl0
>>635
いーや、できる
おまえさん禿本やリップマンくらい読んだか?

裸踊りを賭す自信もねえやつがいきがってんなよ
639デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/24(金) 22:02:14.93ID:ZwmHdTYl0
>>637
いいぜ
おら、来いや
640蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 2701-6B7C)
2019/05/24(金) 22:06:22.36ID:/xfbOr910
>>630
https://ideone.com/omqT5r
641 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 22:17:20.89ID:0N6+tWvP0
>>638
ではストロヴストルップやリップマンはどういっているのか、ここに引用していただけますか?
あらかじめいっておきますが、引用はできない、なぜならば、そんな内容をストロヴストルップもリップマンも書いていないのだから
642デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/24(金) 22:18:09.05ID:TMKOHW7N0
>>625-627, >>629
オブジェクト指向と言う概念と実装の区別がついてないんだな
低能なプログラマーによくある行動w

例えばLinuxで言えばリダイレクトなんて言うのはもろオブジェクト指向な機能だよね
Applicatlon > xxx
ってやればxxxがファイルならApplicatlon が出力したデータをファイルに書き込むし、xxxが端末なら端末にデータを表示するし、xxxがプリンタならデータを印刷する
Applicatlonは出力先が何であるかを気にする必要はない
もちろんLinuxはC言語でこれを実現してるしより面倒だろうけど当然アセンブラで実装することも可能
643デフォルトの名無しさん (ワッチョイ e701-1x1Z)
2019/05/24(金) 22:21:05.39ID:0NhXAFL60
概念ならFILE構造体とそれの操作関数群
644 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 22:21:27.40ID:0N6+tWvP0
>>640
>typedef struct C
>{
> A ThisA;
> B ThisB;
> int c;
>} C;

これは委譲であって継承ではありません。私は >>626 で「Cでは継承はできない」と主張しており、これを否定するために委譲は使えません
645 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 22:23:27.35ID:0N6+tWvP0
>>642
それは smalltalk 的な OO であって C++ の OO の概念とは多少食い違うと思います
646デフォルトの名無しさん (ワッチョイ e701-1x1Z)
2019/05/24(金) 22:24:05.41ID:0NhXAFL60
コンストラクタとデストラクタの機構だけは欲しいと思ったことがしばしば
647 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 22:24:31.62ID:0N6+tWvP0
>>643
FILE は OO 的ではありますが、OO そのものではありません
OO というからには委譲とは別の継承を表現できねばなりませんが、
C では継承を表現できません
648デフォルトの名無しさん (ブーイモ MMcf-wr5r)
2019/05/24(金) 22:41:32.12ID:K6buSCwsM
glibとか大昔からあるじゃん…
glibがooでないならooの定義をまず示せ
649デフォルトの名無しさん (アウアウカー Sa3b-eVvB)
2019/05/24(金) 22:42:05.32ID:hUeULEjja
オブジェクト指向ってC++固有の概念なの?
だとすると、そりゃCで実現は無理でしょう。関係ないんだから。CとC++は。
650 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 22:44:44.02ID:0N6+tWvP0
>>648
glibc++ は OO かもしれませんが glibc が OO だとは寡聞にして聞きませんね
651 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 22:45:51.47ID:0N6+tWvP0
>>649
>オブジェクト指向ってC++固有の概念なの?
いいえ、Java も C# も OO だし、 python も ruby も OO で表現できます
652デフォルトの名無しさん (アウアウカー Sa3b-eVvB)
2019/05/24(金) 22:50:26.22ID:hUeULEjja
>>650
GLibだよGLib
今知らないのもどうかと思うけど、使ってみると面白いと思うよ
653デフォルトの名無しさん (アウアウカー Sa3b-eVvB)
2019/05/24(金) 22:51:22.70ID:hUeULEjja
>>651
いや、それだとつじつま合わないでしょ
自分の決めた道を突き進めよ
654蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 2701-uiLC)
2019/05/24(金) 22:53:40.43ID:/xfbOr910
GTKのGLibだよね。
655 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/24(金) 22:54:27.15ID:0N6+tWvP0
>>653
どうつじつまがあわないというのですか?説明ください
私は「OO ならば委譲と区別された継承を記述されなければならない」と主張しています
656デフォルトの名無しさん (ブーイモ MMcf-wr5r)
2019/05/24(金) 22:55:59.59ID:K6buSCwsM
>>650
glibcじゃねーよ…
gimp、inkscape、gnomeほか様々なソフトウェアで使われてる。
linuxとは無縁だったんだな
657デフォルトの名無しさん (ワッチョイ c7c3-OWKl)
2019/05/24(金) 23:36:16.20ID:SCqWQYPI0
>>629
出来るに決まっている
OO言語はオブジェクト指向プログラミングがやり易いようになっているだけでそれじゃなきゃOO出来ないというのはOOについて理解していないだけ
658デフォルトの名無しさん (ワッチョイ c7c3-OWKl)
2019/05/24(金) 23:46:49.71ID:SCqWQYPI0
>>644
多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書くというルールなだけ

それだけで呼び出し元のコードはほぼなにも考えずにベースクラスの機能を使うことができる
659デフォルトの名無しさん (ワッチョイ bfba-GX6Y)
2019/05/24(金) 23:58:34.02ID:S5Q/uU3j0
>>655
CでもOOできるし、継承できるし、オーバーライドもできる。
20年位前の本に「ANSI C に準拠したコンパイラならできる」と紹介されている。

メモリを意識したコードを書けない人には理解できないけどね。
660デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/25(土) 00:01:58.97ID:7Hh+Cor80
C言語はABIが標準化されている、という文を見たんですが、
その標準仕様の名前は何ですか?

新しいプラットフォームがその標準仕様を満たせば
バイナリレベルあるいはソースレベルで移植性があるんでしょうか?
661デフォルトの名無しさん (ワッチョイ bfba-GX6Y)
2019/05/25(土) 00:07:07.65ID:KPhaQb+n0
>>654
ていうかお前、MZ級にウンコな片山博文やんけ。

>>660
標準の名前は無いんじゃないの?
とりあえず「ABI」でググれ。
662デフォルトの名無しさん (ワッチョイ c7c3-OWKl)
2019/05/25(土) 00:11:09.80ID:oops2jeN0
アーキテクチャ跨いでABIが統一できるわけないよね
引数の渡し方なんてアーキテクチャ変わったらそもそも使えるレジスタ変わるし

同一アーキテクチャの特定OS内ならバージョン変わってもABI互換ってのは良くあるけど
663蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 2701-uiLC)
2019/05/25(土) 00:29:35.52ID:2ZlhwbAL0
>>661
そのプライドを大切にしろよ
664デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/25(土) 05:52:48.29ID:Tic4GHY30
>>645
お前のOOの定義書いてくれ
俺の思うOOじゃないとか言われたらどうしようもないわなw
665デフォルトの名無しさん (ワッチョイ df79-buEI)
2019/05/25(土) 05:57:11.32ID:6KmI3UXB0
Cでオブジェクト指向プログラムなんて書くのは時間の無駄
速度が必要な部分だけCで作るのが正解
666デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/25(土) 06:05:28.22ID:6T2yG8cn0
>>641
てめえの怠慢を俺が尻拭いする筋合いはねえぜ
調べるところまで教えてやったんだ
自分で調べる気がねえなら不勉強のまま取り残されろ
667デフォルトの名無しさん (ドコグロ MM9f-LXA5)
2019/05/25(土) 07:19:56.39ID:DOpjF4HUM
>>665
> Cでオブジェクト指向プログラムなんて書くのは時間の無駄
そう言うこと
ただ時間がかかると言うのとできるできないの話は別
なのでお前のレスのほうが時間の無駄w
668 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 15:51:01.79ID:jppBZDTS0
>>658
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書くというルールなだけ

C では構造体のメンバの順番をプログラムから指定することはできたのでしょうか?
C コンパイラはアラインメントを考慮して最適化をはかり構造体のメンバを、プログラマの記述から適宜入れ替えていもいいのでは?

となると一つめのメンバにベースクラスのインスタンスを書いても、コンパイラに入れ替えられてしまっては無意味なのでは?
669 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 15:52:11.46ID:jppBZDTS0
>>659
>CでもOOできるし、継承できるし、オーバーライドもできる。
できないとおもいますよ、できるというのなら >>630 を C で記述してみてください

>20年位前の本に「ANSI C に準拠したコンパイラならできる」と紹介されている。
出典を明記ください
670 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 15:53:43.84ID:jppBZDTS0
>>666
>てめえの怠慢を俺が尻拭いする筋合いはねえぜ
あなたは私の怠慢を主張するのと同様の筋で、私はあなたの欺瞞を主張します
出典元や引用を正確にできないのであれば、あなたは嘘をついていると判断されてもしかたがないと思います
671 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 15:55:14.60ID:jppBZDTS0
>>661
片山先生は私とは比較にならないほど生産性の高いプログラマですよ
672 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 16:03:59.98ID:jppBZDTS0
>>652
はじめて知りました、>>650 は勘違いした内容でした、すみません
ご紹介ありがとうございます。今試しているところです!
673デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/25(土) 16:17:34.75ID:Tic4GHY30
>>668
真面目な話、規格書読んでこい
ツッコミどころが頓珍漢すぎる
674 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 17:02:40.54ID:jppBZDTS0
>>673
コメントありがとうございます。確かに >>668 には誤りが含まれていました

ISO/IEC 9899:1999
6.7.2.1.5
As discussed in 6.2.5, a structure is a type consisting of a sequence of members, whose
storage is allocated in an ordered sequence,

JIS X3010:2003
構造体は,メンバの列から成る型とし,メンバの記憶域は,並べられた順に割り付ける(6.2.5参照)。

しかし、この記述は構造体のパディングが構造体の先頭に詰められる場合を排除していないと考えます

よって、>>658
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書く
>それだけで呼び出し元のコードはほぼなにも考えずにベースクラスの機能を使うことができる

構造体の先頭にパディングがあった場合は、この記述は正しくないのではないでしょうか。
675 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 17:37:11.41ID:jppBZDTS0
>>674
よくよく考えると、私の「この記述は構造体のパディングが構造体の先頭に詰められる場合を排除していないと考えます」もかなり疑わしい、
パディングというものは、一つのメンバがあって、それに対してもう一つのメンバを置くときにパディングを置くものであって、最初からパディングを置く必然性がないですね

struct S {
int a;
} b;
のとき
&b = &(b.a)
は保障されている、時間がたつにつれてそんな気がどんどんしてきました…

>>658 を認め、同時に単一継承であれば C で OO と継承を表現できることを認めます
676 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/25(土) 18:11:59.97ID:jppBZDTS0
>>674
> a type consisting of a sequence of members, whose storage is allocated …
この is にも惑わされてしまいました
これは
a type consisting of a sequence of members, each of which is allocated about storage in an ordered sequence
とか
a type consisting of a sequence of members, each of which's storage is allocated in an ordered sequence
くらいに解釈するべきなんですね
検討する機会をいただきありがとうございました
677デフォルトの名無しさん (ブーイモ MMcb-wr5r)
2019/05/25(土) 21:04:32.61ID:DDy3bloZM
>>675
絶対許さんぞおおおお
678デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/25(土) 21:07:06.72ID:aM9QB8YDa
オブジェクト指向って抽象化が目的なのに、メモリ配置とか気にするのは馬鹿みたいだよな
679デフォルトの名無しさん (ワッチョイ e701-GX6Y)
2019/05/25(土) 21:23:55.56ID:cjrLAMgS0
MicrosoftのCOMはほとんど全てのコンパイラが構造体のメモリ配列を同じ様にするってのを利用してるんだっけ?
680デフォルトの名無しさん (ドコグロ MMeb-LXA5)
2019/05/25(土) 22:13:30.07ID:UN9uDEfaM
>>678
ここにも概念と実装の区別がついてないバカが…w
681デフォルトの名無しさん (ワッチョイ bfba-GX6Y)
2019/05/25(土) 23:25:49.27ID:KPhaQb+n0
>>669
C言語でオブジェクト指向を表現する (クラス、継承)
https://qiita.com/qiita_kuru/items/8f3441bce9b2f53d1d62
この辺でも読んどけ。

「何故できるか」まで言及したもっといい文献はあるがカスには教えない。
俺は「せざるを得ない」状況だったのでCでOOしたが、ネイティブでOOできるならそれに越したことはない。

あ、同じ板でハッシュが一致してるのでお前は蟻。
682デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/26(日) 01:24:13.78ID:zv+FEFKTa
>>681
またおまえか
683デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/26(日) 08:36:08.16ID:o+/j3IaP0
>>670
は? 俺は主張なんざしてねえぜ
事実をありのまま指摘しただけだ
何勘違いしてやがる
というか勘違いということにせねば立場がねえってかw
684デフォルトの名無しさん (ワッチョイ e7dc-dCWx)
2019/05/26(日) 08:56:22.54ID:7tI1cTYc0
もうこんなとこで喧嘩しても勝敗つかないんだからやめろw
仲良くできねえのかお前らは
685デフォルトの名無しさん (ワッチョイ df2c-o9SV)
2019/05/26(日) 12:29:05.12ID:lzKtO2WM0
でも冷静になって考えてみろ
単細胞時代から何億年と喧嘩してきた結果今の人間がいる訳だから喧嘩をやめてしまったらそれは果たして生物と言えるのか
逆に言えばAIが人知を超える時
人間は機械に滅ぼされ地球から人間はいなくなっているという事
つまり今何をすべきかと言うと人間は思考をやめアホになるべきである
そうアホの坂田こそ未来の救世主ネオなのである
686 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 15:17:23.15ID:CpBTYp0n0
>>681
そのご紹介のリンク先は、内容について、はっきりいって詰めが甘いです
すなわち、継承と委譲を区別できていません
そんな中途半端な理解で quita に掲載するとか、玉か石かどちらかといえば、石の部類でしょう、全然参考になりませんでした
そんな中途半端な内容の記事を掲載するあなたも同様と判断いたします
687 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 15:19:14.79ID:CpBTYp0n0
>>683
事実かどうかは、主観的か客観的か、に依存すると思いますが、
相対論においてはすべての事象について純客観的などありえない…①
ので、①より、あなたは主観を主張しているものと私は理解します
688デフォルトの名無しさん (ワッチョイ df33-Fpyl)
2019/05/26(日) 15:46:43.76ID:aNhG7Lwu0
>>686
「継承」に必要な操作一式を委譲に基づいて提供できているなら継承できていると思うんだけど、
言語サポートを伴って暗黙的に機能しない限り「継承」と呼ぶべきではない、ということなの?
そこで明確に区別することにあんまり意義が見出せないんだけど、その定義どっか出典示せる?
689 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 15:52:14.70ID:CpBTYp0n0
>>688
委譲による実装で継承を実現できているのなら、それは継承(の一形態)である、…① という主張ですね
①は私にも理解できますが、委譲はダイヤモンド継承を回避できない欠点があるのでは、と考えています
「ダイヤモンド継承」については C++ の書籍には大概載っているかと、具体的な書籍名は探しておきます
690デフォルトの名無しさん (ワッチョイ df59-eVvB)
2019/05/26(日) 16:00:20.28ID:Jdhtsrqd0
まあ継承なんてオブジェクト指向と関係ないからね
691 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 16:02:51.60ID:CpBTYp0n0
>>690
それは初耳です
Object Oriented に継承は憑き物だと思っていました、継承のない OO って存在するのですか?それは例えばなにですか?
692デフォルトの名無しさん (ワッチョイ df33-Fpyl)
2019/05/26(日) 16:08:55.02ID:aNhG7Lwu0
>>689
ちょっと何言ってるかわからないな。
ダイアモンド継承の問題を「継承」で回避しているが委譲では回避できないであろう例を挙げてくれたら考える。

明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。
693デフォルトの名無しさん (ワッチョイ df59-eVvB)
2019/05/26(日) 16:22:19.45ID:Jdhtsrqd0
>>691
なにって、言語を知りたいということ?
694デフォルトの名無しさん (ワッチョイ a7da-n/qg)
2019/05/26(日) 16:37:44.23ID:vwTAovQx0
クラスベースのOOP言語ではクラスの継承は一般的だけどプロトタイプベースのOOP言語では継承の概念は存在しないよ
695 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 16:40:12.48ID:CpBTYp0n0
>>692
クラス A, B, C, D について、
A のメンバ変数を a とする、また
B->A(B は A を派生する)
C->A
D->B, C (多重継承)
において、これを委譲で実装すると、B.A.a と C.A.a が同じであるべきにもかかわらず二重にインスタンスとして生成されてしまうので、
継承で実装した D.a を、委譲で実装した D.B.a と同一視するか、D.C.a と同一視するか、また継承における D.a を更新した場合に委譲では D.B.a と D.C.a の両方を更新するコードを生成しなければならないのか、
等あいまいな部分がでてくる、これがダイヤモンド継承問題です

継承で実装すれば、C++ ではこれを仮想継承といいますが D.a の実態を一つに限定することができますし、D.B.a, D.C.a の両方を保存することもできます、つまりモデリングにおいて選択肢を準備できる
しかし委譲で実装すると D.a の実態を一つに限定することが不可能です、つまり選択肢を準備できません

以上より委譲で継承のすべてを代行できないため、委譲と継承を区別する必要が生じると考えます
ただし、多重継承を認めないのであれば、委譲と継承は同一視しても差し支えないと考えます
696 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 16:41:21.10ID:CpBTYp0n0
>>693-694
ふーん、インタプリタ JavaScript には継承はないのですか
697デフォルトの名無しさん (ワッチョイ a7da-n/qg)
2019/05/26(日) 16:41:38.74ID:vwTAovQx0
https://ja.m.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9
698 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 17:08:49.07ID:CpBTYp0n0
>>692
>明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。
「単一継承に限定するのならば委譲による継承の実装も可能である」という意味での>>689の「理解します」の文言だと解釈ください
ただし委譲で継承をすべて実現できないので、>>681 掲載のリンク先は「詰めが甘い」と判断せざるを得ない、そんなリンク先を紹介する >>681 も同様と判断するものです
699デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/26(日) 17:11:49.57ID:iR9VJ5EUa
継承がオブジェクト指向と無関係なんだから、委譲で実現する必要がない
700デフォルトの名無しさん (ワッチョイ df33-Fpyl)
2019/05/26(日) 17:25:25.86ID:aNhG7Lwu0
>>695
C++が仮想継承・多重継承でやっていることをコードで書き下せば済む話。
アップキャストがnopで済むか、オフセットの足し算になるかなどの詳細に基づいて区別しろってことに
聞こえるんだけど、やっぱりそんな区別の意義が見えてこない。
701デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/26(日) 17:39:21.34ID:kcdU4Ge60
もうそろそろ別スレ立ててやれや

> それは smalltalk 的な OO であって C++ の OO の概念とは多少食い違うと思います
とか言う様な奴を相手にしても永遠に終わらんと思うが…
702 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 17:50:19.72ID:CpBTYp0n0
>>700
>C++が仮想継承・多重継承でやっていることをコードで書き下せば済む話。
そこで実現されているのは私のいうところの継承であって、私のいうところの委譲ではありません
委譲ではダイヤモンド継承に対応できない(選択肢を提供できない)
したがって、委譲と継承とは区別するべきであり委譲で継承を実装するべきではない、という私の主観には一貫性があると思います
703デフォルトの名無しさん (ワッチョイ 877c-eVvB)
2019/05/26(日) 17:56:41.22ID:NrZyzakr0
>>702
継承はだめだよ
これから使ったら反省文ね
704デフォルトの名無しさん (ワッチョイ df33-Fpyl)
2019/05/26(日) 18:07:56.35ID:aNhG7Lwu0
>>702
むちゃくちゃだなぁ。「私のいうところの」「継承」「委譲」の区別がどうにも掴めないし、
その区別の意義も示されなさそうだし、迷惑してる人もいるみたいだから、離脱させてもらうよ。
705 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 18:09:31.06ID:CpBTYp0n0
>>703
私がいつ「継承は要らない子」とかいいましたか?
あくまでも「継承を委譲で実装できない」とは言っていますが(これは部分的に意見を修正していますが)「継承不要論」とかは一切主張していないと考えていますよ
706 ◆QZaw55cn4c (ワッチョイ c798-SwLn)
2019/05/26(日) 18:13:13.41ID:CpBTYp0n0
>>704
継承と委譲の区別は必要だと思いますよ、その言葉を贈らせていただきましょう
707デフォルトの名無しさん (ワッチョイ 877c-eVvB)
2019/05/26(日) 18:34:08.86ID:NrZyzakr0
>>705
だから、世界の共通認識として要らないもの。
使っちゃだめ。
708デフォルトの名無しさん (ワッチョイ 7f63-+klA)
2019/05/26(日) 18:57:26.86ID:mCW+tIqA0
もういい加減やめてくれないかな
やりたいなら、Cでクラス実装とかって
別スレたててその中でやってくれ
709デフォルトの名無しさん (ワッチョイ 877c-eVvB)
2019/05/26(日) 19:03:45.32ID:NrZyzakr0
>>708
またおまえか
710デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/26(日) 20:50:42.22ID:o+/j3IaP0
>>706
私のいうところのって、最初の論旨からずいぶん乖離しているな
カプセル化や継承ができるかどうかって話だっただろうがよ

いつから、おまえのお気に召すかどうかって話になったんだよ
711デフォルトの名無しさん (ワッチョイ bfba-GX6Y)
2019/05/26(日) 23:38:41.06ID:SA/0I36h0
>>686
煽って、良い文献の情報を得ようとしているのだろうが、カスにはやらんよwwww
712デフォルトの名無しさん (ワッチョイ dfad-Yys2)
2019/05/27(月) 01:54:45.96ID:sXav5Bzw0
https://jp.quora.com/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B
713デフォルトの名無しさん (ワッチョイ 7f63-+klA)
2019/05/27(月) 02:52:02.77ID:jiPRfYyG0
ソロソロ終わって良いですよね?
この議論は、C使っている人とは違う世界に感じる
714デフォルトの名無しさん (ワッチョイ e77c-eVvB)
2019/05/27(月) 03:09:42.07ID:HzhW79+j0
>>713
またおまえか
715デフォルトの名無しさん (ワッチョイ 87d2-Ni/X)
2019/05/27(月) 09:01:49.81ID:Nqk3VxBP0
stddef.hをインクルードして
#define __STDC_WANT_LIB_EXT1__ 1
を定義して
-std=c11をつけても
gccでrsize_tが使えないですけど
なぜですか?
windows版のGCCでは使えました
716デフォルトの名無しさん (アウアウカー Sa3b-eVvB)
2019/05/27(月) 09:23:40.73ID:or6IbtWZa
defineの順番とか…
717デフォルトの名無しさん (ワッチョイ 87d2-Ni/X)
2019/05/27(月) 09:34:14.79ID:Nqk3VxBP0
>>716
順番は試しましたが駄目でした
718デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/27(月) 10:04:44.33ID:PB+ZSyAza
rsize_tって多分オプションだから実装されてないよね?
windowsはなぜか実装してる
719デフォルトの名無しさん (ワッチョイ bfba-9b2Z)
2019/05/27(月) 10:11:08.57ID:Zyn15i1D0
C#でポインタ使えばC、C++は無くても良いんじゃないですか?
720デフォルトの名無しさん (ラクペッ MM7b-n/qg)
2019/05/27(月) 10:15:55.39ID:gR3ITcWOM
C#使うならポインタのように面倒臭いこと考えなくても変数でも関数でも参照できるだろ
721デフォルトの名無しさん (ワッチョイ df79-buEI)
2019/05/27(月) 19:48:50.47ID:0mZL0xC90
C#のポインタはC/C++ほど使い勝手が良くない
C#でポインタを使ったところでパフォーマンスはC++の半分程度

まあトータルで見れば最優秀クラスの言語なのは間違いないけどね
C++みたいなスパゲティ言語ではないし
722デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/27(月) 20:36:21.78ID:f4m/nmMua
まあ、だいたいの後から出た言語はC/C++の欠点を補おうとしているのでポインタがあっても安全なのが普通だな。
723デフォルトの名無しさん (ワッチョイ c7c3-OWKl)
2019/05/27(月) 20:42:45.71ID:MaSSH1d10
安全じゃないのがc#のポインタの特長だろ。
特徴じゃなく
724デフォルトの名無しさん (アウアウウー Saab-/OyN)
2019/05/27(月) 21:12:57.55ID:RgnUDQi4a
そりゃC#のポインタ使うにはunsafeオプションが必要だからね。安全じゃないわね。
C#のポインタは過去資産APIを使うための必要悪って感じか。
725デフォルトの名無しさん (ドコグロ MM1b-LXA5)
2019/05/28(火) 07:12:55.99ID:gr6HI2ftM
>>722
Cの前からでてたPascalにもポインタはあるんだが…
むしろC/C++が例外的
726デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/28(火) 09:09:59.25ID:HGTlDNNW0
数年前からこのプロジェクトがちょっと注目されてるけどどう思う?
RustはC++を置き換えてもCを置き換えないだろうと思うし、
ZigはCの置き換えとしては妥当なんじゃないかという気がする。
Cより高速、単純、堅牢らしい。
https://ziglang.org/
727デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/28(火) 09:29:30.01ID:HGTlDNNW0
Cより速いと主張
>Speaking of performance, Zig is faster than C.

単純な言語仕様
>Small, simple language

性能と堅牢性
>Performance and Safety: Choose Two

個人的にとても興味を持ってるんだが
728デフォルトの名無しさん (ワッチョイ df79-buEI)
2019/05/28(火) 17:05:35.46ID:5GqHhS1Q0
CはC++ほどではないにせよ色々酷いから
Cを置き換えられる言語があるなら見てみたいしぜひ置き換えてほしい
729デフォルトの名無しさん (ワッチョイ dfa5-vAXu)
2019/05/28(火) 17:30:53.21ID:vL2LyOeQ0
>>726
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚
ちょっと検索してみたらもうドット絵まで準備されてるらしい
さすがに西洋人は仕事が早いな
730デフォルトの名無しさん (ワッチョイ df01-1tV+)
2019/05/28(火) 19:02:59.10ID:Pzgny9jf0
https://www.datadeliver.net/receiver/file_box.do?fb=966f97555e424f19a29d0d866b4b3cf5&;rc=683943257e194056afc95195b542ba5d&lang=ja

キューを実装する?プログラムを書いたのだがコアダンプになってしまったため、どこが悪いのか調べるために1回だけenqueueをするように変えたら無限に10を生成するようになってしまった
どこが悪かったのか、どうして10が無限に生成されるのか、教えて欲しい

環境は学校の端末演習室でやったから詳しいことはわからんです
731デフォルトの名無しさん (ワッチョイ 075f-dzUy)
2019/05/28(火) 19:04:37.65ID:F6815kaN0
>>730
それじゃあ検証のしようがない
ネットカフェで書いてここに晒せ
732デフォルトの名無しさん (ワッチョイ dfa5-vAXu)
2019/05/28(火) 20:11:39.46ID:vL2LyOeQ0
「無限に10を生成するようになってしまった」「どうして10が無限に生成されるのか」
コレがポイントだな
無限に生成してるように見えるだけだよ

要するにprintが悪い
whileだと分かりづらいんだよ
forだとラク
「q->head = temp;」とか、自分で書いてて分からなかったんだろ
だからwhile文だとこのケースでは分かりにくくなる
forを試gうのが正解

void print(struct queuel *q){
struct cell *pt;

printf("[");
for( pt = q; pt != NULL; pt = pt->next ){
printf(" %d", pt->data);
}
printf(" ]\n");

}
733デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/28(火) 21:09:24.77ID:Rd7hCJnFa
>>725
Pascalの方が先にできたんだっけ?

まあでも用途が大幅に違うよね。Pascalはコンピュータの学習用の高級言語でCはOS記述用でアセンブラ代わりに使う言語。
734デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/28(火) 21:27:52.19ID:jSvCRMUQ0
Pascalが嫌いな人が作った言語だ
735デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/28(火) 22:21:26.92ID:/lAZ9dU10
>>733
だからそんなことを言い出したら>>722の言うポインタが安全な言語って用途が違う言語だよね
って話にしかならないんだが…
736デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/28(火) 22:24:51.47ID:Rd7hCJnFa
>>735
まあそうだな。
Cは用途が違う上に古くて安全性が低い感じか。
737デフォルトの名無しさん (ワッチョイ 67f6-dCWx)
2019/05/28(火) 23:20:22.65ID:jSvCRMUQ0
安全性って何だよ
インテルのerrataみたいなことか?
738デフォルトの名無しさん (ワッチョイ 7f63-+klA)
2019/05/28(火) 23:34:40.02ID:IamnQRk90
子供にはナイフを使わせるなというのと同じ類いか
739デフォルトの名無しさん (ワッチョイ df01-LXA5)
2019/05/29(水) 04:57:03.97ID:mWed49vm0
>>736
いやOSを書くにはその安全性が邪魔になるから両立は難しいよ
740デフォルトの名無しさん (ワッチョイ dfb9-9b2Z)
2019/05/29(水) 06:20:35.18ID:D5Uzvk1s0
OSのコードはどんな感じなの?
ポインタを使ったトリッキーな事をやってるの?

未だにLinuxでバッファオーバーフローの脆弱性出てるよね
741デフォルトの名無しさん (ドコグロ MM3b-LXA5)
2019/05/29(水) 06:48:57.50ID:Bfh00rIBM
>>740
OSのソースなんてちょっとググればいくらでも出てくるから自分で見なよ
742デフォルトの名無しさん (ワッチョイ 67ab-K/jJ)
2019/05/29(水) 07:45:37.52ID:6C23lth10
見たこともないやつが議論してたのかよ
743デフォルトの名無しさん (ワッチョイ dfa5-vAXu)
2019/05/29(水) 08:03:59.01ID:aFUCBt4U0
詳細linuxとかいう1000ページの宗教書だろ
持ってるだけで御利益がある
744デフォルトの名無しさん (スプッッ Sd9f-OWKl)
2019/05/29(水) 08:13:08.04ID:akQz27P/d
オープンソースなのだから1分もあればソースコードくらい見られるだろうに
745 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
2019/05/29(水) 18:31:01.76ID:8RGCI4670
>>740
>未だにLinuxでバッファオーバーフローの脆弱性出てるよね
最近は聞かないね…
746デフォルトの名無しさん (アウアウエー Sa9f-eVvB)
2019/05/29(水) 19:51:04.91ID:D+pGsdPRa
今普通に静的・動的解析使うとバッファオーバーフローなんてあり得ない感じするわ。
747デフォルトの名無しさん (ワッチョイ df73-buEI)
2019/05/29(水) 20:40:15.44ID:rT4tqcG+0
strcpyとかsprintfとか使ってるコードはまだたくさんあるでしょ
dstのサイズ指定しないライブラリとか
748デフォルトの名無しさん (アウアウウー Saab-EYzY)
2019/05/29(水) 21:00:57.32ID:FFsAnOexa
Cは標準ライブラリ考え直した方が良いかもね。
749デフォルトの名無しさん (トンモー MM97-OIQ8)
2019/05/31(金) 08:23:23.52ID:JBiczG6TM
Cが最も好きだけど、
C十十のほうがライブラリが
便利なのあるから、
個人で趣味で作るものは最近は
CとC++混在で作ります。
わりと自由に混在できるので
とても助かってます。
こうゆの俺だけですかね?
750デフォルトの名無しさん (アウアウエー Sae2-z5vN)
2019/05/31(金) 08:28:11.59ID:7PD5X056a
C††
751デフォルトの名無しさん (ワッチョイ eaa5-K9GS)
2019/05/31(金) 08:30:02.90ID:LyENK1r60
C‡‡
752デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
2019/05/31(金) 09:21:15.46ID:GTUdpXapa
С++

キリル文字
753デフォルトの名無しさん (トンモー MM97-OIQ8)
2019/05/31(金) 18:42:40.60ID:JBiczG6TM
C十十つ
―ー
754デフォルトの名無しさん (ワッチョイ 0b52-2ZOZ)
2019/05/31(金) 18:46:16.16ID:4felF8bG0
C田田
755デフォルトの名無しさん (ブーイモ MM97-v/1q)
2019/05/31(金) 19:11:42.88ID:Ki0lpFF5M
C云々
756デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
2019/05/31(金) 19:45:27.77ID:/GnAMAD/a
⊂┼┼
757デフォルトの名無しさん (スップ Sd8a-sEZ+)
2019/05/31(金) 21:44:53.32ID:r0b/3vSWd
C言語認定一級を取得したら転職でどれぐらい評価されますか?
758デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
2019/05/31(金) 21:48:01.31ID:I0+j7s4/a
さあ?
その会社がどの程度その知識を必要としているかで変わるのでは?
759デフォルトの名無しさん (スップ Sd8a-sEZ+)
2019/05/31(金) 21:48:52.32ID:r0b/3vSWd
>>758
そういうときは一般化して正確じゃなくても妥当な範囲で思考して回答する癖をつけましょうね~
760デフォルトの名無しさん (ワッチョイ 5b01-lck+)
2019/05/31(金) 21:56:26.15ID:OHagz7+U0
うちの周囲じゃ全く参考にもしていないし資格給が出るわけでもないって所が多いな
761デフォルトの名無しさん (ワッチョイ 9f02-yed5)
2019/05/31(金) 22:06:46.05ID:4X6MeSMk0
英検1級の方が重要そう。
762デフォルトの名無しさん (スフッ Sd8a-92O4)
2019/06/01(土) 11:44:52.57ID:2YdNSpFdd
http://codepad.org/NUCaFYyE
雨が降る様子を自分の今持ってる知識だけで作ろうとしたんですが、表現が上手くできてない気がします

だれか改善案があれば助言お願いします
763デフォルトの名無しさん (ワッチョイ 8a52-gkx+)
2019/06/01(土) 18:13:48.99ID:w9UetZ9K0
>>762
それはC言語の問題ではなかろう
764デフォルトの名無しさん (スフッ Sd8a-92O4)
2019/06/01(土) 18:56:55.84ID:2YdNSpFdd
>>763
抜けてました
プログラムの問題として、実行すると縦に雨粒が重なってしまうのが目立っていて、この原因がわからず質問しようと思いました。
765デフォルトの名無しさん (ワッチョイ 8a52-gkx+)
2019/06/01(土) 19:26:44.16ID:w9UetZ9K0
>>764
それは使用する言語とは無関係に、雨らしく見せるアルゴリズムの問題ではないか?
ある処理をC言語で実現したいがどう書いていいか分からないとか、書いたものが想定通りにならないのはなぜかとかなら答えようがあるが。
766デフォルトの名無しさん (スフッ Sd8a-92O4)
2019/06/01(土) 21:18:58.51ID:2YdNSpFdd
>>765
1番上の行で雨を発生させるとき何列目で発生させるかは乱数できめているはずなのに、何行か連続で同じ列に発生しているのがよく見られていて、それが何故なのかがわかりません。

このプログラムは改良中のもので、その前のプログラムは雨粒が全部同じ速さのやつを作っていてそれは問題なく(上の現象も起きず)動いていたので、乱数でなくプログラムの問題かなと思って質問しました
767デフォルトの名無しさん (ワッチョイ 0b52-2ZOZ)
2019/06/01(土) 21:37:41.87ID:njUSTe0T0
>>766
乱数っていうのは偏るものだから、同じ列に連続して発生することが普通。
同じ列に発生しないような作為をする場合は乱数とは言わないと思う。
https://twitter.com/Newton_Science/status/1031788874836529152

あと、'o'が縦に連続するのに違和感があるのなら'|'などに置き換えれば良いと思う。
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚
みたいな感じで
適当に作っててチカチカしちゃってるからあまり参考にならないかもしれない
https://twitter.com/5chan_nel (5ch newer account)
768デフォルトの名無しさん (スフッ Sd8a-92O4)
2019/06/01(土) 22:01:32.09ID:2YdNSpFdd
>>767
すごい!!!
一気に雨っぽく見えるようになりましたw

乱数の件大変勉強になりました
もっと改良するとしたら、そのツイートのように不自然に見えるランダムさをなくすため振るいにかけるような工夫もしてみようと思います。

あと、もしよければGIFのやつのソースコードを貼ってもらえないでしょうか。よろしくお願いします
769デフォルトの名無しさん (アウアウエー Sae2-z5vN)
2019/06/01(土) 22:03:49.20ID:gZsm+Fjra
一様分布でなくても乱数とは言えるだろう
770デフォルトの名無しさん (ワッチョイ 0b52-2ZOZ)
2019/06/01(土) 22:10:20.53ID:njUSTe0T0
>>768
一応貼るけど自分はC言語あまり得意でない上に適当にササっと作ったのだからあんまり参考にはしないでほしい
https://ideone.com/FG3nNS

system("cls")で画面更新してるけどチカチカさせずに滑らかに動かしたいならpdcursesとか使ったほうが良いと思う
あとLinuxだったらclsでは動かない
771デフォルトの名無しさん (スププ Sd8a-92O4)
2019/06/02(日) 08:12:25.21ID:Df5btDJSd
>>770
ありがとうございます!
初心者なので関数の使い方とか、あと自分がいかに無駄なコードを書いてたかとかがわかってとても参考になります

調べてみようと思います。ありがとうございました
772デフォルトの名無しさん (ワッチョイ cbf6-2ZOZ)
2019/06/02(日) 13:28:56.70ID:gM/IYiKd0
constが外れるのにキャストせずに
char *p = "abc";
とできることを定めている条文どこだっけ?
773デフォルトの名無しさん (アウアウエー Sae2-z5vN)
2019/06/02(日) 14:35:27.10ID:hvNC8EHQa
初期化はちょっと違うんじゃねえかな
774デフォルトの名無しさん (ワッチョイ e69d-paY0)
2019/06/03(月) 19:44:47.54ID:JpBlPJqE0
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚
ちんぷんかんぷんなので教えて下さい
775デフォルトの名無しさん (ワッチョイ 5bdc-2ZOZ)
2019/06/03(月) 19:47:13.69ID:aVpNGdHY0
火の玉ストレートでワロタw
776デフォルトの名無しさん (ワッチョイ 17c3-RRN7)
2019/06/03(月) 19:51:23.16ID:NMMhu3n80
>>774
糞みたいな問題だな
家木臭すぎ
777デフォルトの名無しさん (ワッチョイ e69d-paY0)
2019/06/03(月) 19:56:34.99ID:JpBlPJqE0
解決しました
778デフォルトの名無しさん (ワッチョイ bb01-enjb)
2019/06/03(月) 19:56:39.36ID:vGrK+0JX0
もうちょっときれいに写せないのか
779デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
2019/06/03(月) 21:20:26.29ID:CuEu7mica
影があって見えない。

ていうか、試験中に撮影して書き込みか?
思い切ったカンニングだな。
780772 (ワッチョイ cbf6-2ZOZ)
2019/06/03(月) 22:17:42.98ID:V6PZ+bAi0
(3)のとこ、この試験問題を作った教官がどういう教え方をしているのか聞かせてくれ
781デフォルトの名無しさん (ワッチョイ cbf6-2ZOZ)
2019/06/03(月) 22:19:26.68ID:V6PZ+bAi0
正解は *(const char **)&s なんだが解答群にねえだろ
782デフォルトの名無しさん (ワッチョイ 6a33-yed5)
2019/06/04(火) 01:35:34.87ID:TgdlAqGq0
>>781 C++11以降でもなさそうだし、回答群にあるsでいいでしょ。
783デフォルトの名無しさん (ワッチョイ 8a52-gkx+)
2019/06/04(火) 07:58:43.31ID:e9k+jtYr0
タイミングがよすぎるし>>772>>774は同一人物なのかな
784デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
2019/06/04(火) 10:12:17.26ID:prB+PlYza
ワッチョイからすると別のようだが
785デフォルトの名無しさん (アークセー Sx33-enjb)
2019/06/04(火) 10:47:57.52ID:PKXus+yhx
簡単なテストがちんぷんかんぷんな人が規約を気にするとは思えない。
786デフォルトの名無しさん (SG 0H37-NP7i)
2019/06/04(火) 11:04:10.57ID:eBRK1s1cH
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる   
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚  
     
① スマホでたいむばんくを入手  
② 会員登録を済ませる     
③ マイページへ移動する   
④ 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)     
   
今なら更に4日18時までの登録で2倍の600円の紹介金を入手    
クオカードとすかいらーく優待券を両方ゲットできます。  
    
数分で終えられるのでぜひお試し下さい。 
787デフォルトの名無しさん (SG 0Hab-z2gS)
2019/06/04(火) 13:24:20.51ID:VVsdR08YH
>>786
QUOカード良いな
788デフォルトの名無しさん (ブーイモ MM3f-Paxd)
2019/06/04(火) 15:35:37.38ID:ZIqEmt8SM
>>786
複数スレに書き込みまくってID変えてレスも書き込みまくってる。
789デフォルトの名無しさん (ワッチョイ 0b52-2ZOZ)
2019/06/04(火) 17:39:59.80ID:dFy1Csfg0
迷惑メール来るようになるっていう報告もあるからこれはスルーしたほうが良いと思う
790デフォルトの名無しさん (ワッチョイ 5bdc-2ZOZ)
2019/06/04(火) 17:46:57.34ID:VrCvogjT0
ありとあらゆるスレに貼られてるbotだから気にしなくていいぞw
791デフォルトの名無しさん (ワッチョイ be63-hDDM)
2019/06/04(火) 17:48:42.06ID:rpsLXROr0
内容を変えてNG対策すり抜けをやろうとしているから、悪質だと考えた
792デフォルトの名無しさん (アウアウウー Sa1f-gkx+)
2019/06/04(火) 18:10:41.59ID:QEritYjya
サービスの提供もとに不正行為として通報して、そいつの招待コードとやらを無効にさせられないかな。
793デフォルトの名無しさん (ワッチョイ be63-hDDM)
2019/06/04(火) 18:49:11.42ID:rpsLXROr0
提供元も共犯だろう
794デフォルトの名無しさん (ワッチョイ 0b52-2ZOZ)
2019/06/04(火) 20:15:40.66ID:dFy1Csfg0
これってどこの企業がやってるんだろう
普通に5chでは荒らしに近い迷惑行為だしなんとかできないかな
795デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
2019/06/04(火) 20:19:32.69ID:RBIldFVda
しかし500円だの600円だのしょぼいな。
PayPayみたいにずっと二割引でたまに全額当たるぐらいやらなきゃ宣伝にならんだろう。
796デフォルトの名無しさん (ワッチョイ be63-hDDM)
2019/06/04(火) 20:43:44.67ID:rpsLXROr0
宣伝じゃなく、個人情報の収集だから
797デフォルトの名無しさん (ワッチョイ 7e12-DKzK)
2019/06/05(水) 00:33:04.12ID:ZHHYr8Rz0
とてもいいアプリだからダウンロードして星つけてあげたらいいと思うよ
798デフォルトの名無しさん (アウアウウー Sa1f-Y/KN)
2019/06/05(水) 10:04:09.95ID:Fd++qFdya
激しいステマ
799デフォルトの名無しさん (JP 0H73-Ywhw)
2019/06/07(金) 16:33:58.73ID:uIEpx76AH
真って0でしたっけ?1でしたっけ?0以外でしたっけ?1以外でしたっけ?
800デフォルトの名無しさん (アウアウエー Sa93-N0IE)
2019/06/07(金) 17:02:27.40ID:HLWbZT6Fa
>>799
bool型の1です。
801デフォルトの名無しさん (ワッチョイ cde8-LJAA)
2019/06/07(金) 17:27:02.62ID:RHh4qcVs0
0以外は真として扱われることが多いな。
0は明示的にfalseになると思う。
そのfalseの否定がtrue。
802デフォルトの名無しさん (ワッチョイ d769-0JeU)
2019/06/07(金) 17:31:47.53ID:OLbvc6Nr0
論理演算結果を整数化したら 偽が0 真は1
整数を論理評価したら 偽が0 で真はそれ以外
803デフォルトの名無しさん (ワッチョイ 8763-FAmt)
2019/06/07(金) 17:33:03.09ID:sehGKr170
#define TRUE (1==1)
#define FALSE (!TRUE)

こんな事書いてたな
値がいくつなのかは気にしなかった
804デフォルトの名無しさん (ワッチョイ f9d2-K3Ee)
2019/06/07(金) 20:41:26.72ID:NHeyKhkN0
OR EAX,EAX
JZ FALSE
JNZ TRUE

こんなんか?
805デフォルトの名無しさん (ワッチョイ cdab-BGv3)
2019/06/07(金) 21:31:11.89ID:51aJPRpO0
TRUEと比較するなって先輩に言われたろ
806デフォルトの名無しさん (ワッチョイ a101-0JeU)
2019/06/07(金) 21:37:49.54ID:e6zybBXY0
!!a == TRUE ならセーフになると思われるー
807デフォルトの名無しさん (スプッッ Sddb-7MqU)
2019/06/07(金) 22:15:27.47ID:RQudHa2vd
論理演算では1が真なのに終了は1が異常終了なのはなぜですか?
1が正しく0が間違いというイメージなのですが
808デフォルトの名無しさん (ワッチョイ cde8-LJAA)
2019/06/07(金) 22:18:06.19ID:RHh4qcVs0
昔はintを返す習慣が多分にあったのでその習慣によるが、自分は異常終了は-1返してたな。
809デフォルトの名無しさん (アウアウカー Sad3-N0IE)
2019/06/07(金) 22:19:30.98ID:0dWbT8qma
>>807
いや、boolが戻り値なら真を成功にすることがむしろ多いと思う。
「エラーを返す」関数の需要が多いということではないか。
810デフォルトの名無しさん (ワッチョイ cdab-BGv3)
2019/06/07(金) 22:21:18.54ID:51aJPRpO0
エラーの種類を沢山返せるから
811デフォルトの名無しさん (ワッチョイ a101-0JeU)
2019/06/07(金) 22:23:25.13ID:e6zybBXY0
正常というのは1つの状態しかないが
異常には色々な種類があるのでそれを区別するためにコードとして返したい

というのと

2値しかない真偽をどう値に配分するか

というのを同列に並べるとパニック。 C言語では別のものとして割り切る


なぜC言語では偽を0に割り当てたのか?という問いの答えを求めているのならば…
俺は知らない
812デフォルトの名無しさん (アークセー Sx63-gnfa)
2019/06/07(金) 22:23:54.80ID:Bjvb97BWx
>>807
正常は 0でいいけど、異常はいろいろな状態の別を報告できるようにでは
813デフォルトの名無しさん (ワッチョイ cdab-BGv3)
2019/06/07(金) 22:30:40.09ID:51aJPRpO0
ソフト会社に長年いて開発者からこの質問は初
OSインストールできませんなんてすごく高度なんだなって思った

コマンドのテストでコマンドの戻り値ってあるんですがなんですか?
814デフォルトの名無しさん (アウアウカー Sad3-N0IE)
2019/06/07(金) 22:36:39.33ID:0dWbT8qma
>>813
windowsの終了ステータスの確認の仕方とか忘れるしなあ。
言葉で出てくる結果しか見れないなんて普通だと思うわ。
815デフォルトの名無しさん (ワッチョイ 77f2-to8s)
2019/06/07(金) 22:42:11.06ID:xj9RlcCA0
0が偽なのにnoerrというイカれた慣習はどうして生まれたんだろうねぇ。
816デフォルトの名無しさん (アークセー Sx6f-gnfa)
2019/06/07(金) 22:58:47.67ID:DaiiMVNnx
最初に誕生した OS、system/360 の JCLでも、正常は 0、警告が 4だったか 8だったかで、異常が 8だったか 16だったかだったな
z/OSでも同じだろうけど
知らんけど
817デフォルトの名無しさん (ワッチョイ 8763-FAmt)
2019/06/07(金) 23:33:27.02ID:sehGKr170
幸福な戻り値はどれも似たものだが、不幸な戻り値はいずれもそれぞれに不幸なものである。
818デフォルトの名無しさん (ワッチョイ 9701-LJAA)
2019/06/07(金) 23:33:41.86ID:nzmV+Edn0
if (error == 0)
で違和感ないじゃん
819デフォルトの名無しさん (ワッチョイ e1f6-to8s)
2019/06/08(土) 03:30:43.12ID:KzIynz9K0
0 informational
1 warning
2 error
3 severe
4 critical
820デフォルトの名無しさん (ワッチョイ 417b-sn8J)
2019/06/08(土) 11:21:36.15ID:5iouJYEP0
返り値0でエラーなしはUNIXのコマンド終了ステータス以来の慣習かな。
「正常終了」は状態が1種類しかないけど、失敗は「どう失敗したか」で
複数の状態があるから、正常で0、他の値はエラーコードってのは便利でしょ。

論理演算子の結果で true false の1と0は、論理学の数値表現を
プログラム言語にそのまま写しこんだからじゃないかと。

関数は一般にエラー状態を返り値で返す、と思っていれば
正常 == 返り値0 == false は違和感ないかと。
このルールから外れてるのは「失敗時にNULLを返す」タイプの関数で、
結構たくさん存在するのが困ったところだけど。
821デフォルトの名無しさん (ワッチョイ c379-uQfi)
2019/06/08(土) 11:32:28.80ID:7CBKOF2N0
Cでは同一のもとして動かせてしまうが
そもそもエラーコードとboolを同一視してる時点で論外なんだが
822デフォルトの名無しさん (ワッチョイ 77f2-to8s)
2019/06/08(土) 11:38:57.76ID:WG7jlf5q0
論理型を別に設けずに整数型で代用してしまおうというアイデアはBやCの言語仕様をコンパクトに
抑えるのに役立ったが、今となってはプリプロセッサマクロと同じくらいの悪しき遺産だなぁ。
823デフォルトの名無しさん (ワッチョイ e1f6-to8s)
2019/06/08(土) 14:58:06.03ID:KzIynz9K0
え、何か問題あるか?
824デフォルトの名無しさん (ラクペッ MM65-nBye)
2019/06/08(土) 15:35:48.39ID:X+3AMWAUM
C99以降であれば_Bool型を使えばいいのでは?
825デフォルトの名無しさん (ワッチョイ e1f6-to8s)
2019/06/08(土) 15:41:42.45ID:KzIynz9K0
ダメだこりゃ
826デフォルトの名無しさん (ブーイモ MM5b-XTNn)
2019/06/08(土) 15:41:57.08ID:bm2ApAetM
正常時1で異常時0を返す関数が混ざってたり
正常時ポインタで異常時ヌルポ返す関数があったり
それらの関数の返り値を全部 if でチェックしててカオスだったことがあります
827デフォルトの名無しさん (ワッチョイ e1f6-to8s)
2019/06/08(土) 15:56:39.68ID:KzIynz9K0
BOOLを返す関数が負数を返したかどうか調べにゃあかんやつとかな
828デフォルトの名無しさん (ワッチョイ 77f2-to8s)
2019/06/08(土) 16:38:04.87ID:WG7jlf5q0
ワインバーグの本にあったなあ。ドル紙幣はみんな同じ色、同じサイズで見分けがつきにくいけど、
それが常識だと思っている人は、一定の確率で間違えてしまうことも世界の法則で仕方のない
ことだと思っているとか。
829デフォルトの名無しさん (ワッチョイ 13f9-K3Ee)
2019/06/08(土) 17:13:44.27ID:auwh2hzj0
>>827
GetMessage()の悪口はいくら言ってもよいぞ
DWORDにしとけよ
830デフォルトの名無しさん (ワッチョイ 7b73-uQfi)
2019/06/08(土) 18:39:07.71ID:jm0tDZO60
>>826
カオスっていうかこれ普通じゃない?
標準ライブラリのラッパー書くとき互換性保つために0成功にするでしょ
で他のオレオレライブラリはboolという
831デフォルトの名無しさん (ワッチョイ 9bd2-9700)
2019/06/08(土) 18:53:36.19ID:jXs/KV+s0
戻り地がboolのときはtrueが成功
intのときは0が成功なんだよ
832デフォルトの名無しさん (ワッチョイ 9701-LJAA)
2019/06/08(土) 19:39:01.75ID:ogfAGAzJ0
bool型ができたのはC99のときなので
833デフォルトの名無しさん (ワッチョイ 7b73-uQfi)
2019/06/08(土) 19:42:23.71ID:jm0tDZO60
boolぐらいなにもインクルードしなくても使わせてくれぽよ
834デフォルトの名無しさん (ワッチョイ 9701-LJAA)
2019/06/08(土) 19:54:54.89ID:ogfAGAzJ0
「歴史的理由」という奴
835デフォルトの名無しさん (アウアウウー Sa1d-I703)
2019/06/08(土) 21:28:56.66ID:gCLo3iIIa
>>830
それのせいでPrelではシステムコールと同名の関数の返り値がいまいち統一取れてなかったりして、結局マニュアル見ながら個別に覚えざるを得なかったりする。
Perlはだいたいは1が成功でundefが失敗なんだけどね。(undefはCでのNULLみたいなもの。未定義を意味する。定義されてて値が0の時とは違うが、書き方によっては同じように扱えることもある)。
836デフォルトの名無しさん (アウアウエー Sa93-N0IE)
2019/06/08(土) 21:58:16.60ID:nbjDJ9kZa
今C++にあるoptionalだっけ?
あんな感じの有ってもいいな。かなりうざい感じになるから使わんか。
837デフォルトの名無しさん (ワッチョイ c38c-LJAA)
2019/06/09(日) 11:06:53.62ID:42ARNGRn0
インクルードをURLで引っ張ってこれたら面白いのに。
838デフォルトの名無しさん (ワッチョイ cdab-BGv3)
2019/06/09(日) 11:17:01.45ID:ZHA7gcDF0
一発でウイルス仕込まれそう
839デフォルトの名無しさん (ワッチョイ ebb6-fbqF)
2019/06/09(日) 11:59:40.15ID:W83DJxDE0
コスパ最強の副業「動画編集」で稼ぐ方法【生ハム登場】


【最強の副業】動画編集で稼ぎ続ける人の条件【未来予想】


【おすすめ副業・在宅ワーク】「動画編集」は初心者でも時給1,500円狙えます。

;t=168s
【与沢翼】動画編集素人でも本気でやれば個人で月収1000万も夢ではないですよ。
実は動画ってすぐプロと同じクオリティで作れちゃうし月収20万はすぐですよ


センスのいい映像を短時間で編集する方法

840デフォルトの名無しさん (ワッチョイ 5b02-EF/o)
2019/06/09(日) 14:38:56.62ID:zgQq0a060
>>837
/use/include ディレクトリをNFS マウントでもしとけ。
841デフォルトの名無しさん (スプッッ Sddb-EU19)
2019/06/11(火) 14:18:29.61ID:suKt4vmPd
すみません、質問があります。

環境はlinuxです。
ある共有ライブラリlibA.soをロードするプログラムbがあります。
このプログラムbをlibA.so抜きでgccでビルドすることはできるでしょうか?
もちろん実行時にはlibA.soは用意します。
842デフォルトの名無しさん (アウアウウー Sa1d-I703)
2019/06/11(火) 15:09:21.38ID:UmxJxqMia
>>841
リンクされる関数やグローバル変数が全て揃ってれば誤魔化し効くのではないかな。
843デフォルトの名無しさん (アウアウエー Sa93-N0IE)
2019/06/11(火) 16:20:37.89ID:X43Szptna
シンボルだけ定義したsoファイルを用意するのが普通ではないかと
844デフォルトの名無しさん (ワッチョイ 73a5-17Kf)
2019/06/11(火) 18:35:03.43ID:z8NS6dzQ0
ダミーファイルを用意とか、かっけえな
845デフォルトの名無しさん (アウアウウー Sa1d-I703)
2019/06/11(火) 20:38:50.54ID:UmxJxqMia
そ、そうか?
846デフォルトの名無しさん (スプッッ Sddb-EU19)
2019/06/11(火) 21:26:50.36ID:suKt4vmPd
ビルド用のsoファイルを用意する、でいこうと思います。ありがとうございました!
847デフォルトの名無しさん (アウアウカー Sad3-N0IE)
2019/06/11(火) 22:01:48.05ID:vnr40KfNa
スタブってやつね。
dlopen使うと基本そうなると思う。
もともと自動的なシンボル解決してる場合は無視できたかも。
848デフォルトの名無しさん (ワッチョイ 5b12-d1P0)
2019/06/12(水) 00:00:59.88ID:82Q6hISi0
>>847
お前は何を言ってるんだ
849デフォルトの名無しさん (ワッチョイ 6b2c-MqbY)
2019/06/12(水) 02:05:00.40ID:vWkgJgOw0
たぶん、DLL import, export みたいな定義ファイルさえあれば、コンパイルできるだろ?
850デフォルトの名無しさん (アウアウウー Sa1d-I703)
2019/06/12(水) 09:25:53.48ID:apqCeTcNa
DLL? Windowsだとそうなの?
851デフォルトの名無しさん (ワッチョイ d769-0JeU)
2019/06/12(水) 10:40:58.95ID:QpFBULjO0
a) dll import キーワードつきのヘッダでコンパイル
 DLLを読み込みシンボル解決する .lib をリンク
 実行時には dll 読み込みをやってくれる (無いと文句言う)

b) 自前で DLL読み込んで GetProcAddress で関ポにセットして、
その関ポを呼び出すラップ関数を用意
  自前ロードしてるので、実行時に無い時別の処理の記述が可能になるん
852デフォルトの名無しさん (スフッ Sdba-58Oz)
2019/06/13(木) 13:22:19.29ID:tXoihok+d
大学でc言語を学び始めました
ポインタが意味不明でした
何がわからないのかわからない
853デフォルトの名無しさん (アークセー Sxbb-6CEg)
2019/06/13(木) 13:54:13.91ID:wTJRUi3Ix
メモリとアドレスの概念が分かってないからじゃね?
854デフォルトの名無しさん (ワッチョイ 03dc-9ye8)
2019/06/13(木) 19:07:04.64ID:mXxRrk+K0
現実世界にポインタと同じものを説明する概念がないから簡単な説明のしようがないんだよなぁ。住所録とか余計こんがらがるし。
素直に本を沢山読んでプログラムを組んで慣れるしか無い
855デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/13(木) 19:27:38.29ID:HQZYLHkVa
本にページ数がない世界?
856デフォルトの名無しさん (ワッチョイ 677d-58Oz)
2019/06/13(木) 20:56:34.51ID:8abVSTNa0
アドレスは&つけてprintfした時に出てくるやつでしょ?
箱のラベルみたいなのだとかなんとか言われた気がする
メモリは単純に容量?

別関数で計算した値をmain関数に持ってくる時にポインタを使えばreturnがいらないだとかコピーじゃなくて直接数値を変えるから処理が楽だとか書いてあるけど結局普通に代入するのに比べて利点がよくわからない
857デフォルトの名無しさん (ワッチョイ f3ab-HbHi)
2019/06/13(木) 21:10:17.33ID:mvKDv9Bs0
タワーマンション
858デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/13(木) 21:10:41.15ID:HQZYLHkVa
何かの容量と言ったときの「何か」がメモリです。
利点は基本的にないです。
859デフォルトの名無しさん (ワッチョイ 1aad-LWjD)
2019/06/13(木) 21:22:11.61ID:0e3y3dPM0
データが存在する場所
860デフォルトの名無しさん (ブーイモ MM7f-4ioR)
2019/06/13(木) 21:44:19.75ID:VQ1VjdQ1M
みんな思い思いのモデルで遊んでるから、パパは箱モデル出しちゃうぞ
861デフォルトの名無しさん (ワッチョイ 3352-9ye8)
2019/06/13(木) 21:45:29.38ID:vVgcrwZV0
うさみみハリケーンでメモリ覗いてチートしよう!
862デフォルトの名無しさん (ワッチョイ 4e63-9ye8)
2019/06/13(木) 21:52:15.32ID:o6WQvi940
天使のような微笑みに
時は立ち止まる
863デフォルトの名無しさん (ワッチョイ 03dc-9ye8)
2019/06/13(木) 22:05:37.40ID:mXxRrk+K0
なんか分からない部分のコード示してもらわないと
ここの有能な人たちもどう説明したらいいか分かんないから雑談始まったがw
864蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8b01-1i7F)
2019/06/13(木) 22:14:30.76ID:wtG0GGqp0
1ビットが0か1かの二通りを表せる情報量。
1バイトは0~255までの256通り(2の8乗)を表せる情報量で8ビットに等しい。
1バイトを複数並べたのがメモリーで、各バイトの位置がアドレス。
865デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/13(木) 22:16:01.81ID:dMX2AWSU0
このスレにエスパーいるの?
866蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8b01-1i7F)
2019/06/13(木) 22:22:12.70ID:wtG0GGqp0
アドレスに型情報を加えて、先頭アドレスを起点として配列のようにアクセス可能にしたものがポインタ。
しかし、配列は実体を要求するが、ポインタは実体を要求しない。ヌルポインタは、何も指し示さないポインタ。
867デフォルトの名無しさん (ワッチョイ 4e63-9ye8)
2019/06/13(木) 22:29:06.28ID:o6WQvi940
ポインタ配列ってやると実体のない配列になるのかなw
868デフォルトの名無しさん (ワッチョイ 5bda-Fbrg)
2019/06/14(金) 00:57:04.32ID:v+vUDnm40
ポインタ配列?

ポインタの配列 *array[]
配列のポインタ (*array)[]
869デフォルトの名無しさん (ワッチョイ a37b-RuXw)
2019/06/14(金) 06:12:05.65ID:hJXFGwRg0
“メモリ”って言葉がフラッシュメモリのような、
ストレージデバイスのイメージになってるのも
説明を難しくしてる要因かもしれないね。

メモリは記憶単位ごとに数字で番地が振られていて…と言っても、
「メモリってディレクトリ構造中のファイルとして記憶するんじゃないの?」
みたいな感じに、互いの言葉の意味がチグハグで。
870デフォルトの名無しさん (ワッチョイ 3352-9ye8)
2019/06/14(金) 06:41:21.97ID:f7k/n5Cq0
RAMとROMの違いなんて今の時代説明しても分かる人の方が少ない気がする
871デフォルトの名無しさん (ラクペッ MM73-WxcC)
2019/06/14(金) 07:27:48.00ID:Q6PAXFreM
>メモリは記憶単位ごとに数字で番地が振られていて

キャッシュメモリ「せやろか?」
872デフォルトの名無しさん (ワッチョイ 1aa5-Rc2r)
2019/06/14(金) 07:30:51.51ID:0tg6L2nj0
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚
やっぱりコレを見せれば理解しやすいんでね?
873デフォルトの名無しさん (アークセー Sxbb-6CEg)
2019/06/14(金) 08:11:51.98ID:9CL7rguOx
>>872
磁気コアメモリと、右側はRAMACか?
874デフォルトの名無しさん (ブーイモ MM7f-4ioR)
2019/06/14(金) 08:31:34.65ID:0nKPup2VM
磁気ドラムだよ
ランダムアクセスでさえないのにメインメモリにしたとかいう
875デフォルトの名無しさん (ワッチョイ 9712-LWbF)
2019/06/14(金) 09:02:07.63ID:vN7LRDhO0
>>856
ポインタ=君と感覚を共有してる全く同性能の影分身だ。
君の価値が100万なら、影分身は1円で作れる。

ポインタのメリットは会社が君を働かせたい時、君を直接雇うと100万円かかるが、影分身を雇うと1円で済むわけだ。
影分身が働いてる間、君は家でエロゲでもしてればいい。

気をつけないといけないのは、仕事中、影分身の腕が切断されたら、エロゲやってる君の腕も切断されるし
影分身が死んだら君も死ぬ。


これ以上わかりやすい説明はないと思うが、どうよ?w
876デフォルトの名無しさん (ワッチョイ 4e69-oJPG)
2019/06/14(金) 09:44:07.68ID:y8r4DOsw0
例えられても伝わらないとさらに混乱させるのが、ポインタと配列周辺の話
877デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/14(金) 10:03:42.87ID:+nXqXsIga
>>875
分身と言ってしまうとそっくりな実体がもう一つあるかのように思ってしまうのではないか?
やはり実体を指し示すものを連想させる何かにした方が良いのではないか?道標とか。
878デフォルトの名無しさん (ワッチョイ 03dc-9ye8)
2019/06/14(金) 10:26:13.82ID:6se/aPBa0
このように、どうわかりやすく書こうとしてもどっかに不都合が生じるのがポインタの説明
素直にコンピュータの仕組みを勉強するしかないんや・・・
879デフォルトの名無しさん (アークセー Sxbb-6CEg)
2019/06/14(金) 10:36:21.57ID:9CL7rguOx
ポインタはWindowsのショートカットみたいなもの。
これでもまだ誤解されそうね。
880デフォルトの名無しさん (ワッチョイ 4e63-9ye8)
2019/06/14(金) 11:45:14.96ID:suWeiIcg0
インデックスレジスタを拡張したもの
881デフォルトの名無しさん (スプッッ Sd5a-PP33)
2019/06/14(金) 12:26:01.65ID:2kFHhEHgd
キャッシュとバッファの違いを教えてください
882蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdba-1i7F)
2019/06/14(金) 12:32:55.71ID:lQGpZUNAd
キャッシュは次回のアクセスを高速化するためにデータを一時的に保存しておくこと。
バッファはデータを受け止めるために、保存場所を確保するためのメモリー領域。
883デフォルトの名無しさん (ワッチョイ dfd2-vI2o)
2019/06/14(金) 14:56:26.65ID:6Rxhp4270
アセンブラやらせてみる。
884デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
2019/06/14(金) 15:05:09.54ID:AQvHkPsD0
>>881
文脈による
汎用機だと二次キャッシュをバッファストレージなんて言ったりすることもあるし
885デフォルトの名無しさん (バッミングク MM8a-U99L)
2019/06/14(金) 17:36:32.38ID:TPMloxQtM
>>875
本体がパンツ下ろしたら影分身も職場でパンツ下ろすんですね分かります
886デフォルトの名無しさん (ワッチョイ 8b01-2qry)
2019/06/14(金) 17:45:59.79ID:zWOLB0k60
ポインタがよくわからないんだけど、普通にメモリアドレス==ポインタって認識なの?

int i;
int *p=&i;
の時に変数iのポインタであるpっていういい方は正しいですか
887デフォルトの名無しさん (ワッチョイ 3352-9ye8)
2019/06/14(金) 17:52:24.52ID:f7k/n5Cq0
メモリアドレスは格納されるけど
メモリアドレス==ポインタっていうのは違う気がする
nullだのvoidだのもあるし
888デフォルトの名無しさん (アウアウカー Sac3-H7EU)
2019/06/14(金) 17:58:41.54ID:Soq0+PVxa
iのポインタを格納してるポインタ変数p

値自体を問題にするときはアドレスだが、プログラム中で操作の対象となってる場合はポインタって感じだな。
889デフォルトの名無しさん (ワッチョイ 4e7b-r4R3)
2019/06/14(金) 18:21:37.60ID:Js4PARtC0
>>886
ポインタはメモリアドレスと型もってて
メモリアドレスからのデータをその型として解釈する
890デフォルトの名無しさん (ワッチョイ 8b01-2qry)
2019/06/14(金) 18:23:47.92ID:zWOLB0k60
なるほど、なんとなくわかったありがとう。混乱の原因はポインタっていう言葉がいろんな使われ方してるからだった。
891デフォルトの名無しさん (アウアウウー Sac7-6CEg)
2019/06/14(金) 18:25:31.19ID:Kaq8zorwa
こう書くとまた荒れそうだが、ポインターとはアドレスが入った変数である、というのは正しい。
NULLは0番地を特別扱いしてるだけだし、void *もあくまでアドレスだ。
892デフォルトの名無しさん (ドコグロ MM92-zlGV)
2019/06/14(金) 18:32:50.01ID:N06YB3IUM
>>887
nullはまだしもvoidは関係なくね?
893デフォルトの名無しさん (ワッチョイ 4e7b-r4R3)
2019/06/14(金) 18:34:58.75ID:Js4PARtC0
荒れる要素なくない?
メモリアドレスを保持する整数と型を組合せてあるだけだし

void*はアドレス保持するだけの変数って意味じゃないの
894デフォルトの名無しさん (ワッチョイ 0301-oJPG)
2019/06/14(金) 18:35:21.76ID:6z9b86iK0
void *p;

p++ を許すのは GCC拡張だっけか
895デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
2019/06/14(金) 18:37:46.52ID:AQvHkPsD0
>>891
「正しい」とか書くと荒れる元にしかならん
(初心者のうちは)…「という理解でいい」ぐらいにしとき
896デフォルトの名無しさん (アウアウウー Sac7-LNjH)
2019/06/14(金) 18:39:36.73ID:BA+tS0rQa
>>891
NULLの件はそれ逆だろう。
実際の0番地を特別扱いにしているのではなく、「どこも指さない特殊なアドレス」を表記するために整数0を使用しているだけで、0番地が特別な訳ではないはず。まあ実際にメモリ割り当てで0番地を割り当てることはしないだろうけど。
void*も、型を指定しないポインタを表すのに使っている型の指定であり、アドレスというのはおかしい。
897デフォルトの名無しさん (ワッチョイ 4e7b-r4R3)
2019/06/14(金) 18:45:34.86ID:Js4PARtC0
>>894
サイズどういう扱いなのそれ
898デフォルトの名無しさん (ワッチョイ 0301-oJPG)
2019/06/14(金) 18:48:29.67ID:6z9b86iK0
>>897
確かポインタ演算時は1バイト (char) 扱いだったかな?
899デフォルトの名無しさん (ワッチョイ 4e7b-r4R3)
2019/06/14(金) 18:52:58.09ID:Js4PARtC0
1バイトなんか
まあそりゃそうか
900デフォルトの名無しさん (ワッチョイ 9af9-vI2o)
2019/06/14(金) 21:41:25.35ID:WbpzR08B0
void*なんていらなくね?char*でいいじゃん
構造のわからないものは「バイト列」って意識でしょ?
901蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8b01-1i7F)
2019/06/14(金) 21:47:11.03ID:Qn7Uv1x90
>>900
void *がないとmemcpyに引数を渡すとき面倒。
902デフォルトの名無しさん (ワッチョイ 0301-oJPG)
2019/06/14(金) 21:51:26.70ID:6z9b86iK0
double * には double * だけを許し char * や strucut foo * を渡したらアカンと
要求される型を厳しくチェックしようとすると

「ポインタだったら実体の型は何でもいい」 という指示を char * に含ますわけにはいかない
903デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/14(金) 21:52:14.30ID:sIZagWQx0
汎用ポインタがchar*型になってたらコードレビューは絶対に通さないわ
904デフォルトの名無しさん (ワッチョイ 03dc-9ye8)
2019/06/14(金) 22:42:50.69ID:6se/aPBa0
汎用ポインタというかvoid型という概念そのものが嫌い。
全てを厳密にやれ。言語を作る時点でまず関数に戻り値を強制すべきだったんだ。
ポインタわからん軍の原因はvoid型とかいう曖昧なせいなのがあるせいなのも一理あろうて。
905デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/14(金) 23:06:06.10ID:sIZagWQx0
>>904
関数型言語に行ってらっしゃい
906デフォルトの名無しさん (ワッチョイ 7602-byPh)
2019/06/15(土) 00:02:16.99ID:n7CfuAo60
Kotlin もよろしく
907デフォルトの名無しさん (ワッチョイ 5b8f-X/yd)
2019/06/15(土) 01:25:34.80ID:RN+u9pJY0
windowsにおいて

setLocale(LC_ALL, "en_US.UTF-8");

が成功する環境と失敗する環境があるのですが何が原因かわかりません。。何かご存じの方いらっしゃらないでしょうか?
908デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
2019/06/15(土) 09:25:25.61ID:oZ4xCIwS0
>>904
お前の好き嫌いなんてどうでもいいし、よくわからん時点ならvoid*なんて無視しとけばいいだけ
この手の人は何故か全部を一気に理解しようとするけど今どきの言語仕様でそれやったら終わらんよ
909デフォルトの名無しさん (ワッチョイ dfd2-vI2o)
2019/06/15(土) 09:37:31.78ID:pAE5sudp0
「俺の考える最強に分かりやすいポインタの説明」




・・・無理
910デフォルトの名無しさん (ワッチョイ 5ac5-YCmz)
2019/06/15(土) 10:05:45.19ID:QD7Sd0bs0
>>907
OSは?両方ともWindows10?
911デフォルトの名無しさん (ワッチョイ 1aa5-Rc2r)
2019/06/15(土) 10:23:13.60ID:T0BSudQv0
>>908 void君だろ

C言語なら俺に聞け 148
http://2chb.net/r/tech/1537347410/37
37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018/09/22(土) 01:42:06.64 ID:16ZpsTnK0
>>36
マジでIDE使え。
そして貼るときはlanguageをCにしとけ。シンタックスハイライトが変わるから。
で、どれが分からんの?

> enter
> find
> delete
> show_all
> delete_all

mainはこの際分からなくていい。
最初に理解しないといけないのは show_all だ。

ただし細かいことを言ってもキリがないが、

> void show_all(void)

なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。
普通は void show_all(tag_address* ta) だよ。
そうじゃないと複数のリストがあったときに使い物にならないだろ。

マジな話、このソースのレベルの本なら捨てた方がいい。
俺は大学の教材がいいと思うぞ。
(読んでないが)リストならググったら東工大とか出てきた。
http://www.is.titech.ac.jp/compview/clang/chap11.html
912デフォルトの名無しさん (ワッチョイ ba52-LNjH)
2019/06/15(土) 11:55:35.29ID:hahimQeS0
懐かしいな、void君
913デフォルトの名無しさん (ワッチョイ 5b8f-X/yd)
2019/06/15(土) 13:59:23.10ID:RN+u9pJY0
>>910
コメントありがとうございます。
8と10で成功する端末があることを確認しています。失敗する端末は今のところ10だけです。

そして

SetConsoleOutputCP(65001);

を使用することで失敗する端末でもUTF-8をコンソールに表示でき、一応目的は達成できました。

調べてみると、結局のところwindowsではsetlocaleで2バイト以上文字は設定できないとのことだったのですが、ではなぜ成功する端末があるのか……
914デフォルトの名無しさん (ワッチョイ 5a73-YCmz)
2019/06/15(土) 15:49:06.56ID:fUxHfD4R0
謎だな
915デフォルトの名無しさん (ワッチョイ f3ab-HbHi)
2019/06/15(土) 16:57:06.86ID:RWV4c9qt0
引数voidって古いシステムの保守でたまに見るな
916デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/15(土) 16:59:05.33ID:5ne/m9/q0
と、古いシステムの保守なんかやったことねえやつがぬかすか
917デフォルトの名無しさん (ワッチョイ 8b01-9ye8)
2019/06/15(土) 18:17:17.87ID:ulIUfSMj0
引数voidは今でも普通に使うけどな
918デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/15(土) 18:22:29.22ID:5ne/m9/q0
void show_all(); なんて書くやつ見かけたらなるべく距離を置く
919 ◆QZaw55cn4c (ワッチョイ ba47-FGjx)
2019/06/15(土) 18:40:21.75ID:8bW7ANPO0
>>918
C++ ではそれは当たり前ですが…
920デフォルトの名無しさん (ラクペッ MM73-WxcC)
2019/06/15(土) 18:42:04.96ID:fAAVk5UIM
>>918の場合
C++なら問題ない
C言語だとちょっと不味い
921デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/15(土) 18:46:57.27ID:5ne/m9/q0
おまえからも距離を置きたいぜ
ここをどこだと思っている
C++なら無問題などと言わねばわからぬ者がいるとでも思っているのか
922デフォルトの名無しさん (ワッチョイ a3e8-AFaF)
2019/06/15(土) 22:30:32.42ID:BY4KYcRQ0
とりあえず、シングルステートでも返り値をboolにする俺がやってきましたよ。
923デフォルトの名無しさん (アウアウウー Sac7-jjx2)
2019/06/16(日) 02:14:21.54ID:wRD2pOBha
ケースバイケースで使い分ける
924デフォルトの名無しさん (ラクペッ MM73-WxcC)
2019/06/16(日) 08:10:06.75ID:ORkp7ynDM
>>921
>>918の意図が分かってない者がいるぞ
さあどうする?
925デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/16(日) 10:35:26.32ID:jvyHVZd00
>>924
世も末だな
困ったもんだ
926デフォルトの名無しさん (ワッチョイ 4e63-9ye8)
2019/06/16(日) 11:22:43.26ID:RqGVrKm70
大丈夫だよ
ここを見ながらシステム作っている奴はいないから
927デフォルトの名無しさん (ワッチョイ 5ac5-YCmz)
2019/06/16(日) 13:20:19.90ID:X7GbKeYn0
Cはvoid省略すると可変長引数扱いになるんじゃなかったっけ?
C++は省略してもvoidだけど
928 ◆QZaw55cn4c (ワッチョイ ba47-FGjx)
2019/06/16(日) 13:35:27.88ID:gDHKfsB60
>>927
無指定でどうこう、というのは確か C89 までの話だったかと
C99 では C++ と同じく省略しても void と記憶しています
929デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/16(日) 13:51:25.10ID:Mp4zqsM90
>>928
破壊的変更が行われた仕様が回避できるなら回避すべきだな
930デフォルトの名無しさん (ワッチョイ 9a33-vI2o)
2019/06/16(日) 13:58:56.49ID:VBKycPxl0
>>928
記憶違いでしょ。変わってないよ。違うと言うなら出典確認してから来てね。
http://kikakurui.com/x3/X3010-2003-01.html#93
> ...関数定義の一部でない関数宣言子の識別子並びが
> 空の場合,仮引数の個数及び型の情報がないことを指定する。
931デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/16(日) 15:14:33.98ID:+bML8jLFa
>>915
新しく作るプログラムでも引数なしならvoidにするよ。
まあこの頃Cで作ることそのものが減ったけどな。
932デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/16(日) 15:41:14.25ID:rIa5AgZza
入力がない関数ってのは関数ではないな
933デフォルトの名無しさん (ワッチョイ 1aa5-Rc2r)
2019/06/16(日) 15:51:28.54ID:eI7bdJXk0
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
こんな汚物が上から目線で何かもの言ってるかと思うと反吐が出る
さっさと消えてほしい
934デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
2019/06/16(日) 16:33:52.45ID:wZzXbGgB0
>>932
なぜ入力がないと思ったんだ?
935デフォルトの名無しさん (ワッチョイ a37b-RuXw)
2019/06/16(日) 16:48:40.62ID:xMbXVdd30
DCL20-C. 引数を受け付けない関数の場合も必ず void を指定する
https://www.jpcert.or.jp/sc-rules/c-dcl20-c.html
を見ると(かなり読み解きにくいんだけど)…

プロトタイプ宣言では
int func(void); ... 引数0個
int func(); ... 関数呼び出しでの引数の整合をチェックしない

関数定義では
int func(void) {...} ... 引数0個
int func() {...} ... 引数0個

って具合に func() の解釈が一貫していない、
だから引数0個の関数は同じ形になるようにvoidをつけましょう、
という話に思える。
この辺が議論の混乱を生んでるんじゃないかな。

ついでに関数定義の int func() {...} の形式は廃止予定とも出てる。
プロトタイプの方は廃止予定ではない、ってことかな。
936デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/16(日) 17:08:16.47ID:jvyHVZd00
そこでjpcertを持ち出すのは興醒めだ
どっかの馬の骨が「こうすべき」と主張してるってだけな話は
現実のマシンの動きとそれ束縛しているiso/iec9899でどうなのかという話とは論点が違う
937935 (ワッチョイ a37b-RuXw)
2019/06/16(日) 17:32:48.77ID:xMbXVdd30
>>936
JPCERTを引用したのは「プロトタイプ宣言と関数定義とで
引数部が空の関数 func() の引数の解釈が違う」って話を
根拠つきで引き出すためでな。 >>927-930 あたりの流れを受けて。
規格の文章が並べて載ってるので都合が良いのだ(読みにくいけど)。

実際のところ、JPCERTのルールっていうか提案には
俺も全面的に賛成してるわけじゃない。むしろ強く反発する部分もあったり。
938デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/16(日) 19:00:02.87ID:jvyHVZd00
必要ねえじゃん
iso/iec9899の条文を引用して
その箇所がどのように解釈できると
自分の言葉で言えばいいのを
虎の威を借る形でサボる怠慢を
読まされる側は付き合ってらんねー
939デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/16(日) 19:52:17.11ID:5fyh92Dva
>>932
そうだね。関数ではないね。しかしCだと処理をまとめる方法が関数しかないから仕方がないね。
940デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/16(日) 20:02:46.68ID:5fyh92Dva
まあしかし getchar() みたいにプログラムとは無関係な所から取ってきた値を返すとか、バッファやstatic変数で外部からアクセスできない変数の内容を返すみたいな処理は必要だから引数なしも必要だ。
グローバル変数やハードウエアの初期化処理だけまとめて書きたいなんて時にも使える。
941デフォルトの名無しさん (スップ Sd5a-X/yd)
2019/06/16(日) 20:22:18.78ID:6QFVwEqYd
○○Initialize()
的な関数の存在に違和感ないんだが
942デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/16(日) 20:26:17.96ID:rIa5AgZza
クラスのメンバーの操作だとしても、だったらそのクラスのコンテキストを渡すのが正しいだろうとは思うけどね。
現実としてはまあ規模による。
943デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/16(日) 20:40:48.32ID:Mp4zqsM90
プログラムの関数は数学の関数とは微妙に違うから仕方ない
仕方ないと思えない奴らが関数型言語を作った

兎に角Cでは本来の関数に制限するのは事実上不可能
944デフォルトの名無しさん (ワッチョイ 6301-6CEg)
2019/06/16(日) 20:47:50.76ID:EhqtZL1+0
functionって関数の他に機能って意味もあるけど、英語圏の人はどちらの意味で使ってるんだろうね?
945 ◆QZaw55cn4c (ワッチョイ ba47-FGjx)
2019/06/16(日) 21:15:12.39ID:gDHKfsB60
>>944
多分語義をわざわざ意識していないと思われ
946デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/16(日) 21:19:48.09ID:paRCIAHRa
>>942
オブジェクト指向言語のクラスだとプロパティでゲッターやセッター作る事があるが、ゲッターは普通は引数なしだな。
で、そういう言語ではだいたいはメソッドの引数なしで ()にしとけばC言語での(void)と同じ意味になる。
947蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8b01-1i7F)
2019/06/16(日) 21:39:10.07ID:KLVL0nwc0
機能という意味で言いたいときは、functionalityという単語もある。
948デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/16(日) 22:26:00.96ID:rIa5AgZza
ゲッターセッター自体が、本当にそれ要るのかって思うこと多いよ。
手元にインスタンス持ってるわけだしさ。
949デフォルトの名無しさん (ラクペッ MM73-WxcC)
2019/06/16(日) 23:14:47.03ID:2lhSAUjOM
ゲッターセッターはインスタンス変数を隠蔽化することでインスタンス間の結合強度を下げるのが目的
なんでもなんでもインスタンス内部の構造に直接アクセスするとOOPの意味がない
950デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/16(日) 23:22:32.20ID:rIa5AgZza
いや、ゲッター使うんだったら隠蔽できてないじゃん。
951デフォルトの名無しさん (ワッチョイ 5b8f-X/yd)
2019/06/16(日) 23:34:39.49ID:Fv7+hlk/0
昔ゲッターセッターってスレッドセーフにするための仕組みだと思ってた。
それくらいしか意味が思いつかなかった…
952デフォルトの名無しさん (アウアウカー Sac3-H7EU)
2019/06/16(日) 23:43:48.77ID:3o8UCwiCa
そうね、なんか前後に処理を入れるくらいの使い方はある。
でもそもそもその値を使う処理をそのクラスに持たせるのが隠蔽ということだね。
953デフォルトの名無しさん (ワッチョイ 4e63-YCmz)
2019/06/16(日) 23:45:38.60ID:7nwjMCFt0
今の仕組み上での利点としては
GetterSetter作ることで
インターフェースに適合させれるようになる

Cは知らん
954デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/17(月) 00:04:18.25ID:0K02i6cy0
Cのスレで言っても仕方ないが
オブジェクト指向においてクラス外からフィールドに直接アクセスするのは禁じ手だぞ
955デフォルトの名無しさん (ワッチョイ 5a73-YCmz)
2019/06/17(月) 00:10:42.98ID:seiOMGnS0
getter/setterなんてうざいだけだぜ
メンバ変数直でいいじゃん
956デフォルトの名無しさん (アウアウカー Sac3-H7EU)
2019/06/17(月) 00:23:14.51ID:YSrJE9j8a
>>954
そうそう、だからゲッターは駄目なんだよね。
C++でclassとstructのアクセス範囲が異なる理由がわかってない人が多すぎる。
957デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/17(月) 00:26:17.86ID:0K02i6cy0
>>955
お前には一生オブジェクト指向は無理だな
958デフォルトの名無しさん (アウアウカー Sac3-H7EU)
2019/06/17(月) 00:39:11.63ID:YSrJE9j8a
まあ、ゲッター使うのはバカ。
データとメソッドを集約しないのはオブジェクト指向ではない。
ゲッターとセッターしかないオブジェクトなんて構造体で充分。
959デフォルトの名無しさん (ワッチョイ 3352-9ye8)
2019/06/17(月) 01:11:23.59ID:J2deS77t0
たしかPythonだとgetterもsetterも推奨されてないんだっけ?
960デフォルトの名無しさん (ワッチョイ 7602-byPh)
2019/06/17(月) 02:13:20.34ID:BSqpudUb0
文字列クラスで文字数返すやつなんかはゲッターの一種だが、ああいうのは必用だよな。
文字数指定する事が出来るようにする場合もセッター必用だよな。
961デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/17(月) 06:18:25.03ID:6C3tyyZH0
データメンバ直でもラッパーを挟めるなら問題なし
962デフォルトの名無しさん (ラクペッ MM73-WxcC)
2019/06/17(月) 07:27:38.45ID:yl5KJ/vEM
問題ないというよりも下手な設計をとりあえずカプセル化する時はラッパー被せて誤魔化すしかない
963デフォルトの名無しさん (ワッチョイ a3e8-AFaF)
2019/06/17(月) 08:27:04.42ID:ikLTlFyV0
ゲッタって仮想関数にする?
964デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 08:52:31.79ID:sn1adIo3a
ラッパーって関数に対して被せるもんだろ?
メンバー変数のラッパーってなんだよ
965デフォルトの名無しさん (ワッチョイ 4e69-oJPG)
2019/06/17(月) 08:57:03.61ID:mR1b1vjg0
「メンバ書き換えたから更新よろしくな関数」の呼び出しで
やっと内部状態が変更するようなしくみ?
966デフォルトの名無しさん (ワッチョイ 3e7c-YCmz)
2019/06/17(月) 09:09:34.98ID:8UjaS7YF0
>>960
ゲッターとセッターは使わないのが主流

とくにゲッターとか名前からしておっかねーだろ
967デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 09:34:11.11ID:sn1adIo3a
真とかエンペラーとかいろいろあるしな
968デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/17(月) 12:37:41.39ID:WHxj8IY7a
>>966
え?でも値のセットや取得時に何か処理が必要なやつはゲッターやセッターではないの?
名前がそれっぽくなくて普通のメソッドだったとしても機能としてはそうなるよな。
969デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 12:44:11.30ID:6pEy3XEna
>>968
だから、何故値を取得する必要があるのかと
970デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/17(月) 13:06:30.69ID:0K02i6cy0
値を取得する必要ガーとか馬鹿なのか?
主要言語の標準ライブラリにGetterを含まないクラスとかまず無いぞ
971デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 13:27:51.70ID:6pEy3XEna
>>970
引数のvoid見たこともないのによくそんなこと言えるな…
972デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/17(月) 13:33:44.73ID:WHxj8IY7a
>>969
例えばファイルデスクリプタのようなものもそのデスクリプタによって識別されるファイルに関する情報の読み書きをするオブジェクトと言えるが、それ使ってファイルのバイト数を取得するとかデータを読み書きするとか、普通にやるよね。
973デフォルトの名無しさん (ワッチョイ 8b01-zlGV)
2019/06/17(月) 13:42:27.76ID:qKjcjk6x0
猿でもわかるポインタって本誰か出せよ
974デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 14:24:17.06ID:6pEy3XEna
>>968
そのオブジェクトの中で密接にデータと関連する処理だったらゲッターは使わんでしょう。this->hogeを直接使うだけ。
あとたぶんあなたの場合はセッターゲッターの神髄を知らんと思う。単に構造体のメンバーにアクセスするだけのメソッドをイメージしてもらえれば。
975デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 14:25:01.27ID:6pEy3XEna
974は972あてね
976デフォルトの名無しさん (ワッチョイ 1aa5-Rc2r)
2019/06/17(月) 14:25:36.67ID:FBMbqlks0
>>968
C言語なら俺に聞け 151 	YouTube動画>5本 ->画像>9枚
ゲッターはあぶない
977デフォルトの名無しさん (ラクペッ MM73-WxcC)
2019/06/17(月) 14:40:56.45ID:lfEwbGXOM
同一インスタンス内なら余計なことしなくても直接アクセスできる
セッターゲッターは他のインスタンスの変数にアクセスするための手段
オブジェクト間のメッセージパッシングにセッターやゲッターを利用する
978デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/17(月) 14:41:55.67ID:WHxj8IY7a
>>974
あー。それでもリードオンリーにしたい時に言語にその機能がないならゲッターだけ作るよね。
Kotlinの場合はvalで済んじゃってしかも自動でゲッター作られてるけど。

で、真髄って何?
979デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 15:00:44.76ID:6pEy3XEna
>>978
リードオンリーとか言わず、読ませなきゃいいじゃん
980デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/17(月) 15:49:21.53ID:WHxj8IY7a
>>979
上で書いた文字列クラスの場合の文字数とかファイルのバイト数とか、外部から読めないとまずいものがあると思うんだが。
981デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 15:57:28.98ID:6pEy3XEna
>>980
たとえばstd::stringのメソッドでgetってついてるのget_allocatorとgetlineくらいだよね。setなんてないし。
ゲッター感のあるやつ無くない?要らないのでは?
982デフォルトの名無しさん (ラクペッ MM73-WxcC)
2019/06/17(月) 16:10:03.98ID:qeDnhEK2M
メンバー変数はreadonlyなどの属性ではなくてprivateアクセス権限を設定して他オブジェクトから隠蔽するのが一般的
983デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/17(月) 17:25:37.86ID:0K02i6cy0
なんでC++とかいう後付けのオブジェクト指向もどき言語で延々と語ってるんだろうか…
984デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 17:48:43.23ID:6pEy3XEna
>>983
そりゃもう、javaについで保守的だから。
他の意識高い感じの言語だとゲッターセッターなんて発想はありえないでしょ。
985デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/17(月) 17:52:05.72ID:0K02i6cy0
>>984
保守的?単なる継ぎ接ぎの欠陥言語だぞ

C#だとプロパティで隠蔽されてるが結局はGetter/Setterだな
986デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 18:00:37.93ID:6pEy3XEna
>>985
つまり、Cの構造体アクセスは実質ゲッターセッターだという主張か?
987デフォルトの名無しさん (ワッチョイ 9a79-YCmz)
2019/06/17(月) 18:01:53.33ID:0K02i6cy0
>>986
お前は何を言ってるんだ…
988デフォルトの名無しさん (アウアウエー Sa52-H7EU)
2019/06/17(月) 18:11:27.38ID:6pEy3XEna
>>987
引数void馬鹿を馬鹿にしてんだよ。わからんか?
989蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdba-1i7F)
2019/06/17(月) 18:13:51.25ID:Qf1//+vQd
そろそろ次のスレ
990デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/17(月) 18:24:49.71ID:3L1/L9kLa
>>981
うーん。C++のクラスで喩えられてもすがわからんなあ。C++この頃全然やってないし。
昔ちょっとC++Builder使ったことあるがDelphiの延長線上の使い方しかしなかったし。

とりあえずJavaで言うとそれは何にあたるんだ?
Kotlinでもいいぞ。
991デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/17(月) 18:26:16.26ID:3L1/L9kLa
すが、じゃねえ、すぐだ。
スマホだと間違いが変になるな。
992デフォルトの名無しさん (アウアウウー Sac7-7DQ/)
2019/06/17(月) 18:28:01.53ID:3L1/L9kLa
次スレ

C言語なら俺に聞け 152
http://2chb.net/r/tech/1560763630/
993デフォルトの名無しさん (ワッチョイ a37b-RuXw)
2019/06/17(月) 19:42:03.79ID:biel+EqR0
>>992
>>2-3 あたりの
「次スレを作るときは…」の説明を書き足さなくて良いのかしら?
自分、その辺の正しい立て方を知らず下手に書き加えられないので指摘だけ。
994デフォルトの名無しさん (ワッチョイ 4e63-9ye8)
2019/06/17(月) 20:01:23.71ID:vIcnvKOP0
IDを非表示にする場合
!extend:none::1000:512

IDを表示し、強制コテハンは表示しない(5ch標準設定と同じ)
!extend:checked::1000:512

IDを表示し、IPアドレスを表示
!extend:checked:vvvv:1000:512

IDを表示し、強制コテハンを表示
(レスの名前欄に「ワッチョイ」「スプー」「ササクッテロ 」などのニックネームがつく)
!extend:checked:vvvvv:1000:512 ← 今はこれ

IDを表示し、IPアドレスと強制コテハンを表示
!extend:checked:vvvvvv:1000:512

RONIN使えばまた表示を消せるので、強制とは言いがたいが
995デフォルトの名無しさん (ワッチョイ 5ac5-YCmz)
2019/06/17(月) 20:16:07.33ID:/ODDlXVN0
ああワッチョイ消してる奴ってRONIN使ってるのか
知らなかったな
996デフォルトの名無しさん (ワッチョイ 6301-AFaF)
2019/06/17(月) 20:27:33.84ID:IK9o4iD50
密結合を避ける
997 ◆QZaw55cn4c (ワッチョイ ba47-FGjx)
2019/06/17(月) 20:55:12.93ID:mDiaA7dQ0
>>995
RONIN 餅ですがワッチョイの消し方がわからないのです、消すつもりもないのですが…
998デフォルトの名無しさん (ワッチョイ 3352-9ye8)
2019/06/17(月) 21:23:19.93ID:J2deS77t0
名前欄に!slip:verboseじゃないの?
コテハンとかはどうなるかまでは知らないけど
999 ◆Ir/UpJ7SUVFO (ワッチョイ ba47-FGjx)
2019/06/17(月) 21:26:41.57ID:mDiaA7dQ0
>>998
どれどれ、試してみましょうか…
1000デフォルトの名無しさん (ワッチョイ f3f6-2qry)
2019/06/17(月) 21:29:58.20ID:6C3tyyZH0
>>945
そんなことはどうでもいい
C99ではどうたらを早く説明しろ

 逃 げ ん な こ ら !
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 10時間 6分 21秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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



lud20250303004647ca

ID:2v2BzL6t0のレス一覧:


488デフォルトの名無しさん (ワッチョイ 375f-PSXp)
2019/05/11(土) 19:21:03.92ID:2v2BzL6t0
>>486
言っておくが、python,C++,Java,javascript,C#,shellでできる事はC言語でも出来る
更に君が作ろうとしてるものや、やりたいことは、もう誰かが作ってる
ましてや大規模になると、googleとかamazonと戦う羽目にもなる
それが嫌ならプログラミングなんて辞めとけ
489デフォルトの名無しさん (ワッチョイ 9f2d-y0Vo)
2019/05/11(土) 19:32:35.19ID:HOBfdmGr0
>>487-488
了解です、ありがとうございます
490デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/11(土) 21:07:19.81ID:glRpLuyC0
>>484-485
482は反対意見を述べているという意味でまだいいところがあったが
てめーらは一方的な押しつけしか頭にない100%真のノイズだ
491はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth)
2019/05/11(土) 21:28:03.11ID:GtXmrqj00
>>490
既に解説があると示すのも質問に対する回答として十分だし、それで不満な理由がまるでわからん。
それが対話でないと断言するのも意味がわからん。
結局のところどうして欲しいの?
492デフォルトの名無しさん (アウアウウー Sa1b-wdoq)
2019/05/11(土) 22:15:36.12ID:YLmnNEXIa
きっと寂しいんだよ。
493デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/11(土) 22:49:22.08ID:glRpLuyC0
>>491
意味がわからんからどうした?
平行線の相手に何か言って欲しいのか?
494はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth)
2019/05/12(日) 10:19:15.38ID:l86zXz3/0
>>493
そう決めつけて続きを拒むなら「一方的な押し付けしか頭にない」「対話がない」というまさにそれでしかなくね?
意味がわからんから解説してくれっての。
わからんことを理解する必要があるから対話になるんだろ。
495デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/12(日) 11:22:06.40ID:VeGHf8Lz0
>>494
自分の言葉で何か言えよと思う俺の意見を
おまえ真っ向から全否定しただろ
だから接点がないと判断したんだ
接点があるなら最初の態度を撤回しろ
話はそれからだ
496デフォルトの名無しさん (ワッチョイ 9f52-tfUF)
2019/05/12(日) 11:57:36.56ID:7nn+3/Jt0
>>495
意見を全否定って、そりゃ異なる意見があるのは当然だろう。異なる考えなら議論にならないなんて、議論する気が無いだけだろう。

ついでだが、俺もお前さんの意見には反対だ。自分の言葉で書くかはまったく重要ではないと思う。お手軽に書ける掲示板のレスは言葉足らずだったり不正確な表現なことも多々あるが、それよりきちんと纏まった情報をリンクされた方がありがたいことも多い。
497デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/12(日) 12:19:14.09ID:VeGHf8Lz0
>>496
意見が異なるのと全否定は違うぞ
自分はこう思うと述べるのと
おまえは間違っているというのの違いだ

よくいるんだよ、どっかからの受け売りを壊れたレコードみたいに繰り返すだけなやつとか
俺は自分の知見からは何も出てこないのかよと思うことがあるが
おまえはそれで満足なら勝手に満足してろよ

そこが俺とおまえの違いだな
498デフォルトの名無しさん (ワッチョイ 9f79-ScLU)
2019/05/12(日) 15:34:15.26ID:SbCKIsfP0
質問です
テキストファイルから文字を1文字ずつ読み込んでchar型の2次元配列matrixに入れていきたい。
この時改行は配列に入れたくないときどうすれば良いですか?

うまくいかないコード
for (i=0;i<10;i++) {
for (j=0;j<10;j++) {
if (fgetc(fp) == ‘\n’) {
continue;
}
matrix[i][j] = fgetc(fp);
}
}


テキストファイルは行数と列数があらかじめ分かってるとして
例えば
AAAAAAAAAA
BBBBBBBBBB

のようなファイルです
499デフォルトの名無しさん (アウアウカー Saeb-NBbm)
2019/05/12(日) 15:51:11.62ID:L7lYUohVa
fgetc二回呼びたいの?
500デフォルトの名無しさん (ワッチョイ d77f-hzJM)
2019/05/12(日) 16:10:46.32ID:7kDDqNbD0
>>498
continueだと内ループ先頭に戻るから違うんじゃないの
501デフォルトの名無しさん (ワッチョイ ff12-f8ez)
2019/05/12(日) 16:24:47.11ID:R31sKZyy0
>>498
.for ... {
. for ... {
. char c = fgetc(fp);
. if (c != '\r' && c != '\n') {
. matrix[i][j] = c;
. }
. }
.}
502デフォルトの名無しさん (ワッチョイ 9f79-ScLU)
2019/05/12(日) 17:12:05.74ID:SbCKIsfP0
>>499
呼ばなくていいです
>>501
これでもうまくいかないです
503経団連 ◆T6xkBnTXz7B0 (ワッチョイ 1701-PJeF)
2019/05/12(日) 17:22:08.08ID:uLUIsoqa0
for (i=0;i<10;i++) {
for (j=0;j<10;j++) {
matrix[i][j] = fgetc(fp);
}
fgetc(fp); //読み捨て
}
504デフォルトの名無しさん (ワッチョイ b77c-NBbm)
2019/05/12(日) 17:29:14.22ID:CrklWm7I0
変な例出すなよ…
505デフォルトの名無しさん (ワッチョイ 9f1e-bWAY)
2019/05/12(日) 17:29:29.19ID:gzai7Rgq0
サイズが固定なら fread でよくない?
そうすべきというほどのものでもないだろうが。
506デフォルトの名無しさん (ワッチョイ 577b-djxj)
2019/05/12(日) 17:35:10.27ID:x4ccFx6b0
>>498
「うまくいかない」症状を見れば、もう少し見当がつくんだけど…。
格納先の配列を char matrix[LINES][CHRS]; とか定義して、
printf("%s\n", matrix[n]); で表示してるの違うかな。

各行の文字列の末尾にあるべき '\0' が格納されてない、みたいな。
507デフォルトの名無しさん (ワッチョイ ff63-gMth)
2019/05/12(日) 17:36:33.22ID:JjryTeWM0
2重ループやめても良いか?
 while (1) {
  int c = fgetc(fp);
  if (c == EOF) {
   break;
  }
  if (c == '\n') {
   continue;
  }
  matrix[i][j] = c;
  j++;
  if (j == 10) {
   i++; j = 0;
  }
 }

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1554171817/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C言語なら俺に聞け 151 YouTube動画>5本 ->画像>9枚 」を見た人も見ています:
C言語なら俺に聞け 139
C言語なら俺に聞け 142
C言語なら俺に聞け 148
C言語なら俺に聞け 144
C言語なら俺に聞け 150
C言語なら俺に聞け 140
C言語なら俺に聞け 146
C言語なら俺に聞け 152
C言語なら俺に聞け 149
C言語なら俺に聞け 156
C言語なら俺に聞け 160
C言語なら俺に聞け 161
C言語なら俺に聞け 154
C言語なら俺に聞け 162
C言語なら俺たちに聞け パート0001
馬場のことなら俺に聞け!
ゲームプログラムなら俺に聞け33
天皇賞・秋のことなら俺に聞け!
ゲームプログラムなら俺に聞け32
プログラミング言語 Scala 12冊目
高校生3人がc言語初心者からゲーム作る
次世代言語13 COBOL Java PHP VBA Ruby
関数型プログラミング言語Haskell Part30
次世代言語13 Go Rust Swift Kotlin TypeScript
: Forth Factor ; 連鎖性言語part 1 0 0 + + !
【IT】マルウェア解析のためのプログラミング言語トップ3
言語訓練
関数型言語一般
言語デザイン
関東弁はバカの言語
C言語 誰か教えて
関東弁は土人の言語
C言語上級者スレ
関東弁は土人の言語★2
歴史言語学総合 ★5
プログラミング言語
言語って何がオススメ?
C言語相談室(上級者専用)
次世代言語アンチスレ19
日本語が欠陥言語である三大理由
応用言語学・第二言語習得理論
次世代言語18 V Julia 他
最強プログラム言語は?
言語学板を復興させる方法は?
【悲報】言語オタク、一般人を煽る
キチガイばっかの言語学板
日本語プログラミング言語Mind
すべての言語を判定する計算機構
elm(プログラミング言語)
RubyでSQLを作ろう! 最強DSL言語
50歳以上のライダー(内緒話)(言語道断)
自然言語処理スレッド その5
プログラミング言語 Rust 4【ワッチョイ】
【ST】第19回言語聴覚士国家試験 ★2
ヒ素カレー事件て言語道断のクソ裁判じゃね?
日英中韓混ぜて人工言語作った結果w
言語聴覚士になったことを後悔している人★11
もういっそプログラム言語から自作しようって
プログラミング言語バトルロワイヤル
【ストーカー】人工言語アルカ【男尊女卑】その11
大規模多人数開発でも耐えられる言語に必須の機能
Dart これ以上変な言語を増やすんじゃねえ! Kotlin
【Go言語】 webapp GO Part1 【Golang】
揚げ足取り大好き!日本語が他言語より複雑な理由
プログラミング言語ってさ?どう覚えるべき?
クラウドネイティブ言語 Ballerina part1
04:25:39 up 102 days, 5:24, 0 users, load average: 19.33, 18.53, 17.01

in 0.11054706573486 sec @0.11054706573486@0b7 on 072817