[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/03 12:10 / Filesize : 265 KB / Number-of Response : 1010
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 156



1 名前:デフォルトの名無しさん [2020/09/28(月) 14:41:30.00 ID:QxfbhGyV0.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

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

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

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

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

※前スレ
C言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

641 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 22:24:12.86 ID:1wsdfsyQ0.net]
アドレスに連続した空きがない状態だよ。最初からその話をしてるんだろ?

642 名前:デフォルトの名無しさん [2021/01/24(日) 22:28:07.43 ID:5JJAlISZ0.net]
>>637
4K+1byte目をアクセスしたらまたPFだから、MMUの勉強したら?

643 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 22:41:44.60 ID:1wsdfsyQ0.net]
その4Kの中に要求するサイズの連続領域が取れない場合の話だよ。
いったいなにを「とりあえず」割り当てるんだか。

644 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 23:52:48.21 ID:5uhuun5ZK.net]
ページングの話とmallocの領域管理の話がごっちゃになってるな

ページアウトされた領域に空きがあるかどうかはページインしなきゃわからないかもしれないが、そしたら他のページを探しに行くだけ

最終的にどこにも空きがなけりゃmallocがエラーを返す
空き容量が十分あっても希望するサイズの連続領域がないなんてケースは実際にもあり得る

645 名前:デフォルトの名無しさん [2021/01/25(月) 00:08:13.28 ID:U3eoM7Fp0.net]
仮想アドレスなんだから使う時まで要らないんだから、mallocは必ず成功する。
昨今のOSは全てそう実装されてる。

646 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 00:11:52.23 ID:WuLpUwZU0.net]
オーバーブッキングを平気でするホテルみたいだな

647 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 01:00:15.57 ID:8MmNCL2s0.net]
>>641
バカ?

648 名前:デフォルトの名無しさん [2021/01/25(月) 01:17:43.98 ID:U3eoM7Fp0.net]
iOSのreusableCellの取得も必ず成功するからforce unwrapできるし

649 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 07:05:04.38 ID:HugL0xWrM.net]
>>641
仮想アドレスを使わないOSもあるんだが
まあ安易に「全て」とか使ってるからレス乞食なんだろうな



650 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 08:02:50.43 ID:dmbNtT1m0.net]
>>641
勉強しろと言った本人が理解していないのが丸わかり。
使う時まで要らないのは物理メモリであってmallocの時点で仮想アドレスは割り当てなきゃならん。
もし仮想アドレスに空きがなけりゃ「とりあえず割り当てる」なんてのも無理。

651 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 09:02:02.61 ID:+X0AlmLXK.net]
実際「mallocは常に成功する」とか根拠なく信じ込んでる奴にはシステム開発は任せられんよ
あとで痛い目みる

652 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 10:01:03.33 ID:NuAiBZ6D0.net]
>mallocは常に成功する
Win98SEで失敗したしたことあるわ。

653 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 10:44:35.68 ID:MIcmX8A+0.net]
 ハードがMMUで物理的に管理するメモリ上限とか、OSが管理する上限とか、論理上いつか確保出来ない状況は絶対来るの分かっているけれど、そこでエラー起こされると打つ手がない(思い付かない)から、そのまま落ちてもらう。
 俺が知らないだけで、良い回避方法とかあるのかな?

654 名前:はちみつ餃子 mailto:sage [2021/01/25(月) 11:32:21.69 ID:ktS6mGMX0.net]
>>649
・ オーバーコミット機能はオフにする
・ malloc (等) がエラーを返すかチェックを怠らない
・ 終了処理にどうしても必要なメモリは事前に確保しておいて他に使わない

655 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 07:53:24.98 ID:ZI8ZD6Xld.net]
非常用のメモリを取っとくのは
大昔から当たり前の手法だね

656 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 09:07:24.49 ID:7OslGgb50.net]
mallocを信じて生きていけばいいさと 君は叫んだだろう

657 名前:はちみつ餃子 mailto:sage [2021/01/26(火) 10:29:56.18 ID:xZCVqJnF0.net]
>>652
https://www.youtube.com/watch?v=dAs2yQUNkdU

658 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 11:06:15.63 ID:CnGywsMw0.net]
メモリ不足だと表示して終了しちゃいかんのか?

659 名前:はちみつ餃子 mailto:sage [2021/01/26(火) 11:51:32.15 ID:xZCVqJnF0.net]
>>654
それでいい状況ならそれでいいんだよ。
それじゃ駄目なときの話をしてる。



660 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:18:24.13 ID:nusF9BATd.net]
車を運転してたら
「メモリ不足です」と表示されてブレーキが効かなくなった

冷蔵庫が「メモリ不足です」と表示されて止まっていた

ああメモリ不足ならしょうがない
って思う人いるかな?

661 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:24:58.20 ID:qqWW8hOx0.net]
航空機搭載システムなんかは動的メモリ割り当て自体を禁止してるそうな
でもアルゴリズムによっては動的メモリ割り当てが本質的なこともあるだろうし
事前割り当てしたところで、自前でmymallocを実装するってだけな気はするし
ミッションクリティカルなアプリがどうやってるかはちゃんと調べないと判らんね

662 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:29:47.88 ID:nusF9BATd.net]
航空機なんて特別な例を出さなくても
身の回りの電気製品でソフト要因のエラーが許される物なんてなかなか無いような気がする

663 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:41:48.87 ID:Ab88y5Cj0.net]
>>657
オーバーフローは危険なのでスタックの使用も禁止します

664 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:49:59.07 ID:nusF9BATd.net]
条件を満たせは静的解析でスタック使用量はわかる
整数型はオーバーフローして危険だから禁止

665 名前:はちみつ餃子 mailto:sage [2021/01/26(火) 13:32:22.24 ID:xZCVqJnF0.net]
そういえば何の事例だったかでループも禁止 (停止性の証明が難しいので) とかいうのは聞いたことがあるな。

666 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 13:33:43.60 ID:cSn18yXwM.net]
>>659
再帰禁止とか組み込みなら珍しくないぞ

667 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 14:31:35.84 ID:46etcFxHd.net]
>>661
ループ禁止でコードを組める気がしないのだが
処理したらCPUリセットするの?

ループ以外に何か禁止な条件があるはず

668 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 14:35:21.22 ID:46etcFxHd.net]
ヒープ禁止は普通にある
禁止というかそもそもヒープ用にメモリが無いとか
設計方針でヒープモジュールを搭載しないとか
あとは確保オンリーなヒープってのもある

PICとかだとハード的に再帰が難しいとか

669 名前:デフォルトの名無しさん [2021/01/26(火) 21:31:25.38 ID:INqgRhQd0.net]
JALの航空管制制御のプログラム作ったことあるけど、
1ルーチンコードサイズ4KBまでIBM3090アセンブラ
ループ処理などなく、また呼ばれる
可愛い平さん元気かなぁ・・



670 名前:デフォルトの名無しさん [2021/01/26(火) 21:32:25.57 ID:INqgRhQd0.net]
手塚さんとかも綺麗だったな・・おれまだ学生だったw

671 名前: mailto:sage [2021/01/26(火) 23:53:23.00 ID:uzBXnria0.net]
>>653
コード進行が凄い曲ですね‥‥ギターコードが書いている楽譜ってないですかね?

672 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 00:01:47.99 ID:fhlKtwwY0.net]
上の空で書いていたのか

673 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 07:49:16.31 ID:or8n1kaA0.net]
8/16bit時代のハードみたいに起動時にメモリサイズやエラーチェックしてワークエリアサイズ固定で設計するだけだわな。
そういやぁある記事で80286って工業用途を想定してて、エラーが発生して停止したら電源入れ直す以外に再起動できないとか言ってたな。

674 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 07:52:13.49 ID:MIG3AZ730.net]
>>665
ルーチンの呼び元はループ、もしくはループ相当の動きをしてるわけだよね

ループがなければ無限のサイズのコードじゃ無い限り動き続けるのは不可能じゃ?

675 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 07:59:19.27 ID:MIG3AZ730.net]
>>667
非常に簡単なのしか使ってないんで耳コピ簡単じゃ?

676 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 10:55:52.75 ID:9MA4/mbB0.net]
>656
>「メモリ不足です」と表示されてブレーキが効かなくなった
上級国民が大喜びな仕様だな。

メモリ不足になるような仕様を避けるのが当然で、
それでも起きるなら安全に停止できる機能を搭載するだろ。
とりあえず電源喪失状態でもブレーき利くようにするとか。


そういやぁどっかの列車で安全装置の故障で自動停車されなくて事故ったってのあって、
安全装置からの信号がONになった時にブレーキが作動するって仕様になってたのを
安全装置からの信号が来なくなったら(ずっと信号ONって不具合もかあるだろうから通信のやり取りでもあるのかな)
ブレーキ作動させるようになったって聞いたわ。

677 名前:デフォルトの名無しさん [2021/01/27(水) 11:34:46.40 ID:cJSBZXf90.net]
>>667
Monacaの田中秀和って好き?

678 名前:デフォルトの名無しさん [2021/01/27(水) 12:05:51.10 ID:isvLWJ6Q0.net]
>>656
飯塚会長なら言いそうだ

679 名前:デフォルトの名無しさん [2021/01/27(水) 12:09:55.82 ID:cJSBZXf90.net]
>>662
組み込みが再帰禁止なのは
スタック段数が少な過ぎるからじゃないんですか
>>659 と同じことを言ってるだけと思いますが



680 名前:デフォルトの名無しさん [2021/01/27(水) 12:12:51.81 ID:cJSBZXf90.net]
>>663
常にHALT+割り込みのみで書かれたものはあったはず

681 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 12:27:46.11 ID:gQSND64l0.net]
>>675
その理由もあるけどスタックの見積がやりにくいからという理由もある
>>661に類似だけど停止条件トチッたら容易にスタック食いつぶすし

682 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 13:33:58.28 ID:vpj9vmrAd.net]
>>662
貧乏マイコンは数段程度しかないから関数の中で関数呼ぶのすら危うかったりするな…
高級マイコンは16段の見たことあるが

683 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 13:57:29.31 ID:DAR3YVvc0.net]
HALTと割り込みでもいつかはどこかで最初からの繰り返しループにならない?
割り込み中でステート管理して、スタックを操作して最初に戻るとか?
出来ないマイコンもありそうだけど

684 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 14:01:16.93 ID:N60gZ7990.net]
そういう制御込みでコンパイルして吐き出してくれるなら Cの選択肢もあるだろうけど
それが期待できないとなると アセンブラしかない ってことになるのかな

685 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 17:35:31.51 ID:6jCnxoTKd.net]
>>678
PICでしょ
一番安いヤツはハードウェアスタック2段

686 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 17:36:57.11 ID:6jCnxoTKd.net]
>>679
手段は色々あっても
ループはループ
と思う

687 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 20:45:42.53 ID:gQSND64l0.net]
>>679
まあどこかでループは必要だわな
>>661はそういうループはきっちり検証して個々の処理ルーチンではループ禁止っていう話かと

688 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:07:06.58 ID:7vi5L3Y30.net]
初心者です
変数に&を付けてメモリのアドレスを表示させるプログラムを実行して(0x7efe61e298d8←こんな感じ?)
その後1時間とか経過して別のプログラムでメモリ「0x7efe61e298d8」に格納されたものを表示させることってできるんですかね?

689 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:11:59.94 ID:fhlKtwwY0.net]
OSが何かにもよるけど
一般論としては出来る。出来るが、
成功するかどうかは分からない



690 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:34:48.42 ID:XppLd9do0.net]
MS-DOSのTSRか

691 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:52:57.86 ID:7vi5L3Y30.net]
C言語というよりOS側の問題なんですね
ありがとうございます

692 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 05:11:34.57 ID:52TUUvk80.net]
>>681
それ、スタックを使って構造化プログラミングを実現した言語であるCを使う利点が一切ないような…

組み込み/マイコン向け言語でスタックを使わず構造化プログラミングを実現するにはcpsスタイルの言語がベストなはず、lisp方言schemeにはそれ向けのサブセット仕様もあるし、ホビー界隈ではそこそこ使われてる模様
(但し主なpc向け実装は、アーキテクチャに合ったスタックによるcps実装が多い、念のため)

forthも消えてしまったなあ
C換算百行未満でブートストラップ&セルフホスト処理系が書け、OS機能も兼ね、規格にあるライブラリ関数も改変無しコピペで動く移植性の良さ
c台頭までは組み込み/マイコン界隈を寡占してたんだが
ちゃんとスタック指向&構造化言語だけど、ハードウェアスタックに頼らないので相性がよい
唯一の敗因はlisp以上に深淵なことだな…

cは既に国際語になってしまったので、取り敢えず分かるcで書く、ってのがcが使われる唯一の理由だと思う

693 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 05:58:13.87 ID:pfPCg+P40.net]
動的確保なしの32ビットマイコン使って飯食ってるけど、さすがに再起は使わんが、
好きなだけ関数呼び出し深く出来るだけでも恵まれてたんだな。スタックオーバーフローは一応気にしないといかんけど。

ミッションクリティカルなコードなんてゼッテー無理だわw Adaとか使われるんだっけ?と思ったら微妙に廃れ気味なんね。よーしらんけど。

694 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 08:01:19.64 ID:Z02UUfjqK.net]
>>684
たぶん意味がない。
今時のOSでは、別々のプログラムからメモリ「0x7efe61e298d8」を参照しても同じ内容にならない。「仮想アドレス」でぐぐれ。
プログラム間で変数をやりとりしたければ、共有メモリを使う方法がある。

695 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 08:05:06.42 ID:c7JCU6ma0.net]
今時のOS,CPUだとアクセスした瞬間に例外発生する

696 名前:はちみつ餃子 mailto:sage [2021/01/28(木) 10:46:55.99 ID:vBYpvnJx0.net]
>>684
(現代的なコンピュータアーキテクチャでは) 各プロセスのアドレス空間が独立していて、
あるプロセスから見えているメモリの内容と他のプロセスから見えるそれは別物なんだよ。
他のプロセス (が持っているリソース) にアクセスしたりデバイスをコントロールするには
OS に依頼して仲介してもらうという形をとる。

プロセス間でメモリの共有をすることも可能だが、
それもあらかじめ OS に伝えて共有する実体 (物理メモリ) をそれぞれのメモリ空間にマッピングしてもらう形
なので、それを利用するプロセス同士が事前に共有に同意した状態である必要がある。

あるプロセスが自分用に割り当てられたリソース以外にはそう自由にはアクセスできないんだ。
それがセキュリティというものだよ。

697 名前:デフォルトの名無しさん [2021/01/28(木) 11:01:24.92 ID:dNWrUHbO0.net]
>>682
毎回リセットして最初から実行するのも君の説ではループの範疇だな

698 名前:デフォルトの名無しさん [2021/01/28(木) 11:03:43.19 ID:dNWrUHbO0.net]
>>690
>>692
DLL injection とかしても無理?

699 名前:はちみつ餃子 mailto:sage [2021/01/28(木) 11:57:56.44 ID:vBYpvnJx0.net]
>>694
アクセスされる側にとって (普通は) 意図しないものであるには違いないけど、
一応は OS が許可した上で各プロセスにアタッチする形なので
ひとつのプロセス内でのことになるから別のプロセスからアクセスするのとは理屈が違うんじゃないかな。

プロセスの独立性は壊れないし、権限が上位のプロセスにはアタッチできないんじゃなかったっけ?
まあときどき権限昇格の脆弱性が発見されたりはしてるけど……。



700 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 12:14:49.58 ID:eBfsAdOM0.net]
>>684
デバッガでも作りたいのか?

701 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 12:16:47.81 ID:Tpt+oTXId.net]
>>693
そうだね
ソフトによるリセットなら本質的にはソフトループと変わらない

702 名前: mailto:sage [2021/01/28(木) 19:47:55.90 ID:4gHVOrOA0.net]
>>671
クラシック系の耳にはすごく斬新に聞こえますが、世間一般的には簡単な部類に入るのですか、私は井戸の底の蛙だったんですね‥‥

703 名前: mailto:sage [2021/01/28(木) 19:50:41.53 ID:4gHVOrOA0.net]
>>686
TSR はロマンで私もキー

704 名前:入れ替えとかいろいろ凝っていた時期があったんたけど、TSR に似たプログラミングって最近はなんですか? []
[ここ壊れてます]

705 名前: mailto:sage [2021/01/28(木) 19:51:53.47 ID:4gHVOrOA0.net]
>>692
でも、i386 アーキテクチャの「コールゲート」とかは廃れてしまったんですよね…‥

706 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 20:19:09.21 ID:Sg/ycOHU0.net]
WaveToneとかの便利なソフトがあっての

707 名前: mailto:sage [2021/01/28(木) 22:08:52.27 ID:4gHVOrOA0.net]
>>701
そのソフトは大昔(win95 の時代)にも開発してくださっていた方がいて便利に浸かっていました‥‥
----------------------------------------------------------------------------
【ソフト名】 TonagramView for Win95 Ver.0.3β
【 作成者 】 Zephyr <NCC00723@niftyserve.or.jp>
【登 録 名】 SHIINE03.LZH
【圧縮形式】 LHa 2.55b
【動作環境】 Windows 95
【転  載】 事前の許可が必要
【掲載月日】 1997/08/30
----------------------------------------------------------------------------

このプログラムは、WAVファイルを周波数解析してtonagram(ピアノロールのような
グラフ)を表示するツールです。

耳コピをしていると、どうしてもコードが採れなくて泣きたくなることがよくあり
ます。そんなときは、tonagramを調べれば、鳴ってる音を目で見ることができるの
で、適当にピックアップしてやれば楽にコードを拾えます。v(^^)

今回、GUI化によりリードアウトカーソルなどの機能が強化されています。
また、解析結果のロード・セーブが可能になりましたので、結果をセーブしておけ
ば解析にかかる時間を節約することができます。

★Ver.0.2βからの改良点
・待望(?)のGUI化
  ロード・セーブ・印刷
  リードアウトカーソル 等
・ピークサーチアルゴリズムの変更(精度より見た目を重視)

NCC00723 Zephyr

708 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 00:08:49.78 ID:BmYQVI6m0.net]
>>698
斬新に聞こえるかどうかはともかく
コード自体は非常に簡単

ちなみに私もクラシック系

709 名前:デフォルトの名無しさん [2021/01/30(土) 12:01:56.26 ID:EWZvTk3zF.net]
>>702
404



710 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 19:33:07.61 ID:jQyDM6Cn0.net]
enum A
{
max_value = 0x7fffffffffffffffLL;
};

こんなことしても64bitのenumはつくれないんだっけ?

711 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 00:52:02.23 ID:5yr9aQzL0.net]
整数型ならいいらしいから、64bitになるコンパイラがあっても規格違反ではないと思う

712 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:29:58.21 ID:OjiuyGRS0.net]
infinity 定義されてるだろ?

713 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:03:50.51 ID:v6ebtUL10.net]
整数型に?

714 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:51:42.98 ID:9cKOvUYE0.net]
>>706
処理系依存しないで確実に64bit以上にする方法ってないんだっけ。
ベース型の指定はC++だよなあ。

715 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 08:04:18.96 ID:SoQHgLGL0.net]
64bit整数型がない環境があるんだから
確実に64bit以上なんて無理

716 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 08:15:50.49 ID:v6ebtUL10.net]
sizeof max_value
gcc, clang: 8
cl: 4

717 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 08:27:26.16 ID:9cKOvUYE0.net]
>>710
じゃあ「64bit整数が使える環境で」って条件だとどうだろう?

718 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 09:03:50.04 ID:5yr9aQzL0.net]
Cのenumはマクロと大して変わらんのだから、マクロで代用するとか

719 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 09:11:58.71 ID:v6ebtUL10.net]
マクロに代わるべく作られたenumがマクロで代用されるとは
無様な・・・



720 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 09:18:04.19 ID:v6ebtUL10.net]
6.7.2.2 Enumeration specifiers
3 The identifiers in an enumerator list are declared as constants that have type int and may appear wherever such are permitted.

6.7.2.2 列挙型指定子
意味規則 列挙子並びの中の識別子は,型int をもつ定数として宣言され,この型の定数が許されるところならばどこに現れてもよい。

はっきり、intと書いてあるね
long longになる余地は全くない

721 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:57:56.06 ID:vkxM9MCda.net]
intとlong longが同一の可能性は残る
まぁ普通ではないが

素直にC++でenum classにするのがいいのでは

722 名前:デフォルトの名無しさん [2021/02/01(月) 14:28:14.54 ID:fos4FOVOF.net]
enum と enum class って紛らわしいよね

723 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 17:41:32.38 ID:v6ebtUL10.net]
enum classは関係ない
enum-baseだ

724 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 19:37:32.66 ID:vkxM9MCda.net]
>>718
enumのベース型ってenum classじゃなくても出来たのか
勘違いしてたわ

725 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 21:43:21.53 ID:9cKOvUYE0.net]
>>715
なるほど、ありがとう。

726 名前:デフォルトの名無しさん [2021/02/02(火) 06:19:12.09 ID:wjKGtX300.net]
enumはステート制御で重宝する。

727 名前:デフォルトの名無しさん [2021/02/02(火) 15:29:55.49 ID:gtWVIswm0.net]
質問です。__lsan_disableが期待通りに動きません。
サイト見るとAllocations made between calls to __lsan_disable() and __lsan_enable() will
be treated as non-leaks. Disable/enable pairs may be nested.と書いてあったのでプログラム作りました。
しかし__lsan_enable〜__lsan_do_leak_checkもリークチェックされます。原因が分かりません。

#include </usr/lib/gcc/x86_64-linux-gnu/10/include/sanitizer/lsan_interface.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void* thFunc(void *arg) { __lsan_disable(); sleep(4); fprintf(stderr, "en start\n"); __lsan_enable();
fprintf(stderr, "en end\n"); sleep(4); __lsan_do_leak_check(); exit(-1);
}
int main() { int rc; pthread_t th; pthread_create(&th, 0, thFunc, 0);
for (int i = 0; i < 30000; i++) { sleep(1); int *p = malloc(1);
fprintf(stderr, "malloc\n"); } return 0;}
よろしくお願いいたします

728 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 08:08:40.40 ID:3ZiqWZ4T0.net]
>>712
処理系依存

729 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 11:24:59.43 ID:P1e/f4pz0.net]
テキストファイルを読み込む場合、主にfgetsやfgetcでやる方法があると思うのですが調べてみるとmmapを使う方法もあるようなのですがどれを使うのが良いんですかね?
やりたいのはhtmlソースの書かれたテキストファイルの簡単な解析です
もしくは全く別に有名なライブラリみたいなのがあるんでしょうか?



730 名前:はちみつ餃子 mailto:sage [2021/02/04(木) 12:15:35.04 ID:ttCVH4wp0.net]
>>724
大きなファイルに細かなランダムアクセスが発生するときは
シークを繰り返すよりも mmap を活用した方が有利になることもあると思うけど、
常識的に考えればひとつの html はせいぜいが数メガ程度だろうし、
凝った管理をしなくても全部メモリに乗るでしょ。

731 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 13:31:56.12 ID:P1e/f4pz0.net]
>>725
ファイルサイズで使い分ける感じなんですね
ありがとうございます

732 名前:はちみつ餃子 mailto:sage [2021/02/04(木) 13:43:25.23 ID:ttCVH4wp0.net]
>>726
処理の内容によってプログラムのデザインには選択肢があって、
ファイルからの読み込みの仕方はそのデザインに付随するという感じ。

733 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 14:20:09.93 ID:jgksMTX2d.net]
C言語スレで
せいぜい数メガと言っちゃう感覚

734 名前:デフォルトの名無しさん [2021/02/04(木) 14:24:26.67 ID:xGlwnT6u0.net]
もう21世紀だからな
ここから先は1GBのテキストファイルが普通になる

735 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 07:55:44.29 ID:I+zADhcc0.net]
>>728
テキストファイルを読めてhtmlをパースするような機器で今どき数メガも載ってないケースってかなり珍しいだろ

736 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 08:01:49.33 ID:XbPEadHi0.net]
せいぜい数メガと言えるようなリッチな環境で
C言語でアプリを書く方が珍しいだろ

737 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 08:20:44.95 ID:JqQJ/dMo0.net]
>>731
質問者>>724がやりたいって言ってるんだから、珍しいかどうかなんてどうでもいいだろう

738 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 08:32:27.83 ID:XbPEadHi0.net]
せいぜい数メガと言えるようにリッチな環境かどうかなんて
>>724にしかわからないわけだけど

>>731を考えたらリッチじゃないって考えるのは自然な発想

739 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 08:42:07.98 ID:oeXhrntJ0.net]
「決めつけ」はバグとセキュリティホールの元。



740 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 09:02:30.99 ID:AjJLCZmld.net]
スパコンのOSはCで書かれている

741 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 09:20:14.53 ID:I+zADhcc0.net]
>>731,733
なぜC言語なのかは>>724に聞いてくれ
少なくとも今どきmmapまで使える環境でメガも乗ってない環境って相当珍しいだろって話な

742 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 12:39:42.10 ID:1XmQmKI8d.net]
>>736
>>734

743 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 12:52:09.08 ID:AV0Gp17OM.net]
>>737
珍しくないと言うなら実例をあげればいいだけ

744 名前:デフォルトの名無しさん [2021/02/06(土) 10:12:48.76 ID:DFt8vUVO0.net]
mmapってUNIX系OSだけでは?他にもあるかも知れないが互換ライブラリ経由でそのOS固有の同機能のやつ呼んでたりしない?(それで良いなら良いんだが)

745 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:51:00.80 ID:PohEB++tF.net]
対象をhtmlに限定したのが敗因

746 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:26:44.70 ID:EjDQT0l8K.net]
>>739
メモリマップトファイル一般を指しての発言じゃないかな、CreateFileMapping()とか含めて。

>>740
たぶんシーケンシャルアクセスで足りるから、read()でええやんってなるよな。

747 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:45:50.67 ID:zn5WrP4C0.net]
>>739
何が問題なのかよくわからんが?

748 名前:デフォルトの名無しさん [2021/02/22(月) 07:04:45.29 ID:Xbe4DE+80.net]
どうやったらループを小さくしたり無くしたり出来るのか教えてほしい。

749 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:02:42.93 ID:NYs90WT8M.net]
べた書き?
printf("hello flat!\n");
printf("hello flat!\n");
printf("hello flat!\n");



750 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:21:30.68 ID:iIDQLaUs0.net]
標準ライブラリにある処理はなるべく標準ライブラリのを使うとか
ループをまとめて関数に出すとかでいいんじゃないの?
根本的な解決にはならないかもだけど複雑度は下がる
あとはアルゴリズムの改善しかないんやない

751 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 02:48:11.51 ID:VIkkm8/qd.net]
>>739
実装は知らんがむしろwinでは頻用すると思う
80'後半くらいに生まれたそろそろ古参なスクリプト言語(Pythonなど)には大体ある
スクリプト故に富豪的に全部載せ

752 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:04:42.97 ID:VIkkm8/qd.net]
>>743
ループ変数をi, j, kとすれば、int ijk(範囲はi*j*k)とまとめればネストレベル3→1にできるよ
i = ijk/j/k
j = ijk%(j*k)/k
k = ijk%kね
パフォーマンスの利点

753 名前:烽る
mo量子化学計算はナイーブには最低4段のforが要求されるんで、かなり重宝
なんで4段をcollapseしたいけど、他人が初見で解釈するのはちょっと無理強いなので控えてる
[]
[ここ壊れてます]

754 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:15:27.68 ID:VIkkm8/qd.net]
いや今書いたのも改めて並べるとmodに慣れていと1分くらい考えるか…
二段は簡潔なのでイディオムとして使って良いと思う
i*jを走るループ変数ijに対し、i==ij/j, j==ij%j
ネストは半分になるし可読性もよいので、多分ベストプラクティス

ネストしたループを全てワンライナーで書けるFortranが羨ましい

755 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:42:44.91 ID:1ia+Vnu00.net]
divもmodもクソ遅いと思うんですがそれは

756 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:31:33.75 ID:VIkkm8/qd.net]
>>749
ステップ数で考えてたからそういう視点は無かったかも、精々2倍程度だし見落としてた

-o3とかするとベンチ的には速いから最適化とか効いてるんだろうかね?

757 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:35:35.49 ID:VIkkm8/qd.net]
だからといってわざわざ速い最適化divmod拾ってくるまでの価値も無いし、つまらんハックか
猛省

758 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:24:27.89 ID:NtDnGIIYK.net]
まあ定数の割り算は掛け算で実装するよな

759 名前:751 mailto:sage [2021/02/23(火) 12:00:01.73 ID:EYNng8zFd.net]
>>752
今アセンブリ見てみたら2147...647=2^32-1を引いて頑張ってる様子が見えた!gcc -O3/win
色々パラメータ弄って様子見ようとしたら普通に割り出したので混乱したが、実行時に与えるとフォールバックするよう
コンパイル時に定数で与えたらそうするっぽい
勉強になった



760 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:21:23.56 ID:1ia+Vnu00.net]
目安でしかないがx86-64ではmulと比べてdivやmodはレイテンシ2倍どころではない場合が多い

https://www.agner.org/optimize/instruction_tables.pdf

パフォーマンスが重要な場合は除数を定数にするか2の冪にしてシフト/論理積にする

761 名前:デフォルトの名無しさん [2021/02/24(水) 15:46:51.63 ID:/D2VYVJH0.net]
ソフトウェア割り込みプログラムは書けるのか

762 名前:デフォルトの名無しさん [2021/02/25(木) 06:12:34.32 ID:R7WVwVFS0.net]
>>755
インラインアセンブラ必須かな

763 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 07:07:20.11 ID:bxBNuN1v0.net]
環境次第
組み込み系の処理系だと割り込みハンドラーを書けたり割り込みフラグの制御ができたりするのはよくある

764 名前:デフォルトの名無しさん [2021/02/25(木) 09:55:57.73 ID:R7WVwVFS0.net]
>>757
それはC言語仕様には無い特殊な命令。SHのCコンパイラとか。

765 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:11:28.17 ID:k63j55rm0.net]
VCで作った実行ファイルを
cgiファイルに変える方法て
わからない?
どうしてもc.cgi.exeになって
しまう

766 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:17:09.21 ID:JLHf2OjdM.net]
>>759
どのHTTPサーバか、どんな設定にしてるかにもよるけど
名前だけ変えればおkじゃねーの?

767 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:00:24.23 ID:MOr3wCfr0.net]
ファイル名変えておいとくだけなんとちゃうの?

768 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:06:31.57 ID:ZW7ncKwI0.net]
Windows系サーバーだったら、
実行ファイルc.exeをc.cgiにリネームすれば動くはず

769 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:47:45.34 ID:yh+1kBamK.net]
そもそもCの話じゃないんだが
>>759
エクスプローラの表示の設定を「拡張子を表示する」モードにすべし

「拡張子を表示しない」のチェックを外す方式だったかもしれん



770 名前:デフォルトの名無しさん [2021/02/26(金) 03:45:13.89 ID:5d4w5oMJ0.net]
>>763
スレチ

771 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 06:57:40.05 ID:eCf8RuSVK.net]
//何だよ俺のせいかいw
//じゃせいぜいCだけででがんばりや
#include <stdio.h>
int main() { return rename("c.cgi.exe", "c.cgi"); }

772 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 08:02:43.73 ID:M2eccXrmd.net]
renameってstdio.hだっけ?

773 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 09:51:30.74 ID:31AFaQsJ0.net]
>>766
stdioじゃよ

774 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 12:12:32.73 ID:M2eccXrmd.net]
げ、本当だ

775 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 16:52:25.12 ID:XyNDIUjTa.net]
すみません、質問させてください

exturn FUNC(void, define1) 関数名(void)

ってなってるのが、関数のプロトタイプ宣言であることは理解できているのですが
FUNC()の意味が分からないです
define1にはキーワード定義だけされたdefineが入ってます

776 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 17:06:32.77 ID:Db4OPSpGM.net]
>>769
それはC言語の文法じゃなくて、あなたのプロジェクト固有のマクロなので、同僚に聞くかgrepしてください

777 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 17:07:39.42 ID:XyNDIUjTa.net]
>>770
ですよねー
もう聞くわ

778 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 08:22:50.63 ID:7emEuadh0.net]
Cの文法内に収まる FUNC() って

一般C
#define FUNC(ret,opt) ret
Microsoft系のやつ 呼び出し規約まで対応
#define FUNC(ret,opt) ret opt

ぐらいしか想像つかんな それを吸収しようとしてるのかしら?

779 名前:デフォルトの名無しさん [2021/03/19(金) 19:09:51.97 ID:mKZFPhjYM.net]
ret opt の記述順を変えなきゃなんないコンパイラ併用でもしてなきゃ
必然性無いよな



780 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:24:42.50 ID:1rqnmNJD0.net]
VS2019を使用してます。
c言語でハッシュテーブルを使いたい場合、
定番のライブラリってありますか?
自作は考えてません。

781 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:43:09.76 ID:f5CNtQYv0.net]
C++ hashクラスを使う
C 自作する

スキな道を歩もう

782 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:49:36.36 ID:bD1toMMoM.net]
Cにはない
多少は作るに該当するが、GPL汚染気にしないならhlist(list.h)かいっそのことrbtree引っ張ってくるのが楽
hlistは覚えてないがfreeBSDにもlist_headはあったと思うから雑に書いて作れる

783 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 20:00:40.49 ID:1rqnmNJD0.net]
>>775-776
ありがとうございます。

784 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 17:39:11.35 ID:BhPjOTnw0.net]
境界調整について教えて下さい
typedef struct stru{
int inta;
char ch;
double db;
} Str;
という構造体を作って、
Str st = {10 , 'n' , 5.20};

printf("構造体全体の大きさは %dバイト アドレスは %p \n", sizeof(st) , &st);
printf("inta の大きさ %dバイト アドレスは %p 値は %d \n", sizeof(st.inta), &st.inta , st.inta);
printf("ch の大きさ %dバイト アドレスは %p 値は %c \n", sizeof(st.ch) , &st.ch , st.ch);
printf("db の大きさ %dバイト アドレスは %p 値は %lf \n", sizeof(st.db) , &st.db , st.db);

としたところ、

構造体全体の大きさは 16バイト アドレスは 0019FF2C
inta の大きさ 4バイト アドレスは 0019FF2C 値は 10
ch の大きさ 1バイト アドレスは 0019FF30 値は n
db の大きさ 8バイト アドレスは 0019FF34 値は 5.200000
という結果が得られたんですけど、この中で
0019FF30から1バイト分には'n'という値が入っていて、
0019FF34から8バイト分には5.200000という値が入っているわけですよね?
では0019FF31から0019FF34までは何があるの?

785 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 17:55:49.95 ID:NyQKOVd9d.net]
何もない

786 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:15:58.84 ID:IaPVNFDHa.net]
ごみ

787 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:21:46.90 ID:uqOlgHvIM.net]
>>778
何があるかわからないしむりやり読んだら何が起こるかわからない

ってことになってる

788 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:27:06.04 ID:4kXIzh+CM.net]
>>778
ファイルに書き出してバイナリダンプ
gdbでx

見ても大したことない

789 名前:778 mailto:sage [2021/04/26(月) 18:28:20.87 ID:BhPjOTnw0.net]
その領域はとにかく使えないって事なんすかね。



790 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:31:26.64 ID:NyQKOVd9d.net]
そうなんです

791 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:32:08.60 ID:TR73VE240.net]
使いたいならchの後にcharを3つ作ればいいじゃない

792 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:06:39.04 ID:fVzcGJCCa.net]
>>778
__attribute__ ((packed))

793 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:43:03.58 ID:+l9LtKe60.net]
#pragma pack(push,1)
>>778
#pragma pack(pop)

794 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 22:14:43.60 ID:BhPjOTnw0.net]
またいつの間にかレスが。
>>784
それもありか。なるほど。

>>786,787
そういうのがあるんですか。入門書なんかには出てこないよね、それw
教えていただきありがとです

795 名前:788 mailto:sage [2021/04/26(月) 22:16:02.71 ID:BhPjOTnw0.net]
>>784>>785だった

796 名前:デフォルトの名無しさん [2021/04/26(月) 22:20:18.66 ID:fe3Q/YJ30.net]
訓練でC言語を習っています。
就職先としてはJAVAの客先常駐になると思うのですが、
C言語も習う以上はある程度使えるようになりたいと思っています。
ポインタが難しいとよく見るのですが、勉強になるウェブサイトが
ありましたら教えてください。
もしくはポインタだけの参考書があるようなのですが、
それを買った方が良いですかね?

797 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 06:03:07.86 ID:RrDgDJ6XM.net]
ゆとり?
技術的な内容ならまだしも学習方法や心構えまで他人に丸投げするのは職業人の姿勢として如何なものか

798 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 18:46:29.71 ID:7AKt1vSf0.net]
そういう時代
熱くなるな

PCを持ってないような人がソフト開発者として面接に来るような時代

799 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:52:06.89 ID:PZc7df0ca.net]
Cで Windows、Linux、macOS のすべてで動作するコンソールアプリを作りました
標準のライブラリのみを使用していたつもりでも、知らずにGNU拡張を使用していたり、若干の移植の障害はありましたが、それほどではありませんでした
同じようなことを C++ でやろうとした場合、Cより難しくなりそうでしょうか、そうでもないでしょうか
C++ でやるからには STL は使いたいです



800 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 22:44:05.13 ID:7AKt1vSf0.net]
同じようなもんじゃない?

801 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:21:11.19 ID:PlZRAN+K0.net]
言語仕様としてのGNU拡張は使ってもライセンスに触れないよな?
触れるのはライブラリ使用した場合じゃないか?

802 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:35:23.05 ID:4KD2riuz0.net]
コンパイラ独自の拡張であってポータビリティに欠けるってだけで
それ自体がGNUライセンスに引っかかるわけではない

803 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:56:50.52 ID:sVhsMckNM.net]
>>790
・格納先を渡す(普通のポインタ
・callee alloc(二重ポインタ
・関数ポインタ
これだけ分かってればいいというか、仕事でならこの範囲だけにしとけ

804 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 00:15:24.35 ID:T1kQSA270.net]
意外と引っかかるのは、複雑な変数宣言を読み解くこと

805 名前:793 mailto:sage [2021/04/29(木) 10:41:18.72 ID:8DhczGXra.net]
ご意見ありがとうございました
やはり、掛かる手間は同じようなものですかね

806 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 11:08:27.39 ID:1rAkIDNr0.net]
基本文法を憶えたら何かまとまったアプリを作んないと
ただ言語そのものを習ってそれっきりだと忘れるだけだぞ

807 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 13:50:03.41 ID:56IZFSRD0.net]
所詮は道具だし、使わないと忘れる

808 名前: mailto:sage [2021/04/29(木) 16:32:35.09 ID:q0JKcoqRH.net]
>>793
C++11 以降は、例えばスレッド制御・ファイルシステムをライブラリに取り込む、など積極的に環境依存が少なくなるように動いている(ように私には見える)ので、多分移植はもっともっと易しくなる、と思います、失礼、易しくなる気がしないでもありません‥‥

809 名前: mailto:sage [2021/04/29(木) 16:39:37.88 ID:q0JKcoqRH.net]
>>790
「新・標準プログラマーズライブラリ C言語 ポインタ完全制覇」前橋 和弥著
https://www.%61%6d%61%7a%6f%6e.co.jp/dp/B077ZTQY62/
ポインタを完全制覇してくれる本だそうです、私も興味があったのでポチりました‥‥



810 名前:793 mailto:sage [2021/04/29(木) 16:48:12.19 ID:loQVmfSpa.net]
>>802
ありがとうございます
そんなこともあるのかなと、淡い期待もしつつ… でした

811 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:45:22.42 ID:LfIZA/yy0.net]
cについてほとんど知らないけど、組み込みがメインな感じですか?

812 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:56:09.60 ID:/1wJlD5g0.net]
システムプログラミングの方が多いんでない?元々それ用だし
OSのインターフェース提供はどこもC

813 名前:はちみつ餃子 mailto:sage [2021/05/02(日) 16:01:37.32 ID:VAfyzxcR0.net]
パソコンでも低レイヤ (カーネルとかデバイスドライバとか) は C で書くことも珍しくはないし、
アプリケーションのめっちゃ速度が重要なとことかは C で書いたほうがチューニングしやすい。
言語処理系なんかはだいたい C か C++ で実装されるよ。 (Python とか Ruby とか Perl とか。)

ハードウェアの都合に合わせたチューニングが必要なところはパソコンにもまだまだ有って、
割合で言えばそれほど多くは無いけど、
絶対数で言えば組み込みで C が使われるよりはパソコンで C が使われるほうが多いと思う。
(数値的な根拠があるわけじゃなくて私の印象だけど。)

814 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 16:46:12.37 ID:3j0DSsAI0.net]
これからはカーネルドライバもRustで書こうぜ

815 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 18:40:43.65 ID:r2Ed4Ypi0.net]
>>808
だからメモリ割り当てでABENDするような言語系を
カーネルで使えるわけないでしょw

2021年4月15日 パニックお断り―Linus,"Rust for Linux"の盛り上がりに釘を刺す:Linux Daily Topics|gihyo.jp … 技術評論社
https://gihyo.jp/admin/clip/01/linux_dt/202104/15

816 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 20:01:40.03 ID:3j0DSsAI0.net]
>>809
だいじょぶだろ
そのうちなんかキャッチする機構とか実装すんだろ
そしたらLinusもニタニタしながら受け入れるよ

817 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 22:32:14.89 ID:r2Ed4Ypi0.net]
>>810
んじゃ、そうなってから>>808みたいなことは言おうねw
狸が逃げるよw

818 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 12:38:32.98 ID:2qlH4pSsM.net]
>>811
まさにそうする話がもまいの提示した記事に書いてあるんよ

819 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 21:44:15.09 ID:vGOhdVnf0.net]
>>811
https://www.tag1consulting.com/blog/interview-linus-torvalds-linux-and-git

「Rustなー、まあそのうちわかるんじゃねーの?
 コアはねーだろうけどドライバならいんじゃね?
 C言語の置き換えっつーよりCの補佐的な?」
って言ってるし、これ読む限り Linusもだいぶ前向きじゃん



820 名前:デフォルトの名無しさん [2021/05/08(土) 20:10:13.24 ID:jbZm9MmR0.net]
github.com/bear24rw/alsa-utils/blob/master/aplay/aplay.c :135行
static off64_t pbrec_count = LLONG_MAX, fdcount;

static off64_t pbrec_count = LLONG_MAX;
と書かれていない理由を400字以内で述べよ。

ちなみに、我が家では LLONG_MAX値 == fdcount値 です。

821 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 22:16:59.18 ID:4nIz2VjA0.net]
しらねえ。
     ↑
   5文字目

822 名前:デフォルトの名無しさん [2021/05/09(日) 13:32:52.94 ID:WMytKT+1F.net]
>static off64_t pbrec_count = LLONG_MAX, fdcount;
>が
>static off64_t pbrec_count = LLONG_MAX;
>と書かれていない理由を400字以内で述べよ。

知らんがな

>static off64_t pbrec_count = LLONG_MAX, fdcount;
>が
>static off64_t pbrec_count = fdcount;
>と書かれていない理由を400字以内で述べよ。

書いた香具師に聴け

823 名前:デフォルトの名無しさん [2021/05/25(火) 13:13:50.22 ID:0e19GInL0.net]
int (**c)[];

int *(*e[]);
の意味がわからずに困っています。
ちなみに二つとも意味がわかりません。これらは同じものなんでしょうか?

824 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:28:28.93 ID:d4PPfL2v0.net]
cはint配列へのポインタへのポインタ
eはintポインタへのポインタの配列で、丸括弧は不要
cとeは同じではない

825 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:33:48.93 ID:tg9vUr3N0.net]
ややこしそうなのは途中に strust や typedef 使って先送りにする

826 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:37:45.63 ID:tg9vUr3N0.net]
struct

827 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:44:44.11 ID:7uNVaR2o0.net]
ポインタ変数定義に()が付くと理解が困難になる・・・。

828 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:50:25.07 ID:mW0d20UP0.net]
より複雑な宣言子の解釈

https://docs.microsoft.com/ja-jp/cpp/c-language/interpreting-more-complex-declarators?view=msvc-160

829 名前:デフォルトの名無しさん [2021/05/25(火) 13:57:49.19 ID:0e19GInL0.net]
>>822
これが一番わかりやすかったです。
ありがとうございました。



830 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 19:01:00.19 ID:5zVTpare0.net]
小生使う機会ないんでそんな複雑な記述の経験ないし機会あっても出来る自信ないのだけれど、アセンブラで書くと縦長になるソレを横に圧縮したC言語って、ホント効率落とさず物臭する為の記述だよね。
(アセンブラよりは)安全だし。

831 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 21:20:58.20 ID:d4PPfL2v0.net]
ケントンプソンの面倒くさがりをデニスリッチーが後継した高級アセンブラ

832 名前:デフォルトの名無しさん [2021/05/25(火) 21:26:46.44 ID:mNrV1IEb0.net]
cdecl で説明してもらえば?

833 名前:デフォルトの名無しさん [2021/05/26(水) 09:42:42.04 ID:mfYAtZMN0.net]
pkg install cdecl すると,c++decl -> cdecl しかsym-linkしてないので
手動でexplain -> cdecl cast -> cdecl declare -> cdecl もいれておいた.
で,
explain 'int (**c)[]'
declare c as pointer to pointer to array of int

explain 'int *(*e[]);'
declare e as array of pointer to pointer to int

と説明された.

834 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 11:19:17.43 ID:2/BE6bBSF.net]
>>817-818
++c; // ← Error
++e; // ← OK

説明してみ?

835 名前:デフォルトの名無しさん [2021/05/26(水) 11:21:32.69 ID:2/BE6bBSF.net]
ああ間違えたω
>>817-818
++c; // ← OK
++(c[0]); // ← Error
++e; // ← OK
++(e[0]); // ← OK

836 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 12:07:18.36 ID:DNuuAFHS0.net]
++eがOKなわけねえだろw

837 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 10:47:37.95 ID:kQVwJQto0.net]
ID:2/BE6bBSFは逃げたかw
まあ逃げたくもなるよな
あんな赤っ恥w

838 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 14:56:50.43 ID:UXlES6Sbd.net]
typespecifer declarator-initializer;
と実質的に型を決める文法要素が二分されてるのがイケてないとは思う
=で示されるinitializerまたは代入式の右辺でアサインされる対象が左辺そのものでなく、declaratorの識別子部分なのも=の意味論(等しくする)に合ってないよなあ

まあ慣れるんだけど

839 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 15:03:11.46 ID:UXlES6Sbd.net]
関数ポインタと配列とポインタが入り交じるようなときは、各部分毎にtypedefして、数行に分けて型を組み立てるのがよいと思う



840 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 15:08:30.66 ID:UXlES6Sbd.net]
c23では宣言(というか殆どの構文)に付けられるattribute([[attr]])が入るけど、これ改造して[[type]] identifier;の形で宣言するように(仕様上は)できるよね
c23以降の規格で取り入れられないかな?

841 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 01:02:59.83 ID:7zb2zdx50.net]
基本情報で分からないとこあるんで教えてください。。
Cに入るのがなんでキなんでしょうか
p→coursenameはポインタだから、出力する時は*p→coursenameにすべきでは無いでしょうか
https://i.imgur.com/8Lp9aMx.jpg
https://i.imgur.com/DgNEbGT.jpg
https://i.imgur.com/xvvs1oJ.jpg
https://i.imgur.com/3bG8iC8.jpg
https://i.imgur.com/qHhb9jj.jpg

842 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 03:00:31.68 ID:EK8Kl+z60.net]
>>835
文字列を出力したいならフォーマット指定子は%s、第3引数以降で渡すのは先頭アドレス
*p->courseNameじゃアドレスじゃなくて先頭の1Byteになっちゃう

843 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 03:02:57.31 ID:reEc78CW0.net]
うーん、入門書はなんて書いてあるんだろ

Cで文字列を表現するときはchar型の配列もしくはchar型の配列を指し示すポインタを用いる。
だから出力するときも配列もしくはポインタを用いて、
printf("%s", str); //ここでstrはchar型配列かポインタ
みたいに記述する。

もしもここで*strと書いてしまうと、それは配列もしくはポインタが指し示す配列の先頭の1文字を示すことになり、それはもう'a'とか'b'とかいった値でしかないから、次の文字の所在がわからず文字列を取り出せない

844 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 06:03:30.13 ID:2aHU1C7x0.net]
現在訓練校でCを学んでいます。
基本情報って資格としての価値はどの程度なのでしょうか?

私なりに調べてみましたが、マストではなく、昇給・昇格のために必要なケースが多そうな
印象だったので、訓練中はプログラミングを中心に勉強して、就職後に資格に挑戦しようと思っています。

845 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 06:23:27.84 ID:fuFcwWPl0.net]
価値があるのはレベル4だけ
それ以外はレベル4を目指す者の励みとしての昇段のようなもの

846 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 08:14:27.25 ID:keyTlfbM0.net]
>>836
>>837
そうゆうことですか、ありがとうございます!
理解しました

847 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 09:35:32.42 ID:fuFcwWPl0.net]
昔、特種持ってるけどひでえコードかくバカいたよ

848 名前:デフォルトの名無しさん [2021/05/28(金) 11:12:18.91 ID:ymLe7hdU0.net]
>>835
こういう手合いは知恵袋や寺尾にはウジャウジャいる
コイツラ、自己参照構造体とリスト構造からして分かってないよ
基本ができてねーんだもん、応用が出来るワケない

849 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 11:53:19.85 ID:0F7o22rA0.net]
大学のC言語講義の最初のテストの時点で"1234"と'1234'の違いさえ理解してなかったよ。
翌年にはアセンブラでC言語から呼び出す関数書いてたけど。



850 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 12:11:32.46 ID:eNCMSwEe0.net]
>>838
基本情報資格は、プロの登竜門・初級以上と認められる。
これを持っていないと、アマチュアの趣味扱いで、プログラミングが好きな人

例えば、YouTube で有名な、雑食系エンジニア・KENTA のサロンでも、
自社開発ウェブ系の未経験者の初級カリキュラムにも入っている

基本情報、Ruby on Rails, Linux, Docker Compose, VSCode, Node.js など。
Docker Composeまでが初級者コース

851 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 13:21:37.52 ID:fuFcwWPl0.net]
アマチュアの趣味で、プログラミングが好きな人にもすげえのいるけどな

852 名前:844 mailto:sage [2021/05/28(金) 14:32:25.27 ID:eNCMSwEe0.net]
基本情報とか持っていない人は、
知識が偏っている・狭いとか、常識が無いこともある

資格の知識は、広く浅いから、基礎・常識を学ぶには良い

医者で言えば、身体全体は常識の範囲内で分かるけど、
手術できるのは、自分の専門分野に限るとか

爺の医者が言ってるけど、
若い医者には、常識のない香具師とかいるので怖いとかw

専門分野以外でも、それぐらい常識だろうみたいな

853 名前:844 mailto:sage [2021/05/28(金) 14:39:17.23 ID:eNCMSwEe0.net]
日本の雇用体系では解雇できないから、
どうしても、学歴・資格による事前審査型になってしまう

出来ない人を雇いたくない。
損害が大きいから

一方、米国では、全員がフリーランスと同じ扱いだから、
お試しで雇って、出来なければすぐに解雇できる

実力主義。
学歴・資格も関係ない

出来る香具師が来るまで、解雇し続ける。
事後の結果重視型

854 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 14:47:30.76 ID:fuFcwWPl0.net]
専門外の手術ができる医者なんかいねえぞ

855 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 14:57:42.29 ID:R3ooSWDP0.net]
>>848
専門外とはいっても傷を縫うくらいは割と誰でもできるよ

856 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 15:41:13.46 ID:fuFcwWPl0.net]
重箱の隅を突くような例を持ち出して何が言いたいんだ?
情報処理技術者試験の何を例えようとしてるんだよ

857 名前:デフォルトの名無しさん [2021/05/28(金) 15:41:44.26 ID:noi5k0SLF.net]
>>838
基本情報はカス
英検4級クラス

ちょっと使えるかもしれないのは応用情報以上から

858 名前:デフォルトの名無しさん [2021/05/28(金) 16:21:08.86 ID:d4trihsO0.net]
放屁を表現するにはどのように組めばいいですか?

859 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 17:22:56.65 ID:2aHU1C7x0.net]
>>839
>>851
ありがとうございます。
いつでも挑めそうなので、今はプログラミングについて探求していこうと思います。



860 名前:デフォルトの名無しさん mailto:sage [2021/05/29(土) 13:03:23.38 ID:r3cbJcYW0.net]
>>850
情報処理技術者と医者は違うよ

861 名前:デフォルトの名無しさん mailto:sage [2021/05/29(土) 13:45:09.13 ID:aPQQ38Uv0.net]
>>854
それは846に言ってくれ

862 名前:デフォルトの名無しさん mailto:sage [2021/05/29(土) 23:42:24.57 ID:My8NRvOD0.net]
>>854
情報処理技術者と医者の比喩とは、どう違うのですか。

863 名前:デフォルトの名無しさん [2021/05/30(日) 10:37:22.47 ID:ssDmNHo+0.net]
医者は治療に特化した知識や技術はあるけど
科学的な思考を出来る医者は意外と少数派のイメージ

864 名前:844 mailto:sage [2021/05/30(日) 11:15:42.19 ID:Gk//zzeB0.net]
外科部長とか、手術のトップでも、何十年も専門医を取れない香具師もいる。
かと思えば、専門医は常識だけで取れる、取れない香具師は馬鹿という香具師もいる

教授クラスでも、病理・解剖の報告書の意味が分からない香具師も一杯いる

報告書は難しくて、意味が分からないけど、
大丈夫と書いてありますから、大丈夫ですと説明する教授とかw

基本、自分の専門分野以外は分からない

865 名前:デフォルトの名無しさん [2021/05/30(日) 12:45:34.55 ID:V/qTlijF0.net]
資格の壁を欲しがるのは、実際的な実力のない人でしょうな
立場が弱い方が過酷ゆえ、実際的な実力が付く(初心者はさておき)

それを抑え込みたい(過酷ゆえ、彼らは時間のかかる読書をする余力がない)
残念ながらそういう社会なので、生活の知恵としては、有益、てことなんだろうけど

そして昨今の大企業や役所で多いトラブルは、その資格神話が原因だと思う
下を切り過ぎて、下に丸投げしてたプロパーにやらせるケースが増えたんじゃないかな
実力があるんでしょ?ていうw

866 名前:デフォルトの名無しさん mailto:sage [2021/05/30(日) 13:19:09.44 ID:4Llulaw20.net]
なるほど
日本語が不自由ですね(やべーなコイツ)

867 名前:デフォルトの名無しさん [2021/05/30(日) 13:29:49.69 ID:7FUVn7Mh0.net]
実力のある下級奴隷を抑え込むために中級奴隷は資格が欲しい?

868 名前:844 mailto:sage [2021/05/30(日) 14:09:05.31 ID:Gk//zzeB0.net]
資格を取れない香具師は、理解能力がない香具師が多い

企画書・規格書・文書などを読めない。
要求定義を出来ない。
客のニーズが分からないから、適切な提言ができない

客に言われた事しかできない。
客は素人だから、客に言われた事をやったら、ダメ

ちゃんと目的を聞いて、効率的な方法を提案しないといけない。
だから成功しているのは、文系のRuby on Rails ばかり

理系のPython をやってる香具師は、コミュニケーションが取れない。
まともに話・説明ができない

技術はどんどん変化するから、コミュ力・理解力・説明力が必要。
ずっと1人で、誰にも理解されない・訳の分からない事をやっている、理系の職人じゃダメ

軍隊で言えば、全員で意思疎通しながら、足並みを揃えて進行していかないといけない。
個人・独学では通用しない。
チーム力が重視される

869 名前:デフォルトの名無しさん mailto:sage [2021/05/30(日) 14:32:33.23 ID:+cXBE89D0.net]
金バッチみたいなものか



870 名前:844 mailto:sage [2021/05/30(日) 14:58:39.30 ID:Gk//zzeB0.net]
論理力があるかどうかは、国語のテストで判別できる

幾つかの文章を、ヒントから正しく並べ替えるとか、
時系列や、原因・結果が逆になっていないかとか、

これは何を指しているかとか、
その時の主人公の気持ちを答えろとか

ここにこう書いてあるからこうですと、論理的に説明できないといけない。
どこにも書いていないことを、想像で答える問題ではない

だから、Rails をやるような文系女の方が、論理的。
Python をやるような理系男は、論理力が苦手だろ

871 名前:デフォルトの名無しさん [2021/05/30(日) 16:05:08.30 ID:ssDmNHo+0.net]
> 864 が全然論理的じゃなくてワロス

872 名前: mailto:sage [2021/05/30(日) 17:10:19.27 ID:1jxmZkjx0.net]
>>864
>論理力があるかどうかは、国語のテストで判別できる

まあ母語で思考力を試すのはわからないでもないのですが、

>幾つかの文章を、ヒントから正しく並べ替えるとか、
>時系列や、原因・結果が逆になっていないかとか、
>これは何を指しているかとか、
>その時の主人公の気持ちを答えろとか
>その時の主人公の気持ちを答えろとか
>その時の主人公の気持ちを答えろとか
>その時の主人公の気持ちを答えろとか
>その時の主人公の気持ちを答えろとか
>その時の主人公の気持ちを答えろとか

そんな問題で思考力を試すのですか?あなたが思考力に乏しいことを露呈しているのではないのですか?

初等教育での問題設定は私にもよくわかりませんが、中等教育課程でなら、単に問題として適切なばかりか、教育訓練方法としても適切な手法はありますよ
それは英文和訳です。

翻訳レベルまでは求めませんが、目があり手があり内蔵があり手足があり五感があり感情・激情があり同じ食べ物を食べ同じ武器で怪我をし同じ行気にかかり同じく薬でなおり冬や夏には暑さ寒さを感じ針で刺せば血が出てくすぐったら笑う毒をもったらあっけなく死ぬるような同じ「人間」が書いたとは思えない訳文を私もよく書いたものです

873 名前:デフォルトの名無しさん [2021/05/30(日) 17:38:07.40 ID:4jG5kCp70.net]
本当の気持ちは言葉にできないものだ

874 名前:デフォルトの名無しさん mailto:sage [2021/05/30(日) 20:54:28.67 ID:p+VrCgXk0.net]
>>857
医者は職人で、学者じゃないからね
医者の実務を知らないやつほど
研究なんてやってる暇があると思ってる

875 名前:デフォルトの名無しさん mailto:sage [2021/05/30(日) 20:54:47.64 ID:p+VrCgXk0.net]
>>865
同感

876 名前:844 mailto:sage [2021/05/31(月) 09:18:48.01 ID:etoumxTf0.net]
>>866
ちょうど昨夜のテレビ、東大合格ドラマ「ドラゴン桜」で国語をやってた

どの文章とどの文章が、等価・つまり同じ事を言い換えたものでしょうかとか。
結局、筆者の言いたかった事は何か? 要約しろとか

つまり、読解力とは理解能力

877 名前:844 mailto:sage [2021/05/31(月) 09:25:18.02 ID:etoumxTf0.net]
「走れメロス」を要約しろとか、「ドラゴン桜」の国語でやってた

友達を信じて待つ

878 名前:844 mailto:sage [2021/05/31(月) 09:35:25.57 ID:etoumxTf0.net]
「ドラゴン桜」では、

国語が出来ない・読解力が無いと、
題意を勘違いして、求められる回答を書けないなど、

すべての教科の点数が下がるから、国語が重要!

879 名前:デフォルトの名無しさん [2021/05/31(月) 09:51:02.68 ID:Tm9sROGBF.net]
ドラコン櫻で教えてるのは「受験のテクニック」であって
論理学ではない
所詮漫画
テストの点は取れるようになるかも知れないが実際馬鹿な公務員が増えただろ?



880 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 09:53:41.48 ID:O9N9c2eG0.net]
そうなんだよな
塾とかの競争原理で実績を出さにゃならんから
本当の実力とは違う点数の取り方ってのがある

881 名前:844 mailto:sage [2021/05/31(月) 12:53:27.36 ID:etoumxTf0.net]
漫画だけど、塾を取材して、そのやり方を書いてる

例えば、塾では問題を解かない。
解いたり考えたりする時間が無駄だから

問題のパターンを教える。
1つの問題を解いている時間で、10個以上の問題のパターンを覚えられる

YouTube で有名な、雑食系エンジニア・KENTA のサロンと同じ。
学校・会社を取材して、必要な技術を選んでいる

Ruby on Rails 初心者用コースに、
Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース

Docker Composeが出来ないと、採用されませんよとか。
考える要素などない。
競争に勝つ、勉強をしたか・してないかだけ

882 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 12:56:00.90 ID:QwUa5xlW0.net]
>>873
テストの点すら取れない真のバカよりはずっとずっとマシだよ

883 名前:デフォルトの名無しさん [2021/05/31(月) 13:21:04.29 ID:BBpqu8AM0.net]
真のバカはテストの点のみならず両方ダメだから文字通りに「ずっとマシ」だろうけど
テストの点がとれない頭のいい奴を排除してしまうのが最大の問題だ
こういう場合は「(テストは)無い方がいい」になる
排除するのが目的なら真のバカは両方ダメだから排除できる

884 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 13:59:08.86 ID:QwUa5xlW0.net]
>>877
こと公務員についてのみ言うなら・・・
テストの点が取れないバカは不要だし
テストの点が取れるバカはハサミと同じく普通に使いでがある
テストの点が取れない天才は取りこぼしても大勢に影響はない

Cプログラマにはテストの点が取れない天才はいないので大丈夫

885 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 14:18:39.01 ID:rigi+WDl0.net]
学校の試験は、出題者の意図を読み取り期待する回答を書く能力を調べること
だから、社会に出てからその能力が役に立つ分野は限られている

886 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 14:46:22.19 ID:O9N9c2eG0.net]
試験で試すことのできる能力と
本当に必要な能力に「ズレがある」ってだけの話を
まったく違うと拡大解釈して
現実味のない極論を始める軽率なやついるよな

887 名前:デフォルトの名無しさん [2021/05/31(月) 14:46:25.43 ID:BBpqu8AM0.net]
テストと現実が乖離しまくって大勢に影響出まくってんのが現状じゃないの

『天才』まで行かなくても『頭のいい奴』ていどでも
「テストの点が取れないちょっと頭のいいやつを取りこぼしまくると大勢に影響が出る」

そして一般大衆の頭の中では「テストの点が取れない⇒バカである」になる
『テストの点が取れる○○はハサミと同じく普通に使いでがある』このパターンと見分けがつかないからな
○○に何が入ろうがバカと判断されてしまい鼻毛切り程度の小さな仕事しか回ってこなくなる

888 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 15:00:06.82 ID:O9N9c2eG0.net]
どう乖離してるのか具体的に言えるか?

889 名前:デフォルトの名無しさん [2021/05/31(月) 15:10:57.39 ID:BBpqu8AM0.net]
ズレがある=乖離してる、でしょ
すると、ズレがデカくなりすぎる=乖離しまくってる、になる

そしてズレがあると現実に影響が及ぶ



890 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 15:35:06.23 ID:O9N9c2eG0.net]
ほらな
抽象的なことしか言えない
案の定ってやつ

891 名前:デフォルトの名無しさん [2021/05/31(月) 17:11:14.35 ID:dxZCxWYyF.net]
こっちの方が面白い
https://www.youtube.com/watch?v=2hf105qkx38

892 名前:デフォルトの名無しさん [2021/05/31(月) 17:12:54.07 ID:BBpqu8AM0.net]
ズレ=乖離だよ

ズレがありすぎるから問題なんでしょ
ズレがありすぎるのはまったく違うのとほぼ等しい
特に拡大解釈ではない

893 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 20:09:39.07 ID:QwUa5xlW0.net]
>>881
>テストの点が取れないちょっと頭のいいやつ
がどれだけいるのか定量的に教えてください
できれば、とりこぼしまくって大勢に影響が出た事例についてもお願いします

894 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 05:51:42.02 ID:P/S2+Nob0.net]
具体的に例を挙げろつってんの
ズレだの乖離だのの言葉の定義ではなく

895 名前:デフォルトの名無しさん [2021/06/01(火) 11:04:18.90 ID:kkYAvrn40.net]
>>878で「大勢に影響はない」と言い切ったのはオレじゃねーぞ
お前だぞ

896 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 12:08:12.15 ID:P/S2+Nob0.net]
具体的に例を挙げろ
余計な無駄口は聞こえねえ

897 名前:デフォルトの名無しさん [2021/06/01(火) 13:44:16.89 ID:kkYAvrn40.net]
ズレてるとか言ったのもオレじゃねえからな
>>880

898 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 15:23:06.69 ID:Dbf622Mk0.net]
出題者の意図を読み取り、期待する回答を書くのは、
社会のすべての事に関して重要

理解力・意思疎通・説明能力

これが無いと、客の意味を取り違えたりする。
ちょっとした技術自慢だけで、実は役に立たない典型的な馬鹿

技術自慢は転職でも、最も嫌われる

意思疎通できない香具師とか、
熱い志がないとか、その会社の製品・事業に興味がないけど、
技術自慢だけしに来る香具師

899 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 16:31:59.27 ID:P/S2+Nob0.net]
>>891
具体的に例を挙げろ
余計な無駄口は聞こえねえ



900 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 17:24:06.49 ID:aPzpXp8H0.net]
>>889
無いを挙げるのは悪魔の証明になるので
影響があった事例を教えて

901 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 18:04:43.83 ID:qeHvspwIM.net]
言い出しっぺはとっくにいなさそうだしこの話もう終わりにすれば?

902 名前:デフォルトの名無しさん [2021/06/04(金) 01:41:15.92 ID:n2NTEjZ40.net]
>>852
#include <stdio.h>

int main()
{
 puts("ぷ");

 return 0;
}

903 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 01:43:19.30 ID:oNV2u1VT0.net]
なぜゼロを固定的に返すのか。

904 名前:デフォルトの名無しさん [2021/06/04(金) 01:54:39.72 ID:n2NTEjZ40.net]
>>897
わかった。君だけは他の値を返すことを許す。

905 名前:はちみつ餃子 mailto:sage [2021/06/04(金) 01:55:33.20 ID:Xsuyfl+R0.net]
>>897
main で 0 または EXIT_SUCCESS を返すと
成功終了であることをホスト環境に (処理系定義の方法で) 通知するという仕様になってる。

ちなみに main に限っては return 文を省略すると 0 を返したことになるので
書きたくなければ省略してもいい。

906 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 02:05:38.62 ID:3rxFsIot0.net]
身は出しちゃ駄目

907 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 02:19:44.39 ID:n50ApA7d0.net]
>>899
あったなあ、そういう仕様。
main()では必ずexit(0)するコードとかあったっけ…

908 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 02:28:56.87 ID:3rxFsIot0.net]
exit()はmain以外でも使えるから便利w

909 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 02:29:12.39 ID:oNV2u1VT0.net]
>>896
なぜputs()のエラー判定をしないのか。



910 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 02:32:02.03 ID:n50ApA7d0.net]
>>902
やるな、ってw
longjump()使うとかせいw

911 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 04:19:06.21 ID:bj0HIe9W0.net]
longjmpのほうがよっぽどないわー

912 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 10:54:44.43 ID:n50ApA7d0.net]
>>905
まだまだ経験が足りんな

913 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 13:19:20.87 ID:o4J1slTs0.net]
inf main(void)

914 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 13:33:17.16 ID:VPG/eawh0.net]
フラグを返して呼び出し直後でif文、またフラグを返して、の繰り返しが
今まで何やってたんだろうというくらい、すっきりする

915 名前:はちみつ餃子 mailto:sage [2021/06/04(金) 14:38:58.11 ID:Xsuyfl+R0.net]
C++ の例外送出の実装方式にはいくつか種類があるけど、
sjlj と呼ばれる方式は setjmp/longjmp の略で C の setjmp と longjmp と同じことをしている。
(sjlj は移植性はあるがかなり遅いので実際には廃れ気味。)
逆に setjmp と longjmp で例外の真似をするという発想もわからんでもない。

ただなぁ、例外は例外で色々と問題をかかえているし、
後発の言語である Go や Rust がエラーを返却値で返す方式に回帰しているのを見ると、
こういうのでいいんだよこういうので……と近頃は思うようになった。

916 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 21:29:01.37 ID:VPG/eawh0.net]
C++の例外はイケてない
俺はそこそこのC++loverのつもりだが
ここはどうにも愛せない

C++98の動的例外指定をやめてnoexceptにしたおかげでマシにはなったが
まだまだ膿が出し切れてない

もうexceptionやめてnested_exceptionだけに絞った方がいいんじゃないかという気がしてる
あれこそ単一継承教の害悪の典型だろ

917 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 22:27:18.41 ID:n50ApA7d0.net]
>>909
まあその辺の考え方はわからんでもないけどね
ただ、一度longjmp()慣れたら、はっきりいって違和感はないし。
そもそもあちこちでexitするとか、それは昔のIBM系で悪名高い、
おかしくなったらABENDってのと何が違うんだよ、と思ってしまうので
それを考えるとね、exit()するくらいなら、longjmp()で制御戻して
出口一つにしとくようにしようよ、と思うわけさ。
問題って言っても、それこそANSIの最初の標準からあるわけだし。

918 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 22:51:54.40 ID:n50ApA7d0.net]
あと、もう一つメリット。
デバッガで動きを追うときに必ずsetjmp()の後ろにブレークを張っておく、と。
そすると、おおぅ、というような動きで異常終了とかでも、プログラムは落ちないから
グローバル変数くらいは確認できるw

919 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 23:18:26.41 ID:HbomffeSM.net]
それはexitにブレーク貼れば同じことできるのでは?



920 名前:デフォルトの名無しさん [2021/06/05(土) 16:53:19.77 ID:lg0pCfQ90.net]
>>903
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

921 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 09:53:00.73 ID:ZY57P3KvM.net]
BSD, macOS, Linuxで動くgets_sの模範的実装下さい。

922 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 10:02:19.40 ID:uVO5juz10.net]
C++ならtemplate <typename charT, int N> charT* gets(charT (&ary)[N]);と
従来の使い方をそのまま残してサイズ渡せるんだけどな

923 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 11:53:46.28 ID:3zqNVH/1M.net]
BSP

924 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 18:43:44.02 ID:QmJfg8OWF.net]
res しない自由

925 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 20:39:15.79 ID:b2JLFDmD0.net]
C言語クイズ

void f(char **p) {
printf("%c\n", **p);
}

int main(void) {
char s[100];
f(&s);
return 0;
}

↑のコードは合法か否か?

926 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 21:11:18.60 ID:zK/HfdvT0.net]
>>919
違法です

927 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 21:28:44.78 ID:QzrjrzJVM.net]
実行犯は逮捕されます

928 名前:デフォルトの名無しさん [2021/06/14(月) 22:16:38.04 ID:q3ZquDHG0.net]
法的にはアレだが感情的には(ry

929 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 22:43:48.58 ID:JlQ40LV2a.net]
>>919
行けそうな気がするけどダメなのか
char s[100];
じゃなくて
char *s = "abc";
ならオッケーなんだよね



930 名前:デフォルトの名無しさん [2021/06/14(月) 23:17:08.16 ID:stHhaeqd0.net]
f() は char **p を受け取るようになってるからな。
p が指す先の *p が char * 型で、更にその先の **p が char 型になる。

931 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 00:41:45.66 ID:uIngvlIz0.net]
>>920-923
正解です

>>924
コンパイラ通してみるとわかる
ちなみに俺は今日までこの仕様を知らなかった( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \

932 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 06:59:43.45 ID:FhuU/vlv0.net]
そもそも初期化されていない領域へのアクセスがアレなのでは

933 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 07:34:01.16 ID:d2euf9Bx0.net]
未だにchar**とchar(*)[100]の区別がつかないやつがいるのか

934 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 07:39:05.57 ID:ul7dDyuz0.net]
未初期化で不定なポインタではなく
指し先の実体が未初期化なだけなのでセーフということにしたい

935 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 07:51:57.42 ID:d2euf9Bx0.net]
union
{
char s[100];
char *t;
} u;
char **p;
p = &u.t;
printf("%c\n", **p);
とやってるのと同じで
*pつまりtが不定なのに逆参照しちまってるじゃねえか

936 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 08:28:39.63 ID:WH9TaISq0.net]
あれ? あれ?

937 名前:デフォルトの名無しさん [2021/06/15(火) 09:50:49.77 ID:Pt7e5czla.net]
>>929
違う。

938 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 10:26:31.47 ID:d2euf9Bx0.net]
>>931
何が?

939 名前:デフォルトの名無しさん [2021/06/15(火) 14:55:22.33 ID:dTl1pSLYF.net]
じゃあ別の問題
char s[100];
のとき
char *p = s; は ok
char **q = &s; は?



940 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 15:02:32.98 ID:d2euf9Bx0.net]
ダメに決まってんだろ
別の問題じゃねえじゃん
同じこと聞いてんなよ

941 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 15:03:48.90 ID:d2euf9Bx0.net]
通せるコードが知りたいの?
char (*q)[100] = &s;
ほれ

おまえさんがやりそうな
char **q = (char**)&s;
はコンパイルは通るが○はやれないよ

942 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 16:23:49.89 ID:Ggb59cAP0.net]
◯とか×とかの恣意的な答えじゃなくてじゃなくて仕様書読めないのがここの限界だよな
オレもだけど
未定義動作なんて又聞きでしかしらねぇや

943 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 16:43:11.36 ID:uIngvlIz0.net]
仕様書読んでる人なんか沢山いたじゃんこのスレ
今はいないの?

944 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 16:43:19.15 ID:d2euf9Bx0.net]
このへんを理解するのに規格票なんか読んでたら却って時間かかるよ
規格票は初心者が読むようにはできてないから

それよりポインタの基本をしっかり押さえていくと自然に答えに行き着く
実際、俺がそうだった
じっくり真剣な考察がいるからテキトーこいてるうちはわからない
いわばテキトーセンサーだ

945 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 16:43:29.10 ID:Zky1caEs0.net]
コンパイルで、警告が出るだろ
右折禁止って書いてあるところ無理に右折するから、捕まる

946 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 17:28:08.27 ID:Zky1caEs0.net]
配列sに初期値を入れておかないと表示出来ません
int main(void) {
 char s[100]={'a'};
 char *p=&s[0];

 f(&p);
 return 0;
}

947 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 22:57:25.73 ID:v+13MMUQa.net]
配列とポインタは交換可能な場面が多いけど、結構融通が利かないことが多いですね
そもそもの >919 は定数の s を変数に適用しようとするからダメなのかな

しばらく C をやってないから、すっかりピンとこなくなってしまった
そもそも、こんな紛らわしい、クイズになるような記述はしないけど…

948 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 00:39:49.95 ID:QUFt1TkX0.net]
sのアドレスを関数に渡した場合は、
受けとった側がこのアドレスをchar型の要素数100の配列として操作する必要がある。
これは関数f()のプロトタイプである、ポインタのポインタとは違う物である。
コンパイルしたときの警告をよく読んでみよう。

949 名前:デフォルトの名無しさん [2021/06/16(水) 16:30:37.87 ID:uJQ6HHCXF.net]
char s[100];
のときの
s と &s[0]
上の二つと &s の違い



950 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 20:00:03.68 ID:kgg3yKk+0.net]
アセンブラ「?」

951 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 02:32:09.07 ID:JsrG75zva.net]
>>919
語弊があるかもしれないけど、
関数 fは charへのポインタの配列(ポインタ)を受けようとしていて、
呼び出し側はcharの配列への参照(ポインタ)を
渡そうとしているんだよね

952 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 11:15:04.23 ID:SWOKbVD80.net]
char **p は 「charへのポインタの配列」 ではないよ

int main(void) {
 char s='a';
 char *p=&s;

 f(&p);
 return 0;
}

953 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 11:32:48.85 ID:qVo1n1YK0.net]
ポインタ=配列と思い込んでいるときの症状だな
char s[100];
char *p = s;
assert(sizeof s != sizeof p);

954 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 12:21:59.90 ID:u4WNkp++0.net]
C言語には一応配列型があるんだっけ?
ほとんどポインタと同義で扱えるから分からんだけらしいが

955 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 12:27:26.73 ID:PisvSOwJa.net]
>>946
その通りです
なので、語弊があるかもと書きました

main の第2引数を
char *argv[]
char **argv
のいずれにもできるアレです
Cには配列型はないので

956 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 12:34:26.88 ID:qVo1n1YK0.net]
> Cには配列型はないので

ある!
char s[100];
これが配列型だ

957 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 12:55:46.07 ID:PisvSOwJa.net]
たしかに配列ですけど、配列型なのかな

自分もちょっと理解があやしいので…
誰か男の人来て〜!!

958 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 13:09:37.10 ID:qVo1n1YK0.net]
「型」とは何だと思う?
こういうのは型で、こういうのは型じゃない、という境界を示せるか?

959 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 14:03:32.36 ID:4qObO6qj0.net]
rui_ueyamaのコンパイラ入門だと配列型とポインタ型は別々だって言ってたよ



960 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 14:06:34.50 ID:qVo1n1YK0.net]
951が言いたいのはこういうことか?

typedef char T[100];
T s; //これなら型だ
T s[100]; //これは型なのかな

961 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 15:31:45.57 ID:YvA5lG3W0.net]
型って言うと普通はintとかfloatだよね
配列型っていうか「int型の配列」と表現することはあるけど

962 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 15:48:44.73 ID:Cedau++pM.net]
基本型(数値型と文字型)と集成体型(配列と構造体)とポインタ型

963 名前:デフォルトの名無しさん [2021/06/17(木) 16:05:49.23 ID:LpiEWNiEM.net]
型はintとcharとfloatとdouble等
配列はその型を[100]みたいに指定した固定数だけ宣言して使えるようにしたもの
ポインタは指定した型のメモリ上の場所だけを指し、*allocでサイズが変えれる
配列もメモリの場所を示すポインタで参照はできるがサイズは固定

で覚えた

964 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 16:13:28.27 ID:qVo1n1YK0.net]
>>955
キーワードのみで指定される型は基本型(basic type)だ

6.2.5 型 オブジェクトに格納した値又は関数の返す値の意味は,それをアクセスするのに使われる式の型(type)によって決定する。(オブジェクトとして宣言された識別子は最も単純な式とし,その型は識別子の宣言において指定された型とする。)型は,オブジェクト型(object type)(オブジェクトを完全に規定する型),関数型(function type)(関数を規定する型),及び不完全型(incomplete type)(オブジェクトを規定する型で,その大きさを確定するのに必要な情報が欠けたもの)に分類する。

965 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 13:25:25.10 ID:askuiBap0.net]
>>958
なるほど

966 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 14:20:34.01 ID:askuiBap0.net]
あ、ほんとだ
規格書見たら普通に配列型と書いてあるね
知らんかった
ネットで検索しても「配列型」は引っかからないけど

967 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 14:36:30.74 ID:askuiBap0.net]
>配列型(array type)は,要素型(element type)と呼ぶ特定のメンバオブジェクト型をもつ空でないオブジェクトの集合を連続して割り付けたものを表す(36)。配列型は,その要素型及び配列の要素の個数によって特徴付ける。配列型はその要素型から派生されるといい,要素型がTの場合,配列型は“Tの配列”と呼ぶ。要素型から配列型を構成することを“配列型派生”と呼ぶ。

「Tの配列」という表現は「配列型」と同義なのか、勉強になった

968 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 15:24:35.28 ID:AVf6Ht590.net]
配列が型でなければ、sizeof int[4]とか、(char (*)[4])ptrとか書けないからね

969 名前:951 [2021/06/19(土) 00:09:10.43 ID:zB4v1zpja.net]
では、cには文字列型があるといえるのかな



970 名前:デフォルトの名無しさん [2021/06/19(土) 00:14:04.98 ID:MQWrKSb70.net]
関数の引数で

void func(char s[][10])

なんて書き方をすると配列型をちょっと実感できる。

971 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:14:26.03 ID:8xkixJIf0.net]
>>963
charの配列を文字列として扱うよ

972 名前:951 mailto:sage [2021/06/19(土) 00:20:12.06 ID:zB4v1zpja.net]
いや、規格書に書いてあるのだから、私の間違いでした
すみませんでした

973 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:48:51.22 ID:AhXAE8oj0.net]
NUL終端していないchar配列はただの配列

974 名前:デフォルトの名無しさん [2021/06/19(土) 05:43:30.69 ID:MQWrKSb70.net]
飛ばない豚はただの豚

975 名前:デフォルトの名無しさん [2021/06/19(土) 17:04:29.32 ID:zDrgWeBeF.net]
void func(char s[][10])
は嫌い
void func(char (*s)[10])
じゃいかんの

976 名前:はちみつ餃子 mailto:sage [2021/06/19(土) 17:34:38.67 ID:/f53/cxR0.net]
>>969
意味は同一。
仕様上の意味付けとしては後者がまずあって
前者はその構文糖という位置づけ。

977 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 17:54:37.68 ID:BH9bYKW90.net]
初心者を救済すべく用意された構文糖が
結果的に初心者を陥れる陰険な罠になっているという皮肉

978 名前:デフォルトの名無しさん mailto:sage [2021/06/20(日) 06:40:26.90 ID:vSgOvpHd0.net]
少なくともCのシンタックスシュガーは熟練者がタイプ数を減らすためのものであって初心者を楽させるものではない気がする

979 名前:デフォルトの名無しさん [2021/06/21(月) 15:18:17.55 ID:os4CEfZ3F.net]
こんなところでCが中途半端に出来るだけが自慢の専門卒みたいな連中に尋ねるよりも
大学の先生かチューターの院生に尋ねた方がいいだろう
進みたい研究室があればそこに行って訊くと



980 名前:良い []
[ここ壊れてます]

981 名前:デフォルトの名無しさん mailto:sage [2021/06/21(月) 20:27:45.83 ID:yU7HyP9W0.net]
院生以下のゴミw

982 名前:デフォルトの名無しさん mailto:sage [2021/06/21(月) 23:06:35.04 ID:jHz8GYW10.net]
// b.c
int b[] = {123, 456};

// a.c
#include <stdio.h>

int a[] = {123, 456};
int main()
{
  extern int *b;
  printf("val b\n");
  printf("%d\n", *(b + 1));

// printf("val a\n");
// printf("%d\n", *(a + 1));

 return 0;
}

こういう分割ソースをコンパイル、リンクして実行すると、何も表示無しで終了する
デバッガー使って実行してみると、SEGVになってる

分割せず、コメント部分のaの表示だけにすると、動く

院生の人、何故かを説明して

983 名前:デフォルトの名無しさん mailto:sage [2021/06/21(月) 23:10:51.91 ID:imPHrgSTa.net]
こういうの、昔 柴田何某のポインタ本で勉強したけど、みんな忘れたな…

984 名前:デフォルトの名無しさん mailto:sage [2021/06/22(火) 02:41:53.17 ID:UBIESj0w0.net]
extern int b[];にすると動いたから配列型とポインタ型の違いっぽい

985 名前:デフォルトの名無しさん mailto:sage [2021/06/22(火) 06:19:00.39 ID:jiZrgPwV0.net]
配列とポインタを混同するなと教えるときの典型的なサンプルだね

986 名前:デフォルトの名無しさん mailto:sage [2021/06/22(火) 22:30:25.89 ID:dO7B5XH7a.net]
外部りんけーじだと、bのメモリに配置されているのが値なのかポインタなのか分からないからかな
この場合、使用側はbに配置されたのがポインタと決めつけてるけど、実態は値だから?

987 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 00:13:40.21 ID:4uPMP2M7M.net]
int b[] = {123, 456};
*b で期待されるのは b=&123;
b[] で期待されるのは b[2]={123,456}
b[]の中身をスタックに積んだ後に*bの場合必要ないからextern更新して無いんじゃね?

988 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 05:17:30.22 ID:m16dmNKT0.net]
現象としてはコンパイル後のアセンブリを見ればいいけど, 一般論としてはODR違反だからどう扱おうがコンパイラの自由だとしか

989 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 06:27:58.72 ID:rIfoeFmJ0.net]
>>980
ここはCスレなのでCで表現してくれ
オレ語じゃわからん



990 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 12:05:27.59 ID:qvRJvNKF0.net]
>>982
アホは無理して答えなくていいぞ

991 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 12:26:06.31 ID:5TaXVwksM.net]
extern int *b; じゃスタックに何も積んだりしないしどう見ても>>980がアホなんですが

992 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 12:32:06.50 ID:OZF9neOD0.net]
>>983
自己紹介乙

993 名前: mailto:sage [2021/06/24(木) 19:56:26.10 ID:i6kIKJxB0.net]
>>980
>&123
お前、何をいっているんだ?
ちゃんと日本語とC言語で記述しろ、馬鹿、死ね

994 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 20:21:39.46 ID:y6Bfeav/M.net]
じゃあ
b&=123;
でお願いしまつ。

995 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 20:45:24.69 ID:alz36GlD0.net]
ビットandしながら代入

996 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 15:41:59.61 ID:rcGmQQfw0.net]
2進で 0111 1011 か
マスクでありそうなパターンだ

997 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 17:37:21.28 ID:+QaNJXlp0.net]
127より4小さい数か

998 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 19:59:22.30 ID:jSzR7q5R0.net]
ビット and ラーン

999 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 23:07:19.68 ID:crztuVLoM.net]
(int)123を.data sectionに置きアドレスを取得する方法。



1000 名前:デフォルトの名無しさん [2021/06/26(土) 02:00:51.59 ID:RjjpcdnV0.net]
int a[] = { 123 };
って初期化すれば a が (int) 123 の入っている先頭アドレスになる。
もちろん *a が作られたわけではないので a に対しては代入できない。
あくまでも a を使おうとすると 123 の入っているアドレスに置き換わるだけ。

1001 名前:デフォルトの名無しさん mailto:sage [2021/06/26(土) 07:06:52.87 ID:MV3qzcHy0.net]
キャストしなくても元々intだろうが

1002 名前:デフォルトの名無しさん [2021/06/26(土) 14:00:05.06 ID:RjjpcdnV0.net]
気分の問題。

1003 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 09:33:23.09 ID:so+vl3vs0.net]
printf("%d", sizeof (char)123); とやろうとしたら
キャストのカッコがsizeofのカッコと解釈されてエラーになるのな
printf("%d", sizeof((char)123)); ならおkなんだけど
なんだか気持ち悪い

1004 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 10:13:18.97 ID:x/UkG1ge0.net]
>>996
sizeofって括弧なしで使えるの? 知らなかった

1005 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 10:20:43.69 ID:WejOUFlX0.net]
>>996
sizeof演算子の優先順位はcast演算子の優先順位より高いので、括弧がないと
まず最初にsizeofと数値リテラルが評価されてその後でその結果をcastで評価するという
おかしな状態になるのでエラーになったのでは?

1006 名前:デフォルトの名無しさん mailto:sage [2021/06/28(月) 10:38:03.51 ID:so+vl3vs0.net]
sizeofとキャストはどちらも単項式なので右から結合するはず
にも関わらずキャストが先に読まれないので気持ち悪いと言ったんだ
字句解析と意味解析ってことかな

1007 名前:デフォルトの名無しさん [2021/06/28(月) 11:05:48.75 ID:HW6dR9O/0.net]
そもそも
sizeof (char)
だけでいいものをそう記述してるのが気持ち悪い。

1008 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 272日 20時間 24分 19秒

1009 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef