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
75 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 07:11:00.69 ID:oLqzRy4la.net] >>72 「副作用」といわれる作用の他に、一般的な意味での主たる作用として値が得られること自体を否定してる人はいないだろ。 ただC言語の規格としては「副作用」と対になる「主作用」という用語や概念は規定されておらず、副作用と言う語と同等に主作用を語るのは気持ち悪いな。 変数の説明のために便宜的に値をいれる箱ですよという言い方がよくされるけど、お前さんの挙げた文献における「主作用」も同様で、副作用に対する主たる作用の説明のために持ち出した一般名詞というだけだろう。
76 名前:デフォルトの名無しさん [2020/10/09(金) 07:13:51.95 ID:NuSz27BH0.net] >>73 なんでそんなに主作用という言葉に拘って批判してるの? 主作用でも作用でもなんでもいい。
77 名前:デフォルトの名無しさん [2020/10/09(金) 07:15:48.04 ID:NuSz27BH0.net] >>74 なんでそんなに主作用という言葉に拘って批判してるの? 主作用でも作用でもなんでもいい。
78 名前:デフォルトの名無しさん [2020/10/09(金) 07:19:20.79 ID:NuSz27BH0.net] >>74 >C言語の規格としては「副作用」と対になる「主作用」という用語や概念は規定されておらず、副作用と言う語と同等に主作用を語るのは気持ち悪いな。 結局、プログラムにおける一般的な概念はここでは触れてはだめだということですか? Cもプログラミングなのに。 誰もがその概念に触れた上で副作用について説明してるのに。Cクイックリファレンス第二版でもそう。
79 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 07:25:51.14 ID:TjErAM+z0.net] 職場でのレビューには使えない用語だね 厳格な言葉遣いが要求されるところではダメ
80 名前:デフォルトの名無しさん [2020/10/09(金) 07:30:12.69 ID:NuSz27BH0.net] >>78 オライリー本ですらアウトということですか? 逆に、主作用という概念に触れずに副作用というものを説明してる本が、今まで見つけられないんだが。
81 名前:デフォルトの名無しさん [2020/10/09(金) 07:32:00.31 ID:NuSz27BH0.net] あと、ワッチョイ変えて自演連投してるやろ 過疎スレに急に人が集まるのはおかしい
82 名前:60 mailto:sage [2020/10/09(金) 07:39:39.09 ID:760t1BpC0.net] 別に主作用が値を返すこととは、思っていないから 式は値を返すけど、文は返さない。 関数も返すとは限らない 自動的に、最後に評価された値を返しても、受け取って使うとは限らない。 あまり、主作用を論じることがない 副作用は、C でも使うけど、主に関数型言語のモナド
83 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 07:41:10.78 ID:TjErAM+z0.net] >>79 そうか、ISO/IEC 9899:2011も見つけられていないんだな pdfビューアで検索かけても「main effect」はヒットしないぞ 「side effect」は笑っちゃうくらい沢山ヒットするけど
84 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 07:43:18.14 ID:4a3ez4RS0.net] >>75 こだわってるのはお前じゃん 必死に調査して
85 名前:デフォルトの名無しさん [2020/10/09(金) 07:47:01.31 ID:NuSz27BH0.net] >>81 たぶん、君は作用とか状態とかが何を指すかを誤解してるのだと思う。 自分も数日前までは知らなかったけど、もう理解した。
86 名前:デフォルトの名無しさん [2020/10/09(金) 07:49:33.79 ID:NuSz27BH0.net] >>82 だから?そんな話はしてない。
87 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 07:49:48.04 ID:4a3ez4RS0.net] >>80 被害妄想で頑張っちゃうタチなんだね
88 名前:デフォルトの名無しさん [2020/10/09(金) 07:51:33.89 ID:NuSz27BH0.net] >>86 図星だったんだね
89 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 07:54:28.94 ID:4a3ez4RS0.net] >>87 ほらもっと頑張りなよwww
90 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 08:00:14.18 ID:oLqzRy4la.net] >>80 そういう病的で思い込みが激しいところが反感を買って、突っ込みが多いんだと思うぞ。
91 名前:デフォルトの名無しさん [2020/10/09(金) 08:00:39.91 ID:NuSz27BH0.net] はいはい
92 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 08:09:12.19 ID:TjErAM+z0.net] >>85 > 主作用という概念に触れずに副作用というものを説明してる本が、今まで見つけられないんだが。 おまえさん、こう言ったろ? ISO/IEC 9899:2011はmain effectという概念に触れずにside effectというものを説明してるぞ おまえさんが見つけられない本を紹介してやったんだよ
93 名前:デフォルトの名無しさん [2020/10/09(金) 08:10:10.53 ID:NuSz27BH0.net] >>91 解説書じゃなく規格書だろうに。一般常識なんてわざわざ説明してるわけない。
94 名前:デフォルトの名無しさん [2020/10/09(金) 08:11:04.89 ID:NuSz27BH0.net] オライリー本(Cクイックリファレンス第二版)でも、主作用という概念に触れて副作用について説明している。 英語のwikipediaでも当然のように主作用という概念に触れた上で、副作用の説明がなされている。 逆に、主作用という概念に触れずに副作用というものを説明してる本が、今まで見つけられない。 ちなみに、規格書は解説書じゃなんだから、一般常識はいちいち書いてなくて当然。 とりあえず、C言語等の解説書で、副作用について解説がなされている本で、主作用という概念について一切触れられてない本があれば挙げてくれ。 そんな本は、図書館に行って調べたけど、一つも無かったから。もしかしたら、ごく一部にあるのかもしれないけど、まずないから。
95 名前:60 mailto:sage [2020/10/09(金) 08:16:29.40 ID:760t1BpC0.net] 副作用は、Elixir みたいな関数型言語で使うだけ。 パイプライン Ruby でも、メソッドチェーンする 副作用が怖いから、皆この手の言語では、 状態を持つな、map, map ばっかり言うw
96 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 08:19:07.63 ID:TjErAM+z0.net] >>92 規格票は公文書だぞ どこぞの馬の骨が勝手にぬかしてることとは違うんだよ Cに於ける副作用の定義はここで定められている限りだ
97 名前:デフォルトの名無しさん [2020/10/09(金) 08:24:25.86 ID:NuSz27BH0.net] >>95 ようするに、社則に「社員は勤務中に呼吸をしなくてはならない」とは書いてないから、「社員は呼吸禁止」ですか? オライリー本その他も当然のように触れている、プログラミングの一般常識には、このスレでは触れてはダメということですか? C言語もプログラミングなのに、プログラミングの一般常識には触れてはだめですか?
98 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 08:54:49.66 ID:Sv65jxff0.net] 少なくとも>69では「触れてはだめ」なんて話はしてないのに、どうしてそんな話になったのか。
99 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 08:57:01.35 ID:1HKZBnpVM.net] >>91 主たる作用を指す言葉がeffectの場合もある 色々な言い方されてるから文脈から判断するといい
100 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 09:09:51.23 ID:1HKZBnpVM.net] 仕様書のside effectは、sideでないものを念頭に置くからsideという main的なものが念頭に置かれているのを否定するやつはアホしかいない それが何かは英wikiのside effectにも書かれてあるじゃないか 次元が低すぎだろ
101 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 09:39:01.71 ID:TjErAM+z0.net] >>96 日本語でおk
102 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 09:41:56.88 ID:TjErAM+z0.net] >>99 wikiに頼るほどの次元の低いやつが人のことをアホとか笑っちゃうな # 俺、wikiのとある記事の筆者なんだがw
103 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 12:48:32.11 ID:J15OmNAdM.net] 副大統領職があるので、正大統領と呼んでも意味は通じるが、普通は言わない。 それだけだ。
104 名前:デフォルトの名無しさん [2020/10/09(金) 17:02:12.86 ID:RcOsUEk40.net] ま JIS規格のは「副」作用なんやから 作用(主作用)前提でこそのワードチョイスやん そこを触れるの嫌がるって無理ありすぎやろ しまいにはwでファビョる始末
105 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 17:37:29.96 ID:TjErAM+z0.net] 嫌がってねえ 必要性を感じねえつってんだよ 演算と副作用 これだけであらゆる説明ができる 主作用なんかいらねえ
106 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 18:56:14.04 ID:Jq2CJneE0.net] 暇なスレだなぁ
107 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 20:19:54.00 ID:O/EjtfR6a.net] char型配列初文字で初期化して printfしたらフフフだ わからん
108 名前:デフォルトの名無しさん [2020/10/09(金) 21:08:22.64 ID:NuSz27BH0.net] 質問があります。 副作用とは何ですか?
109 名前: mailto:sage [2020/10/09(金) 21:59:11.19 ID:GYOgwMU+0.net] 式について 「(式が持つ)値」vs「副作用」 の対立概念だと思っていました、こういうのは lisp がやりはじめたんじゃないでしょうか?
110 名前:デフォルトの名無しさん [2020/10/10(土) 01:05:22.78 ID:AL04749p0.net] 将来AR関連の仕事につきたいんですけど、初めての言語はCってどうなんでしょうか?
111 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 05:02:23.82 ID:BjcbKuib0.net] Java入門・初心者質問スレ Part.10 https://mevius.5ch.net/test/read.cgi/tech/1585721355/686 上に書いたけど、 YouTube で
112 名前:有名な雑食系エンジニア・KENTA は、 AI をやりたいからと言って、Python から始めてはいけないと言ってる。 初心者が進む道を、サーバー側言語のRuby → Go を王道としてる Ruby以外の言語から始めると、挫折確率が高い。 ほとんどの学校も、Ruby on Rails ばっかり Rubyの女神・女優の池澤あやかも言ってる。 大学生がプログラミングを嫌いになるのは、授業でC をやるから C/C++ などのポインタ系言語は、たいてい挫折する。 ほとんどのテスト時間を、ポインタの追跡に使ってしまって、しょーもないから [] [ここ壊れてます]
113 名前:デフォルトの名無しさん [2020/10/10(土) 07:30:36.51 ID:tajpvl710.net] シェルスクリプトが一番実用性が高い。
114 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 08:34:32.00 ID:sA7w+t8zK.net] >>106 char型配列が s[] だとして、 printf()に s[0] とか *s を渡してないか?
115 名前:デフォルトの名無しさん [2020/10/10(土) 16:25:14.09 ID:i5KfYhU+0.net] >>109 ハゲめ
116 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 18:03:01.19 ID:NSofC8xCa.net] >>112 strで渡しました。 すみません""で囲ったら 出力されました。 一文字ずつ' 'の方法は なぜかだめだな
117 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:43:45.13 ID:THhanVwl0.net] char str[] = "unko"; printf("%s", "str"); これで何か出力されたとして それは目的通りなのか?
118 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:20:02.75 ID:yhyq5Xqm0.net] 可変長マクロ、... や __VA_ARGS__ に関連して、カンマが自動削除されたり する使用は、結局、統一した仕様はあるのでしょうか? __VA_OPT(,) を使う流儀と、カンマを自動削除する流儀、 実引数に , を書いた場合と書かなかった場合の違いなど、 色々有って何が標準か分かりません。
119 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:36:11.71 ID:yhyq5Xqm0.net] #define aaa(fmt, ...) g(fmt __VA_OPT__(,) __VA_ARGS__) の場合、 aaa(x)とaaa(x,)でどちらも結果は同じ g(x) になるのでしょうか? そもそも、VC++では、 #define bbb(fmt, ...) g(fmt , __VA_ARGS__) としていても、 bbb(x)とbbb(x,)でどちらも結果は同じ g(x) になるのでしょうか?
120 名前:はちみつ餃子 mailto:sage [2020/10/10(土) 22:10:07.34 ID:i9YWGOdm0.net] >>72 その本を持ってないから前後の文脈はわからんけど、引用部分に関して言えば正しいよ。 「式の評価のときに副作用が起きることもある」というのは正しい。 でも、仮に「式の評価のときに値を得られる他に起きることが副作用である」と言ったら間違いだ。 C では実行環境の状態を変化させることを副作用と定義するのであって、 式評価のときに主作用 (式から値にする操作を仮にそう呼ぶとして) の他に 副作用も起こるというのは定義に付随する性質なわけ。 (C における) 副作用とは何かの「定義」に主作用という概念は絡まないんだ。 式を評価する以外の方法 (主作用が存在しない) で起こる状態変化も副作用ということになる。
121 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:13:28.82 ID:BjcbKuib0.net] 厳密に言えば、++ 演算子を絡めたものは、変数自体を変更してるから副作用 b = a + 1 なら、変数a を変更していないから、副作用はない だから、Go では副作用を警戒して、 ++ 演算子は、単独の文でしか使えない。 組み合わせられない a++
122 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:46:17.77 ID:xY0iDsv30.net] >>117 標準(C17/18までの時点)では可変長引数マクロが第一引数以外の場合は少なくともひとつの引数が無ければシンタックスエラーになる C++20で対応が提案(採択)されていて, 併せてCにも同じ仕様で提案されてる www.open-std.org/jtc1/sc22/wg14/www/docs/n2034.htm 現状で(標準の範囲内で)同じことをするにはかなりトリッキーな方法を使う必要がある https://stackoverflow.com/a/11172679 またはBoost.PreprocessorのBOOST_PP_VA_OPTが上記提案の__VA_OPT__の代替として使える
123 名前:デフォルトの名無しさん [2020/10/11(日) 00:07:40.75 ID:yV/54YAK0.net] >>118 相変わらず、的外れなことを言ってるなあ。 もう相手するのがめんどくさいわ。
124 名前:デフォルトの名無しさん [2020/10/11(日) 00:21:33.30 ID:yV/54YAK0.net] 君はたぶんスレを保守してる人なんだろうけどさあ、 その話はHNをわざわざ使ってる君のプライドを守るためだけの話になってるので、ここで話し合う意味がないんだよね。
125 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:30:42.60 ID:u/XktDCx0.net] 相手するのがめんどくさい、プライドを守るためだけ おまいうwww
126 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:45:20.99 ID:y5Dl22i00.net] ここに書き込んでいる人って、暇ですることが無い人ばかりではなかったか?
127 名前:デフォルトの名無しさん [2020/10/11(日) 00:48:15.50 ID:yV/54YAK0.net] HNをわざわざ使ってる人は必ず、批判されるとHNを使わずに自演するんだよね。 上の書き込みが自演かどうかは知らんけど、自演は必ずする。 大昔にローカルの掲示板をやってたことがあるから、HNを使う人のこの習性はよくよく知ってる。 一人残らずそうやってた。
128 名前:42 mailto:sage [2020/10/11(日) 00:54:48.93 ID:Oo+TUOYr0.net] >>42 一部誤っていたので訂正。 6.5.16 Assignment operators 3 An assignment operator stores a value in the object designated by the left operand. An assignment expression has the value of the left operand after the assignment, but is not an lvalue. The type of an assignment expression is the type the left operand would have after lvalue conversion. The side effect of updating the stored value of the left operand is sequenced after the value computations of the left and right operands. The evaluations of the operands are unsequenced. なので代入式の値は「左辺式(left operand)に右辺式(right operand)の値を代入した後の値を右辺値(rvalueの意味)として評価した値」が正しかった。
129 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:55:54.98 ID:y5Dl22i00.net] HNをNGに登録し、レス書いた奴ごとアボーンすると比較的すっきりする
130 名前:デフォルトの名無しさん [2020/10/11(日) 01:44:57.79 ID:yV/54YAK0.net] >>126 意訳すれば「代入式の値は、左辺へ代入後に取り出してたら処理が無駄に重くなるから、代入直前の値を返すべき。返されるものは、左辺と同じ(値と型が)」 まあ端的に言うと、左辺が返されてると理解しとけばいいね。
131 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 07:57:55.20 ID:Oo+TUOYr0.net] >>128 「左辺へ代入後に取り出してたら処理が無駄に重くなるから、代入直前の値を返すべき」なんて書いてない 脚注に > 111) The implementation is permitted to read the object to determine the value but is not required to, even when the object has volatile-qualified type. とはあるが, どう実装すべきなどとは書いていないのだから, それは意訳ではなくお前の意見だ
132 名前:デフォルトの名無しさん [2020/10/11(日) 08:44:36.55 ID:yV/54YAK0.net] >>129 いやく【意訳】 《名・ス他》原文の語句の一つ一つにこだわらず、全体の意味に重点をおいて訳すこと。その訳。
133 名前:デフォルトの名無しさん [2020/10/11(日) 09:21:01.70 ID:yV/54YAK0.net] あと、そういうなら、君の書いた >代入式の値は「左辺式(left operand)に右辺式(right operand)の値を代入した後の値を右辺値(rvalueの意味)として評価した値」 これだって君の意訳で意見だよね。 言葉は通じるためにある。ネット検索しても、世間一般的にも代入のことは副作用と呼んでるよね。 副作用を検索すれば「代入」という言葉が頻出する。 なので「The side effect of updating the stored value of the left operand」⇒ 代入 となる 次に、「(代入) is sequenced after the value computations of the left and right operands.」を訳すると「代入は両オペランドの値を処理後に行われる」となる。 つまり、「代入は最後に行われる」とは読めないかな? よって、返す値はその前に原則的に決まってるということ。 なので「代入した後の値を」という表現は違和感あるし、ワタスの代入直前の方が正解に近くはないかな? まあ、ワタスは、C言語の超初心者なので、君の挙げてくれた英文を周辺状況と合わせて普通に読んでるだけだけども。 そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。
134 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 09:24:54.54 ID:1n9mnEAt0.net] >>120 ご返答有難うございます。 やはり、色々と複雑なようですね。
135 名前:デフォルトの名無しさん [2020/10/11(日) 12:23:08.94 ID:kZXFoyze0.net] >>125
136 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 15:19:35.65 ID:Ryz1amqZK.net] >>114 >一文字ずつ' 'の方法 その場合は最後に'\0'が必要
137 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 16:59:31.64 ID:Oo+TUOYr0.net] >>131 阿呆かな? >>128 は>>126 の原文中に無く脚注で書かれている内容だしその脚注にも「左辺へ代入後に取り出してたら処理が無駄に重くなるから」などとは書かれていない > 次に、「(代入) is sequenced after the value computations of the left and right operands.」を訳すると「代入は両オペランドの値を処理後に行われる」となる。 > つまり、「代入は最後に行われる」とは読めないかな? 正しい > よって、返す値はその前に原則的に決まってるということ。 妄想 規格ではunspecified (実装の自由度) > そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。 逆だろ, 処理系を指定しないなら規格に従うしかない。
138 名前:デフォルトの名無しさん [2020/10/11(日) 17:27:29.04 ID:yV/54YAK0.net] >>135 全部反論になってなくて、相手の言ってる言葉を都合のいいように解釈してるだけだね。
139 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 17:45:12.56 ID:0ARGcdMRM.net] 反論できないことは全部反論になってないで片付けるタイプ
140 名前:135 mailto:sage [2020/10/11(日) 17:51:10.03 ID:jw/lLa/Ba.net] >>136 出先からで済まんな 妄想で仕様書を改竄する言い訳にはならんから注意しな
141 名前:デフォルトの名無しさん [2020/10/11(日) 17:52:06.99 ID:yV/54YAK0.net] 全然反論になってないし、第一、第一声が「阿呆かな?」と頭に血が昇ってる人の相手しても意味ないじゃん。
142 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 18:39:36.02 ID:u/XktDCx0.net] 意味ないのに書き込んじゃうのはなんでだろうね?
143 名前:デフォルトの名無しさん [2020/10/11(日) 19:03:18.63 ID:yV/54YAK0.net] 結局、原則的には、返す値は代入前に決まってるよね。gccもVC++もそうみたいだし。
144 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 19:54:22.88 ID:vwOca/6s0.net] > > そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。 > 逆だろ, 処理系を指定しないなら規格に従うしかない。 同感
145 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:21:00.36 ID:qb0SAJQcM.net] まぁ過去の恨みで絡むのはやめとこうな 非建設的すぎる
146 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 21:19:40.64 ID:qb0SAJQcM.net] 一般論と規格の噛み合わない話が続いてるな 例えば日本語を表すのは大抵の処理系でshift jisかunicodeだが 一般論としてshift jisかunicodeだというと 規格として規定されてないみたいな お互いの話してる主語が違ってて噛み合わない
147 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 21:45:50.38 ID:/f4IUzXt0.net] >>144 下段の喩えが分かりませぬ。
148 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 17:32:23.08 ID:Fn8G8w4j0.net] ファイルオープンできない visualstudioにてfopen_s err = fopen_s(&fp,"test.txt","r");
149 名前:デフォルトの名無しさん [2020/10/12(月) 17:53:16.57 ID:941JO02hF.net] FILE *fp; なら err = fopen_s(fp,"test.txt","r");
150 名前:デフォルトの名無しさん [2020/10/12(月) 18:26:02.48 ID:YDN8KrDa0.net] ttps://qiita.com/softnakikaiya/items/dec17bd471913e1038a1 >>146 これ?
151 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 20:07:04.33 ID:XcjAzDTUM.net] 初心者にありがちなのは相対パスを理解してなくてファイルが無いから開けないってやつ
152 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 20:19:27.43 ID:UculHi610.net] >>146 それじゃファイル開けないよ 第二引数にファイルパス指定してくださいクソが
153 名前:デフォルトの名無しさん [2020/10/13(火) 19:59:14.31 ID:NHAZjg2T0.net] 初歩的な質問で大変恐縮ですが、 平成6年度基本情報技術者試験のC言語について質問がありまして、 https://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H6b2/g11.html 問2のCですが、答えが2つありませんか? ウでもエでもどちらでも正解の気がします。 コンパイルして両方の回答で試してみましたが、問題なく動きます。 なぜ答えがウになってエではいけないのか、どなたか知恵を貸していただけませんでしょうか?
154 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 20:23:51.05 ID:FgDiRT1ia.net] 146です。パス入力しデバッグしたら なにかわけわからんBOX でてきて思い通りになりません。
155 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 22:42:18.30 ID:ciG+8HNI0.net] グローバル変数として宣言した変数j0とj1がmathcalls.hにもあるようで、コンパイルするとエラーが出ます ヘッダファイルを書き換えずに回避するにはどうすればいいですか? よろしくお願いします
156 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 22:43:11.29 ID:b7C863zx0.net] >>151 エだと、60文字目と61文字目が' 'の行があるときに余分な改行が入る
157 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 01:03:48.89 ID:9cyhkhnyp.net] モバイルC[C/C++コンパイラ]というアプリケーションを使っています do~while()文で1!+2!+…+n!が1000を超える最初のnの値を求める問題です 以下の画像のどこが間違ってるか教えて頂きたいです https://i.imgur.com/WEfqdXB.jpg
158 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 01:22:34.34 ID:6pvowPnvM.net] どうなって欲しくてどうなってしまうかくらい書け
159 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 02:05:50.62 ID:9cyhkhnyp.net] 14と表示されてほしいのですが実行すると以下の画像のようになります https://i.imgur.com/ztqzJy1.jpg
160 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 03:22:45.65 ID:GZXcc9JpM.net] >>151 出題者が想定していた回答から察するに、「正しい答えを選べ」=「最適なものを選べ」という題意なんだろうね。 「エ」の場合、009〜012が必ず実行される。 「ウ」の場合、空白が連続していない場合のみ、009〜012が実行される。 なので「エ」よりも「ウ」の方が、実行時のコードが少なくなる可能性≒処理速度が速い≒より最適化されている。 ということで、「エ」を排しても「ウ」が選ばれるべき理由は説明できるけど、その逆は説明できそうになさげ
161 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 05:08:01.62 ID:GZXcc9JpM.net] >>155 モバイルCのことは、よく知らないのだけど。 11行目を削除するか、↓のようにコメントアウト(行頭に // を追加)してみるとか。 // int fact(int n); >>157 「1!+2!+…+n!が1000を超える最初のnの値」が「14」ということなのかな。 1!+2!+3!+4!+5!+6!=873 1!+2!+3!+4!+5!+6!+7!=5913 ということで(14ではなく)7あたりが正解であるように思える、なんとなくだけどね
162 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 05:26:43.66 ID:z5Uy/Vd30.net] 画像でコードを見せられても、テストできない paiza.IO などに書いて下さい!
163 名前:デフォルトの名無しさん [2020/10/14(水) 06:30:51.16 ID:8SMXEVrO0.net] >>154 >>158 回答ありがとうございます。 よくわかりました!
164 名前:デフォルトの名無しさん [2020/10/14(水) 10:47:06.71 ID:ssGc8zMA0.net] >>151 クソみたいなマルチポスト野郎だな 俺らはこういうゴミに手を貸してたのか 騙された気分だ C言語について質問です。平成6年度基本情報技術者試験のC言語につ... - Yahoo!知恵袋 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12232834992
165 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 11:51:52.20 ID:+mJN3MGTM.net] >>155 https://file3-d.kuku.lu/files/20201014-0239_c7aaeee8e9128bbdf0223997ba9de974.jpeg #include <stdio.h> int fact(int n){ if(n==1)return 1; return n*fact(n-1); } int main(void){ int n=1,a=0; while( (a+=fact(n)) <= 1000 ) n++; printf("%d", n); } 普通に7って出たけど? https://file3-d.kuku.lu/files/20201014-0239_d20849c5db09546cee5a312db4c7b83e.jpeg
166 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:06:19.00 ID:8/BbynCKp.net] >>163 試したら7になりました、ありがとうございます
167 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 01:13:51.72 ID:1WZYXiCK0.net] >>163 インデントがキモい
168 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 08:49:06.08 ID:q8Z69frHa.net] systemのパスが通らない ファイルに入力して コンソールで表示する プログラムだが ファイルと同じパスでエラー 当方初心者
169 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 08:55:48.28 ID:0IrscxF80.net] まずはその日本語をなんとかしろ
170 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 09:22:30.31 ID:wzOsKsv00.net] >>166 パスって何か知ってる限り書いてみな
171 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 10:05:35.78 ID:qYYfNILyM.net] >>165 んな事言われましても一応、HTML系の書き方なんで https://ja.m.wikipedia.org/wiki/字下げスタイル bannerスタイルは、ブロックのヘッダ部だけを字下げレベルで特別に目立たせるスタイルである。 ちょうど、K&Rスタイルでブロックの終わりの中括弧の字下げレベルを戻さないスタイルである。
172 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 10:22:20.38 ID:wzOsKsv00.net] どっちもどっちだ 自分のスタイルと違うだけでキモいとか言い出すやつも 自分のスタイルを気に入らない人に言い訳するやつも 協調性を欠くという点で同じだ プロジェクトに参入するたびに顰蹙かうやつ
173 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 10:32:37.64 ID:qYYfNILyM.net] 追い訳しますけど、質問者が読みやすいように 質問者のスタイルに合わせてあげたという事も忘れないで頂きたい。
174 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 10:49:54.94 ID:2QIfR1k/H.net] 質問者がそのスタイル使ったのは最後の行だけだ 意図して使っているわけではないのに無駄にマイナーなスタイルで答えるな
175 名前:デフォルトの名無しさん [2020/10/20(火) 10:51:18.57 ID:pHiz9StDF.net] >>166 ideone.com pastebin.com
176 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 11:18:11.29 ID:69CHk5Nl0.net] ここでは俺が無法者だ!!
177 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 15:12:59.44 ID:aEz3U6LC0.net] 環境変数PATH なら、; 区切り。 PowerShell で以下を入力してみ $env:Path.split( ";" )
178 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 10:15:31.31 ID:KGhWJPjI0.net] >>172 このスレにコーディング規約がある訳じゃないんだからスタイルは回答者の自由だが
179 名前:デフォルトの名無しさん [2020/10/21(水) 10:45:56.94 ID:CZ2/iovY0.net] わかったわかった お前はキモい、もうそれでいいよ キモいことを自覚してそのスタイルを使い続けてくれ 心理的にダメ、気持ち悪いんだよお前
180 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 11:02:14.79 ID:nW5Wnc+BM.net] おまえツイッターでも文脈見ずにクソリプばっかりしてるだろ
181 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 12:17:24.48 ID:EPxGxCCv0.net] MinGWをインスコしてあれば path | sed "s/[=;]/\n/g"
182 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 16:41:05.37 ID:gYHxZT9P0.net] >>155 エラーメッセージからするとmain()関数内部でfact()関数の宣言を 書いていることが原因らしい。 素朴なCだと、そう書くとまだ名前が宣言されて無いグローバル関数を main()関数内部で使えるようにする意味になるが、現在のC/C++だと それぞれのコンパイラが独自に拡張したりした結果、 「(関数内部における)内部関数」なるものが使えるコンパイラが出てきたため、 意味が違ってしまっていることがある。 今の例の場合、main関数の中で後から定義するfactという名前の関数を先に 宣言する意味だとコンパイラは認識してしまっている可能性が高い。 だから、main関数の中にfact関数の関数定義が書かれて無いのでそのような エラーが出る。 もし、素朴なCのプロトタイプ宣言にしたい場合、 main()関数の外側に書くのが普通だが、なんらかの事情でmain()関数の内側に 書きたい場合には、 int main(void){ extern int fact(int n); ・・・ } のようにexternキーワードを書くと通ることがあるかも知れない。
183 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 16:52:54.92 ID:EPxGxCCv0.net] 関数のブロック内に関数原型があるのは完全に合法 実用上まず使わないけどね
184 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 17:02:00.07 ID:gYHxZT9P0.net] >>181 もとは合法だったが、それぞれのコンパイラが独自拡張をした結果、 意味が変わってしまってる場合がある。
185 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 17:14:09.48 ID:EPxGxCCv0.net] 日本語でおk
186 名前:蟻人間 mailto:sage [2020/10/21(水) 17:17:08.30 ID:vNonm69Zd.net] >>182 さん、思い込みが激しすぎて証拠がないのに持論を主張する。
187 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 17:58:35.70 ID:gYHxZT9P0.net] gccなんかは関数の中に内部関数を作れる。 だから、関数内でプロトタイプ宣言を書くと元定義の pure Cとは 異なった意味になる可能性が高い。
188 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 18:02:50.56 ID:gYHxZT9P0.net] >>184 現にその宣言が無ければコンパイルが通り、有ればエラーになっている。 それが一つの根拠。 実験してみたわけじゃないがそれらが本当におきているとすれば 入れ子関数(内部関数)の独自拡張が原因だと洞察できる。
189 名前:蟻人間 mailto:sage [2020/10/21(水) 18:05:50.18 ID:vNonm69Zd.net] >>186 再現可能な最小コードを用意して下さい。
190 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 18:11:05.50 ID:gYHxZT9P0.net] 他の人の実験結果から推定しているだけだから、事実かどうかは分からんよ。
191 名前:蟻人間 mailto:sage [2020/10/21(水) 18:23:13.18 ID:vNonm69Zd.net] モバイルCっつー奴にバグ報告せよ。
192 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 18:35:10.36 ID:gYHxZT9P0.net] PythonやLuaもサポートしているが、Clang, LLVMという言葉があった。 使ってるコンパイラはClangなのかな?
193 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 20:31:51.31 ID:z1b04ciPa.net] 簡単な質問申し訳ないです。 漢字を文字コードにて受け putcで標準出力できるかな?
194 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 20:57:42.76 ID:GehgBoqYM.net] もちろんできるけど、 入力される文字コードの種類と出力する文字の符号化方式は何にしたいか分かってるの?
195 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 21:05:35.53 ID:Cabs0W0/M.net] 文字が文字コードで扱われるのは普通の事だ 画像とかではないなら
196 名前:デフォルトの名無しさん [2020/10/21(水) 22:53:14.42 ID:sHBY55kz0.net] putw putwc
197 名前:蟻人間 mailto:sage [2020/10/21(水) 23:01:37.11 ID:T/uvMZ2i0.net] 全角文字はマルチバイト文字かUnicode文字。
198 名前:デフォルトの名無しさん [2020/10/22(木) 04:18:40.19 ID:OxqRNNZs0.net] フリーランス向け報酬即日払いサービス『先払い』が、オンライン資金調達プラットフォーム『資金調達freee』β版に掲載開始 https://prtimes.jp/main/html/rd/p/000000037.000047439.html フリーランスやパラレルワーカー同士のマッチングプラットフォーム「conema」が、 案件依頼・仲間募集を中心とした掲示板機能(β版)をリリース! https://prtimes.jp/main/html/rd/p/000000004.000059389.html フリーランス薬剤師専門エージェントサービス「きょうりょく薬剤師」、リリース開始。薬剤師の新しい働き方を提唱。 https://prtimes.jp/main/html/rd/p/000000002.000058526.html 中卒、新聞配達員から月収4億の不動産王へ。姫路の不動産王の投資哲学 https://hbol.jp/184178 【アプリ開発で起業】必要な心得とマネタイズ方法のすべて https://www.dreamgate.gr.jp/contents/column/application-development 副業を認める企業に対して「より魅力的に感じる」人は6割以上。 一方、副業を認めない企業に対する魅力度は6割超が「低下した」と回答 https://prtimes.jp/main/html/rd/p/000000016.000040832.html みんなが知らない「サラリーマンの生存戦略」副業年収1億円!motoさん伝授 https://diamond.jp/articles/-/247070
199 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 23:58:39.57 ID:3PXn8xmW0.net] なぜ int* a = 0; *(PBYTE*)&a += 5; は動作するのに int* a = 0; (PBYTE)a += 5; はエラーになるのですか?
200 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:02:11.04 ID:TZHfVi9W0.net] >>197 (PBYTE)a += 5; どこに5を加算していると思う?
201 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:12:03.26 ID:5nJTYzvV0.net] >>198 キャストしているとはいえ、ポインタaに加算していると思うのですが、、 ポインタはアドレス0を指しているので、加算することによってアドレス5を参照したいのですが なぜかエラーが出てしまうのかわかりません..
202 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:42:02.50 ID:LNYSWk6n0.net] それだけじゃ参照してないしエラーなんてならなそうだけど いつどんなエラーになるの? 参照した時?なら、5番地を読んでいい環境なの? windowsやlinux等高級なOS上なら、絶対番地を勝手に読んじゃダメだよ
203 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:46:43.39 ID:TZHfVi9W0.net] (PBYTE)a は 変数ではなく、値になる
204 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:51:22.10 ID:5nJTYzvV0.net] >>200 コンパイルエラーになるんです。 エラー内容は"式は変更可能な左辺値である必要があります"です。 このコードはここに投稿するためのテストのために書いたコードなので、 参照関係の問題は理解しています。 *(PBYTE*)&a += 5; と (PBYTE)a += 5; はやってることは同じと思うのですが、なぜエラーになるのかなと。 そういうものとして理解するしかないのでしょうかね
205 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 00:57:14.44 ID:TZHfVi9W0.net] *(PBYTE*)&a = 変数aの現在の値を&で取り出し、 それをポインタ値として扱い、 そのポインタ値が指し示すところに代入する ということじゃないかな
206 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 01:18:53.38 ID:TWzqhGL8M.net] (PBYTE)a みたいにキャストすると、値の解釈の変更ということになり、 代入先(左辺値)にはできなくなる。 int i; (float)i = 1.1; って意味あると思う?
207 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 01:33:16.78 ID:5nJTYzvV0.net] あ〜〜 なるほど floatなどの小数点以下を扱う型は以下のようにdが1になる特別な仕様があるから そのためにエラーになるようになってるんですかね。 float c = 1.5f; int d = (int)c; int e = *(int*)&c; この場合、dは1になるけど、eは1069547520になるから、 エラーになる現象はこれと近いのかな この解釈であってるのだろうか
208 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 01:35:55.99 ID:TWzqhGL8M.net] それそれ。 それ追記しようとしてた。
209 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 01:54:40.07 ID:5nJTYzvV0.net] とはいえ int i; (float)i = 1.1; これはiを一時的にfloatにキャストしてるだけだから、エラーにせずにiは1として動作させるとこはできなかったんだろうか
210 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 02:21:39.27 ID:COZe3KfC0.net] >>202 「なぜエラーになるのか」はエラーメッセージに出てる。 理解を深めたいなら、エラーメッセージのどこがわからないのか(どこまでわかってるのか)を言ってもらわないと。
211 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 02:57:11.72 ID:5nJTYzvV0.net] >>208 そもそもなぜコンパイラがこれをエラーと捉えるのかというのがわからないと言う意味で言っておりました。
212 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 03:00:35.23 ID:COZe3KfC0.net] >>209 kikakurui.com/x3/X3010-2003-01.html#71 > 制約 代入演算子の左オペランドは,変更可能な左辺値でなければならない。
213 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 03:18:58.54 ID:COZe3KfC0.net] >>207 ルールがこうなってる理由がわからないという話なら、それは (float)i = 1.1 が i = 1 と同じになるようにルールを複雑化させてもそれに見合うほどうれしくないから、ね。
214 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 03:28:10.91 ID:UGl+6vH40.net] >>202 キャストの結果は常に右辺値 右辺値を代入してるから右辺値には代入出来ないというエラーが出る ポインタのデリファレンスの結果は左辺値なので代入も問題ない あとエスパーするにPBYTEってuint8_t (unsigned char)なんだろうけど(それ以外の場合はデリファレンスの結果が未定義), > *(PBYTE*)&a += 5; はint型の先頭バイトを書き換えたいという意図で, > (PBYTE)a += 5; こっちはメモリのどの位置を書き換えたいのか自明じゃないからやってること自体全く異なる
215 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 08:17:29.39 ID:B8Qi0Gue0.net] キャスト式の結果は左辺値ではない 間接演算式の結果は左辺値となる これだけのことだろ
216 名前:はちみつ餃子 mailto:sage [2020/10/25(日) 09:56:54.64 ID:63196X630.net] gcc3 の頃までは cast-as-lvalue が有ったけど 4 になるときに廃止された。 古いコードでこの機能をあてにしているものはあるかもね。
217 名前:デフォルトの名無しさん [2020/10/25(日) 13:18:04.05 ID:FzqccguI0.net] >>197 (PBYTE)*a += 5;
218 名前:デフォルトの名無しさん [2020/10/25(日) 13:19:58.42 ID:FzqccguI0.net] >>202 答えだけ言うとやってることが同じではない
219 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 16:44:12.86 ID:5nJTYzvV0.net] >>215 (PBYTE)*a += 5; これはaのポインタが指す値に5を加算しているのではないでしょうか? なので *(PBYTE*)&a += 5; と同じではないと思うのですが
220 名前:デフォルトの名無しさん [2020/10/25(日) 16:58:46.13 ID:FzqccguI0.net] (PBYTE *) って (BYTE **) のことか それなら同じじゃないな っていうか「左辺値が変更出来ない型になってる」 これでこの話は終わり
221 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 17:29:39.65 ID:0u/0rMBT0.net] それなら「左辺値」ではなく「左辺」だろう
222 名前:はちみつ餃子 mailto:sage [2020/10/25(日) 18:23:36.88 ID:63196X630.net] >>217 型とは独立して (一部関係もあるが) lvalue (左辺値) と rvalue (右辺値) という概念があるってのは理解できてる? たとえば int x=5; x = 2; と書いたら OK だけど 5 = 2; と書いたらもちろん NG だというのはわかるよね。 変数は評価したら値が出てくるけどそれとは別に場所としての性質も持ってる。 場所と値としての性質を併せ持っているのが lvalue なんだ。 で、キャスト演算子を適用するというのは取り出した値に対して型変換することになるので、 型変換した結果は場所としての性質が失われてしまう。 つまり lvalue ではなく rvalue になってしまってこれは代入先としては有効ではない。 ---- 余談 ---- 実際には代入先は lvalue の中でも特に modifiable lvalue (変更可能な左辺値) である必要があって そのあたりの詳細は 6.3.2.1 あたりに記述がある。 kikakurui.com/x3/X3010-2003-01.html#page38-div
223 名前:デフォルトの名無しさん [2020/10/26(月) 03:47:15.23 ID:zDyo5E1K0.net] >>191 出力する端末が漢字を出すような端末で、尚且つその端末で漢字とされるコードを引き渡すのであれば出る。 しかしメジャーな文字コード体系で1バイトだけで漢字を表すようなものはなく、そういった端末も(おそらく自作しない限りは)ないだろうから putc() 1回だけで漢字が出ることはまずないと思う。
224 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 07:27:20.32 ID:ddH/1NYY0.net] >>217 間接演算子は単項なので、代入演算子よりも先に結合する よって意味的にはこうなっている ((PBYTE)(*a)) += 5;
225 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 09:07:00.12 ID:ePNtOm9AM.net] >>215 >>222 恥ずかしいから出てくるな
226 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 09:39:14.29 ID:ddH/1NYY0.net] >>223 ん? 俺は、おまえさんに恥をかかせたのか? そういう意図はなかったが
227 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 10:11:22.50 ID:ePNtOm9AM.net] >>224 最初の質問が *(PBYTE*)&a += 5; (PBYTE)a += 5; の違いなのに、 (PBYTE)*a += 5; を解説するというトンチンカンで質問者を困らす回答見せられたら、 質問者に申し訳ないし同じ回答者としてこっちが恥ずかしくなるわ
228 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 11:15:20.28 ID:ddH/1NYY0.net] 俺は別に回答なんかしてねえよ > ポインタが指す値に5を加算 これは間違いだよと指摘しただけだ 俺と217の対話に横レスしてきて勝手に恥ずかしいとか言ってる恥ずかしいやつに用はない
229 名前:デフォルトの名無しさん [2020/10/26(月) 15:09:18.69 ID:EltRWJ/HF.net] int a = 123; int *p = &a; unsigned c = (unsigned long)p; みたいにすると怒られるので unsigned c = *(unsigned long *)&p; みたいに参照すると ok だったりするけど 本来は参照するだけだったコードが いつの間にか事情を知らない人によって *(unsigned long *)&p += 5; にすり替わったんじゃないかと最近思うようになった
230 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 15:20:36.35 ID:lJWYL04O0.net] ポインタ(アドレス)の距離を求めるのに ポインタ値を整数化することはあるかもしれないしエラーにはならんね unsigned long c1 = (unsigned long)p1; unsigned long c2 = (unsigned long)p2; c1 - c2 のような (p1 - p2 はあくまで要素数だしね)
231 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 15:49:43.24 ID:qF0DukLxF.net] #include <iostream> using namespace std; class A{public: int a; A(int b):a(b){}}; int main() { A a(123), b(456); A *p = &a, *q = &b; unsigned long r = (unsigned long)p, s = (unsigned long)q; cout << s - r << endl; cout << (unsigned long)q - (unsigned long)p << endl; cout << (unsigned long)&b - (unsigned long)&a << endl; cout << (unsigned long)&q - (unsigned long)&p << endl; return 0; } 特に問題無いか
232 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:55:35.80 ID:pV+9Vnjg0.net] >>227 の p を unsigned として抜き出すのに なんでわざわざ変数のポインタを取り直してるんだ? int *p; unsigned c = *(unsigned *)p; で十分なのに
233 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:56:38.86 ID:pV+9Vnjg0.net] × p を ○ p の指し先を
234 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 21:41:34.62 ID:P78swXdWM.net] *pじゃなくてpを取り出してるからだろ
235 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 21:55:26.21 ID:ZLlt5QiZ0.net] pの指し先をunsignedとして抜き出しているわけではないよ p(ポインタ)自体をunsignedに無理やり変換している
236 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 21:58:46.96 ID:rHcuqZcg0.net] >>227 OKではない。 intとunsigned longは互換性のある型ではないし, アラインメントが異なる場合もあるから一般に未定義動作。 >>228-229 間違ってないけどそのための型としてintptr_tやuintptr_tがあるからそっち使ってくれると可読性がよくてすき
237 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:01:39.15 ID:pV+9Vnjg0.net] ん? ポインタの整数値化 intptr_t な意図なの? intptr_t c = *(intptr_t *)&p; がなおさら混乱するな
238 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:08:25.93 ID:rHcuqZcg0.net] >>235 long a = 10; uintptr_t addr_a = (uintptr)&a;
239 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:09:01.82 ID:rHcuqZcg0.net] uintptr_t addr_a = (uintptr_t)&a; _tが抜けた
240 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:12:25.39 ID:pV+9Vnjg0.net] >>237 それはわかる >>227 のコードが何を意図してそう書いたのかがワカランのよね
241 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 12:22:27.85 ID:telUcSp60.net] 警告出るね codepad.org/wCwz9aAV
242 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 08:19:02.64 ID:HwPze+NQ0.net] どーせ、プロセッサのプロテクトモードとかで、純粋にポインタの計算すると意図しないオーバーフローやアンダーフローするからじゃね?
243 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 06:41:32.43 ID:TJdrJp6g0.net] ポインタは符号付きなわけか
244 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 11:29:01.04 ID:zMpN0fYG0.net] ファミコンってC言語でもプログラミングできるんだねえ すごいねえ
245 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 15:37:28.16 ID:vm8bz31qM.net] そんなのコンパイラ次第じゃないのか? 知らんけど
246 名前:デフォルトの名無しさん [2020/11/08(日) 15:22:32.44 ID:iVjroALJ0.net] >>242 ファミコンのCPUは2A03(6502互換)だからかなり苦しい感じだと思うけどな。 スタックポインタが8bitしかないしな。つまりスタックは256バイト固定。もちろんメモリは最大64KB。 それでもCコンパイラはあったようなのでかなり工夫したんだろうと思う。
247 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 16:57:10.35 ID:qvYN+WNM0.net] 今も昔もゲーム機の開発なんかはクロス環境だろ ターゲット上で直接コンパイラ走らせているとは思えないのだが
248 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 17:19:43.81 ID:fW7gwItS0.net] 任天堂から高価な開発機を借りるか買うかしてやるんじゃなかった?
249 名前:はちみつ餃子 mailto:sage [2020/11/08(日) 17:30:03.29 ID:jznHieWa0.net] >>245 いやいや、ランタイムの保証が小さければ工夫がいることにはかわらんやろ。
250 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 06:33:25.75 ID:ntGr9Bxw0.net] 「Cが使える」=「Cコンパイラを実行できる」と思ってしまうやつって BASIC出身なんだろうな
251 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 07:43:11.08 ID:RNMdHR5xd.net] そりゃコンパイル後のバイナリは言語とは関係ないから「ある言語が使える」はそのプラットフォーム上でコンパイラなりインタプリタが動くことを意味するやろ
252 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 08:25:46.31 ID:ntGr9Bxw0.net] ドヤるようなことかよw
253 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 09:08:37.31 ID:xqW72pM4M.net] >>244 とか>>249 みたいな人もいるんだな
254 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 11:06:53.99 ID:msclAy3m0.net] FCの開発機は1千万円でメガドラ、PCエンジンは250万円という記事を昔みかけた。 そういやぁバッ活に「子育てごっこ」とかいうFC開発キットの広告出てたっけ。
255 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 11:56:33.56 ID:ntGr9Bxw0.net] あの頃のカスタムLSIは衝撃だったね
256 名前:137 mailto:sage [2020/11/09(月) 11:56:53.61 ID:SWW65sXCM.net] >>248 FORTHユーザーじゃない?
257 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 12:11:03.31 ID:ntGr9Bxw0.net] ( ゚∀゚) アハハハハノヽノヽノ \ / \ / \
258 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 13:23:50.49 ID:YVG+/FyZ0.net] もう諦めた パンツはく
259 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 12:27:52.99 ID:uyiuIcZiM.net] goto 使うなと保健所や医者がうるさいの何なの。
260 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 12:47:00.05 ID:6BGA2vQ70.net] 多重に囲い込まれているところからの脱出すら許さない教条主義 例外を認めるとあれもこれも際限がなくなるのでお役所作業
261 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 13:29:41.79 ID:x2VHR/K20.net] 仕事丸投げで解決
262 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 14:08:28.42 ID:5HXc1MIP0.net] クリプトン星人に投げたくせに クリプトン星人がgoto使うとゴチャゴチャぬかす 勝手な奴ら
263 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 20:49:27.65 ID:0Q6l6RCm0.net] gotoは有害であるとみなされると、昔の偉い人が言いました。
264 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 14:04:47.82 ID:eZvyHs9U0.net] gotoキャンペーン中止の可能性
265 名前: mailto:sage [2020/11/14(土) 14:17:05.27 ID:GkBooaQrH.net] go to キャンペーンってそもそも名前が悪すぎるよね
266 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 15:29:53.89 ID:QvOqIpVLM.net] basic風にgosubキャンペーンではどうだろう。
267 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 15:46:33.79 ID:kNYsw/sP0.net] gotoトラブル
268 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 16:57:36.06 ID:t12i3dhb0.net] Go To LOVEる
269 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 17:20:09.80 ID:XuOfn3YC0.net] ここはアニメ板ですね
270 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 18:05:11.28 ID:b41n/hcI0.net] プログラマの大凡半数はオタクだからな(´・ω・`)
271 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 18:16:19.79 ID:3sCpnJ2t0.net] しかし例外トラベルはなんかいやだ。
272 名前: mailto:sage [2020/11/14(土) 18:33:34.30 ID:ovQs8svhH.net] >>267 アニメならば、2020 年地上波アニメで一番よかったのは a.i.c.o incarnation だったと私は考えています
273 名前:デフォルトの名無しさん [2020/11/14(土) 22:05:45.83 ID:XJ24TZhC0.net] そうか? TRUEは歌がうまいし 白石晴香の声も好きだけど 設定が科学的なフリしてる割に中途半端だし ツッコミどころ多くてなんだかなと思いながら観てた
274 名前:デフォルトの名無しさん [2020/11/15(日) 16:01:45.41 ID:ZF6xjL9s0.net] webサイトぐらいしか作った事無いド素人なのですが cheatengineのようなツールはどうやって作るのですか?
275 名前:デフォルトの名無しさん [2020/11/15(日) 16:31:52.95 ID:U+/Dwi3J0.net] マルチしちゃったね
276 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 16:46:32.42 ID:BV2MAPDR0.net] 許すw
277 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 02:01:14.39 ID:7/2eOuWRa.net] int suti[]={1,2,3};ってやったらsuti[3]は存在しないんだよね?for文で存在しなくなるまで〜ってやりたいんだけどどうすればいい?要素数が変わってもいいようにしたいからi != 3はやりたくないんだよね
278 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 02:06:30.67 ID:7/2eOuWRa.net] >>275 自レス 出来れば要素数を取得するっていう方法も避けたい!
279 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 02:16:10.62 ID:D7KcGGQQ0.net] 条件式をi<3;ってするのが定番かな。
280 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 02:16:23.70 ID:xY74VPsT0.net] 配列名ってメモリー上に付けられたラベルみたいなものだから、 添え字の範囲が想定を逸脱しててもアクセス出来るからな エラーになるかは別にして
281 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 02:17:27.84 ID:xY74VPsT0.net] わりと真面目にやりたいなら、 #define Numof(n) (sizeof(n) / sizeof(n[0])) for (i = 0; i < Numof(suti); i++)
282 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 08:19:22.94 ID:xva9VBXaa.net] >>276 どういう理由で要素数の取得を回避したいのだろう? 実現可能なら標準関数も採用してると思う あるのは終端記号でうちきり式
283 名前:デフォルトの名無しさん [2020/11/18(水) 11:15:05.78 ID:2WQ1ruJZ0.net] 宗教的理由でsizeofを使いたくないなら あとはセンチネルの-1を置くくらいしかない int suti[]={1,2,3,-1}; ……何がコイツの教義のお眼鏡に適うかどうか分からんからこれも否定されるかも知れんな 「存在」に関する用語の用法なら、やっぱり宗教的事案で、 「存在しているかどうかをチェックしたい」となるから宗教的思考が背後に控えていると思われる 配列の個数じゃなくて配列の存在だ 存在してるかどうかに強く拘ってんならやっぱり宗教事案なんだろう だから理由なんて無いな 宗教的な事由で「要素数はイヤ」なんだろう
284 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 11:49:11.86 ID:kf1ewZiT0.net] BASIC時代の 文字数+文字データ 構造思い出した。
285 名前:はちみつ餃子 mailto:sage [2020/11/18(水) 12:01:00.59 ID:0x2GmUxc0.net] >>275-276 こういうトリックが使えなくもない #include <stdio.h> int main(void) { int suti[]={1,2,3}; for(int *p=suti; p< *(&suti+1); ++p) printf("%d \n", *p); return 0; }
286 名前:デフォルトの名無しさん [2020/11/18(水) 12:09:28.92 ID:2WQ1ruJZ0.net] 【更新あり】PC-9801のプログラム(ソースコード無し)をリバースエンジニアリングしてくれ!→変態技術の塊なことが判明しました - Togetter ttps://togetter.com/li/1185437 これによるとBASICはかなり先見性があるらしいが
287 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 12:59:08.65 ID:8knHjFQ7M.net] >>281 それ、センチネルやのうて、ただの終端マークや
288 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 15:03:37.53 ID:kf1ewZiT0.net] BASIC自体が使い物にならないとは思わないけど、 命令セットが貧弱すぎてマシン語と組み合わせないと高度なことができなかった。
289 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 16:20:02.97 ID:2ppIm+8A0.net] 言語自体で作れる機能がないのはCだってそうだ BASICでそれをやると遅いからマシン語の出番があったってこと USRやEXECじゃなく新コマンドを作ろうとすると結局BASICインタプリタのサブルーチンをJSRしまくることになる
290 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 17:09:25.17 ID:xY74VPsT0.net] BASICにはCALLと言う無敵の・・・いやなんでもない
291 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 20:16:59.09 ID:2DtKbiiK0.net] >>275 c++みたいな範囲for文ってCの構文に入らんのかの? int suti[]={1,2,3}; for(int x: suti) do_some(x); みたいなやつ。使いどころが極めて限定されるから意味ないかのう。 あとは変態マクロをコネコネするしか思いつかん。
292 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 20:22:04.53 ID:2ppIm+8A0.net] 原理主義的な美意識ならC++いくしかねえだろ Cは実を取るポリシーだかんあ
293 名前:はちみつ餃子 mailto:sage [2020/11/18(水) 23:10:46.92 ID:0x2GmUxc0.net] >>282 C/C++ の世界でも BSTR というものがあってな……。
294 名前:デフォルトの名無しさん mailto:sage [2020/11/19(木) 01:25:26.46 ID:k2ADczLrH.net] MacにもPSTRというのがあったなあ。パスカル由来だっけ。 確か紅蓮華の人のような名前のコンピュータが...
295 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 22:01:17.13 ID:9aSCyeCwa.net] if (a()) {} else if (b()) {} のとき呼ばれる関数の順は必ずa(), b()の順ですよね? if (a()) {} else {if (b()) {}} 文法的には↑こういうわけだから間違いないですよね?
296 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 22:52:02.39 ID:O1GHu8Kp0.net] >293 a()の返り値が0以外(True)ならb()は実行されないんじゃないの?
297 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 00:18:54.48 ID:JYMaFV+Pa.net] そうじゃないと aで nullチェックからの bみたいのできなくなりそう
298 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 00:25:40.58 ID:stGCUtDe0.net] NULLの時はそのまま後続処理続けるんでしょうか
299 名前:デフォルトの名無しさん [2020/11/24(火) 00:29:07.26 ID:JYMaFV+Pa.net] nullのときは b を通過しないようにするかと 質問の趣旨とちょっと違ったかもしれませんね ゴメンなさい
300 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 00:30:13.18 ID:JYMaFV+Pa.net] ダメレスの上書きだな… 重ね重ね申し訳ない
301 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 00:35:37.30 ID:PK3X1vMU0.net] >if (a()) {} else if (b()) {} 書き直して if ( a()!=0 ) { 処理1 } else if ( b(0)!=0 ) { 処理2 } a()の返り値がTrue(0以外)ならば 処理1 を実行して次の行へ a()の返り値がFalse(0)ならば b() を呼び出して、b(0)の返り値が True(0以外)ならば 処理2 を実行。
302 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 09:15:59.48 ID:ZWk4Vaeta.net] if (stateA) else if (stateB) {} はまだ直感的だけど if (a() && b()) { ... } で a() が偽の時 b() は実行されない if (a() || b()) { ... } で a() が真の時 b() は実行されない のはC言語ならではルールなので注意
303 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 09:34:54.23 ID:HgpldYdAM.net] >>300 今時のたいがいの言語で同じルールだ。
304 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 11:48:49.75 ID:8CcwCAVK0.net] デバッガーでトレースするとか printf()出力で確認するとかしないのかな? 8bit CPUのアセンブラ時代なんてバグでハングして(ry
305 名前:135 mailto:sage [2020/11/24(火) 12:19:31.97 ID:TYQ0nicua.net] 実装がそうなっているだけか規格で保証されているかは全く別問題だから, 「やってみたらそうなった」に加えて規格を確認するのは重要
306 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 12:22:00.11 ID:vTVthpTQd.net] >>301 そう思ってると痛い目にあう
307 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 13:36:23.71 ID:CAtJf7/qH.net] >>304 だから、たいがいっつってるだろ phpとかのろくにcsを学ばずに作った一部のアホ言語まで面倒見きれん ともかくC言語ならではなどではない
308 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 13:53:18.36 ID:g7Dt5dEuM.net] 要するに短絡評価と非短絡評価 https://ja.wikipedia.org/wiki/%E7%9F%AD%E7%B5%A1%E8%A9%95%E4%BE%A1
309 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 17:29:31.98 ID:stGCUtDe0.net] そこまで掘り下げなくても、単に if else 使う時の順序と関数呼出の有無
310 名前:293 mailto:sage [2020/11/24(火) 17:57:03.44 ID:ufG8nYHfa.net] みなさん色々ありがとうございます >>294 この場合はもちろん、a()が0を返した場合のことについてです >>295 そうですよね そうじゃないと色々困りすぎますよね 冷静になってみればアホな質問でしたすみませんでした
311 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 17:50:07.30 ID:h9isg/D4d.net] >>305 C言語スレで今時の言語を語る C言語時代の言語はたいがいの言語でCとは違うルール
312 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 17:58:01.33 ID:rJINVE9t0.net] if else 辺りは、そんなに違いは無いと思うが
313 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 19:36:32.00 ID:DcZYUINF0.net] if else 辺りは、PascalとCの違いが分かるところの一つなのな
314 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 21:51:34.65 ID:vhvyuere0.net] > C言語時代の言語はたいがいの言語でCとは違うルール 日本語でおk
315 名前:デフォルトの名無しさん [2020/11/26(木) 01:30:04.21 ID:R1TSJRT3M.net] 入れ子になって構文解析に保証回数の記述が必要なC たぶん大抵は数珠繋ぎになって解析器はお気楽ご気楽シゴトなelseif装備言語
316 名前:デフォルトの名無しさん mailto:sage [2020/11/26(木) 08:07:50.73 ID:EOjdKX+aM.net] 1passでコードが吐けるんじゃない限り どこかに構文木を蓄積する必要があるんだから 何らかの上限は必ず存在する。
317 名前:デフォルトの名無しさん [2020/12/09(水) 14:46:15.05 ID:lKZrYGPu0.net] ある構造体があるメンバーを持ってるか持ってないかで場合わけってできるの?
318 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 15:20:51.88 ID:dBVX1XEl0.net] C言語の話で良いのか? マクロレベルならできるだろうが 実行時は無理だろうな
319 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 16:23:12.63 ID:W1Z3cSFoM.net] >>315 C++のtemplateなら……
320 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 23:18:41.68 ID:X6ku5mk00.net] テンプレートを使わないマクロで実現する方法思いつかなかったから調べてみたけど, BOOST_DECLARE_HAS_MEMBERもSFINAEで実装されてた 標準Cの規格の範囲でポータブルな実装は無理そうに思えてきた
321 名前:デフォルトの名無しさん [2020/12/10(木) 08:18:36.14 ID:yWf2E74j0.net] C言語にテンプレート機能だけつける方法ないの?
322 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 08:33:48.40 ID:1ebLrqpT0.net] #include <tgmath.h>みたいの?
323 名前:はちみつ餃子 mailto:sage [2020/12/10(木) 11:36:21.24 ID:p57PMoZs0.net] >>320 学術的な分類はよく知らないけどそれはアドホック多相に分類されるものじゃないの? テンプレートはパラメトリック多相的なものなので多相を実現するものという意味では近いけど、 使い勝手としてはそんなに近くない。 >>319 「だけ」っていっても C++ のテンプレートは C++ の型システムやなんやかんやと一体のものなので、 テンプレートだけ抜き出して C に入れるみたいなことは出来ないでしょ。 C 独自のテンプレートみたいなのを考えるくらいなら C++ を使えやって話になるだろうし。 >>315 マクロ展開は文法の解釈に先立って実行されるので、 マクロ展開時にプログラムの内容を見て分岐することは出来ない。 構造体を元にして真偽値を生成するような「展開形」を思いつけば実行時に分岐することは 出来るのかもしれないけど思いつかないなぁ。
324 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 13:40:39.75 ID:Rt1ylxrY0.net] 開発環境の都合で Cしかないので困ってるとすれば C++ 食って C 吐き出す中間のコンパイラがあればいい ってことに
325 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 15:08:30.04 ID:cFFVV66u0.net] >>315 構造体に手を入れられるなら、ユニークなIDを割り当てて そのID見て、処理を切り替えて行く
326 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 20:09:21.68 ID:CcbWokCZ0.net] >>317 あれ、C++も結局メンバーがなければコンパイル時に死亡するだけじゃ? ランタイムでどうこうするわけにはいかないんじゃ...
327 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 21:28:27.30 ID:hyB2wVsLM.net] >>324 sfinaeがあるので死ぬ代わりにfalseを返す関数みたいなのが作れる ランタイムでどうこうしたければtype_info -> boolな関数を作ればいいが、型を追加するたびに変更が入ることになってtemplateほどの便利さはない
328 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 04:23:01.20 ID:p1x0IGcK0.net] C++をベターCとして使う、でいいんでねい?
329 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 11:11:25.01 ID:NpU6prgS0.net] >>324 (たぶん公式な用語ではないけど) ハードエラーとソフトエラーという区分がある。 テンプレートの展開に失敗してコンパイルの失敗になってしまうハードエラーと、 テンプレートの次の候補を試すソフトエラー。 で、そのソフトエラーを上手いこと利用して分岐するのが SFINAE ってわけ。 C++20 からはコンセプトが入ったのでそれもかなり楽に出来るようになった。
330 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 13:56:53.94 ID:VMKMxeJn0.net] ここはC言語スレではなくC++勧誘スレになったのか
331 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 14:34:30.55 ID:NpU6prgS0.net] 無理やりでも C で出来るならいいんだけど、出来ないんだもの……。 しゃーない。
332 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 14:45:28.79 ID:VMKMxeJn0.net] 〜ならこうやれるって 一種の荒らしだからね
333 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 16:54:58.94 ID:p1x0IGcK0.net] void func(); void func(int); void func(double); void func(void*); auto func(int) -> enable_if_t<false, int>; みたいな多重定義があるときに func(1); と呼び出されたときに、候補1つずつ 呼び出すとしたら何が起きるのかをリストアップして void func(); //error void func(int); //exact void func(double);//conversion void func(void*);//error auto func(int) -> enable_if_t<false, void>; //error そこからerrorになったのを外すってだけだかんな
334 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 17:55:15.27 ID:o4C6fSAI0.net] C言語でどうやって多重定義を実装するのかな? 可変長引数をこねくり回せば出来るかもしれないが
335 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 18:02:13.48 ID:NpU6prgS0.net] >>332 C11 から _Generic という機能で型によって自動で呼び分けることは出来る。
336 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:20:43.38 ID:o4C6fSAI0.net] 新しい機能を使うのではなく、もうちょっと工夫してみて
337 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:44:44.22 ID:7UnfkYH50.net] 何その上から目線
338 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:47:44.91 ID:o4C6fSAI0.net] それがC言語の醍醐味
339 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:56:25.10 ID:o4C6fSAI0.net] サバイバルナイフ一本でジャングルで暮らしていく位の気概がないとC言語は使えない
340 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 18:56:28.63 ID:NpU6prgS0.net] >>334 新しいって言ってもなぁ。 今年は 2020 年なんだぞ。
341 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:57:16.38 ID:o4C6fSAI0.net] C11スレでも立ててそこでやったら?
342 名前:デフォルトの名無しさん [2020/12/11(金) 19:36:39.77 ID:Z3aKNSgT0.net] Cならポインタを積極的に使う。
343 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:42:20.97 ID:s+Xx8Zn+0.net] C11の話題でわざわざ新スレとかこいつ頭おかしいの?w
344 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:48:16.88 ID:o4C6fSAI0.net] ならば、このスレの話題は、汎用的なC言語で良いでしょう 新しい規格を話題にしたいなら、それ用のスレを立ててすれば良い
345 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:53:34.25 ID:nEgtG7R60.net] >>342 むしろ古い規格のみを話題にしたいお前が他所に行けば円満解決だろう
346 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 20:09:21.63 ID:o4C6fSAI0.net] ここは初代のC言語スレ
347 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 20:10:26.40 ID:o4C6fSAI0.net] 新しい規格は新しい器でどうぞ
348 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 21:31:36.15 ID:7UnfkYH50.net] >>343 賛成
349 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 23:01:06.49 ID:u7x51CWk0.net] >>344 アホ、>>1 を見てこい > C11 > www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
350 名前:はちみつ餃子 mailto:sage [2020/12/12(土) 09:10:37.90 ID:UUApGKPR0.net] C21 は 2021 年に予定されてるけど、正式発効はいつものように遅くなるかなぁ。 次スレには間に合わなさそう。 細かいところで C++ に追従しているのがありがたい。
351 名前:デフォルトの名無しさん mailto:sage [2020/12/12(土) 20:24:51.48 ID:+E0Q9Nw10.net] テンプレ直さなきゃな 現行規格はC11ではなくC18だ
352 名前:デフォルトの名無しさん [2020/12/13(日) 02:41:25.02 ID:3BYpAKtx0.net] 1スレの1だけど、みんな元気だなw
353 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 02:52:26.43 ID:dBxf4Vg90.net] わー、凄いですねー(棒
354 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 09:46:05.20 ID:4VSV+Zch0.net] https://text.baldanders.info/remark/2016/06/code-by-hardware-engineer/ ニヤニヤ笑ってしまった
355 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 13:31:23.27 ID:AFn1O2bR0.net] おれのハード屋の父親もre2cが吐いたようなコードを書いてた記憶がある
356 名前:デフォルトの名無しさん [2020/12/25(金) 09:10:24.53 ID:9Fso0P460.net] int a[6]; と int *a = malloc(6 * sizeof(int)); の違いは何ですか?
357 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 11:15:33.22 ID:4TR/yfFq0.net] >>354 記憶域期間 storage duration が違う void func() { int a[6]; } //ここで自動開放 automatic storage duration int a[6]; //最後まで解放されない static storage duration mallocは当たり前だがfreeで手動開放 C++にはdynamic storage durationというのがあるが Cでは言語自体にそのような概念はなく malloc/freeというアプリが提供する機能ということになっている
358 名前:はちみつ餃子 mailto:sage [2020/12/25(金) 11:18:10.08 ID:My/Ukrd40.net] >>354 違うものを持ち出して何が違うかと問われても困るんやが……。 <
359 名前:br> 背景を全部説明するとだいぶん長くなるので。 とりあえず結果的に出来る配列オブジェクトを比較するならオブジェクトの生存期間 (lifetime) が違う。 前者は自動記憶域期間、後者は割り付け記憶域期間という分類になる。 変数 a の違いという意味では前者の型は int[6] で後者は int* ということになる。 ただし配列は暗黙の型変換でそれの先頭要素を指すポインタになるので、 かなり共通した記法で扱える。 [] [ここ壊れてます]
360 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 11:29:13.76 ID:4TR/yfFq0.net] 字が違うことくらい言わんでも解っとるやろ int a[6]; は sizeof a / sizeof a[0] でサイズを取得できるが mallocで割り付けたメモリはサイズを聞けず自分で管理せねばならない
361 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:31:04.53 ID:0FtKncKUM.net] 目から鱗どころか、天が落ちるぐらい面白い説明ができないのか。 無芸な奴らだ。
362 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:39:14.80 ID:3NwCUk3p0.net] ポインタ int *p; はインクリメント可能で p++ は合法 配列 int a[6]; はインクリメント不可能で a++ はエラーになる
363 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:51:59.76 ID:D8aGfpPud.net] >>358 に期待
364 名前:デフォルトの名無しさん [2020/12/25(金) 13:23:43.17 ID:9Fso0P460.net] >>354 メモリ配置の連続性はどちらも保障されていることで良いですか?
365 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 14:43:22.97 ID:3NwCUk3p0.net] 配列は先頭から確保された領域の次のところを指せるまでは連続性が保障されてるんじゃなかったかな 規格あたるのはまかせた (malloc の戻りは… 配列に準じるように実装されてそうではある)
366 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 14:54:43.85 ID:qJluI3Ne0.net] >>361 プログラムからの見た目はどちらも連続。 物理的に連続させたいならdma メモリ 確保とかでググる
367 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 15:09:30.51 ID:2V7uRClp0.net] int a[6];はローカル変数ならスタック領域に確保、グローバル変数や int *a = malloc(6 * sizeof(int));はヒープ領域に確保 でいい?
368 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 15:19:15.56 ID:qJluI3Ne0.net] ダメ グローバル変数はデータ領域とかbss領域とかいろいろ
369 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 18:54:05.01 ID:Tea3EQhG0.net] アドレス見ない, かつ定数だと何処にも領域取らない可能性まである
370 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:30:05.07 ID:EiswCiht0.net] そんなこと言い出したら ローカル変数だってスタックじゃないかもしれない
371 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:39:01.52 ID:MidTJiO80.net] どこにあるかよりどれだけ生きているかの生命期間が大事ね
372 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 21:22:39.71 ID:EiswCiht0.net] 速度も
373 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 21:23:50.85 ID:EiswCiht0.net] 生命期間も実際はC言語の文法通りじゃない
374 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 05:33:54.37 ID:ekLZAtHZ0.net] >>361 > 7.20.3.3 malloc 関数 > 機能 malloc 関数は,大きさがsize であるオブジェクトの領域を割り付ける。 領域とは連続した区間をいう
375 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 07:58:20.12 ID:J4yOWW3+0.net] メモリ(DRAM)上は連続してるとは限らない C言語上連続として扱えるというだけ
376 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 08:19:43.84 ID:ekLZAtHZ0.net] それを言うなら仮想記憶だろ ページ境界をまたぐ場合実記憶が連続しているとは限らない その昔、ビット幅1bitのDRAMを8個パラってるのがあったけど だから何って話 それ言い出したらメモリセルのキャパシタは隣接してるのか
377 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 08:29:01.69 ID:hSiLuJt/d.net] スレタイの俺って誰ですか?
378 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 09:41:05.55 ID:Mx49Y/J60.net] >>373 > それ言い出したらメモリセルのキャパシタは隣接してるのか してないよ、アドレス線が入れ替わってる なのでメモリーテスターはアドレス線を入れ替える機能がついてたりする
379 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 10:40:07.64 ID:IfMxsBFTd.net] >>366 を言い出したからまねして見ただけ
380 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 12:41:26.45 ID:0+ArpHnq0.net] 実記憶も連続していない 時々意識不明になってるはず ただ、その時の記憶がないだけ
381 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 07:49:35.18 ID:LdveQEJ20.net] 面倒くさい、特異な、一般人には無縁の仕様を考慮するのが当たり前って感じに持ち出して否定するから初心者が逃げていく・・・。
382 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 08:44:26.16 ID:G7B9oAoL0.net] Cでプログラミングする時に領域の連続性を気にするのは果たして初心者なのだろうか(´・ω・`)
383 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:28:54.37 ID:Q5Pp+CI0a.net] Cでどのくらいできれば 実際役に立つレベルでしょうか?
384 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:45:26.51 ID:ErVwTltE0.net] >>380 Cは言語仕様は小さいし重要なのはC自体が使えることではなくCを使ってその先で何をするかだから、C言語自体の基本的な仕様は完全にマスタしてるくらいでないとわざわざCを使う意味はないかなと思う
385 名前:デフォルトの名無しさん [2020/12/29(火) 06:32:49.03 ID:NanqjdNB0.net] iZ-Cのサンプルプログラム書き始めたので見てね。 https://sunasunax.hatenablog.com
386 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 08:44:05.91 ID:gCTQzk+K0.net] >>379 デバイスドライバのぉ バッファをぉ 確保するときとかぁ ドキドキしちゃうぅ 初心者ですっ❤
387 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:46:12.94 ID:mJm7tBE2d.net] >>361 mallocはNULLを返すこともあるので その場合は当然連続性は保証されない そのエラー処理も書いておかないといけない
388 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:51:45.82 ID:/Sdg/sCQ0.net] mallocがNULLを返した場合は 割り付けが行われていないので 連続でも不連続でもない
389 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:55:07.88 ID:/Sdg/sCQ0.net] 配列は連続領域が前提だから E1[E2]が*(E1+E2)と等価となる 構造体も連続領域が前提だからこそ 配列にすることができる 不連続領域はリストや二分木などで むろん言語自体が提供するのではなく 言語を使ってプログラマが構築するものだ
390 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 12:57:09.96 ID:mJm7tBE2d.net] >>354 さらに言うなら グローバル配列はコンパイル時に総数を決定しなければならないが ローカル配列とmallocを使った場合は 最初に人数を入力し、それに合わせた数の名前配列を確保するような作り方ができる ただしあまりにも大きいとローカルはスタックが溢れるしmallocはNULLを返す
391 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 18:54:42.23 ID:/Sdg/sCQ0.net] mallocがNULLを返すのを実際に目撃したやついる? malloc(2147483647)みたいなわざとらしい実験じゃなく実用で
392 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 19:17:26.57 ID:lvvsunYH0.net] いますよ。
393 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 19:34:52.29 ID:1/HNqY6i0.net] 目撃とかはよーわからんけど実用プログラムだとアロケーション失敗でログ採ったりしてるからそういうログは見たことあるよ
394 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 20:41:44.50 ID:+fx38Mty0.net] 仮想記憶とか無いOSだとあっさり NULL 返してたな
395 名前:はちみつ餃子 mailto:sage [2020/12/31(木) 23:27:44.16 ID:xpX6Z+OE0.net] その質問を見てふと思ったことがあるんで便乗質問。 純粋にメモリが足りない (断片化で連続領域がないという場合を含む) という以外で malloc がエラーを返すことってある? バッファオーバーランとかでめちゃくちゃに書き換えて管理の整合性が壊れたとかいうのは無視して あくまでアプリケーションとしては C の仕様に則っているという前提で。
396 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:09:31.83 ID:E41TLeHr0.net] 組み込みのちっちゃなマイコンなら普通
397 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:12:43.64 ID:mwYi2zym0.net] マルチスレッドでヒープ領域が排他制御で使えないってのはありうる?
398 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:20:48.66 ID:E41TLeHr0.net] さあ
399 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:21:33.85 ID:FRLcRufg0.net] 吸い込んでくれ
400 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:34:01.79 ID:ufA+vsC20.net] >>392 メモリクォータ違反とか?
401 名前:蟻人間 mailto:age [2021/01/01(金) 00:36:53.19 ID:cLHhn9Dx0.net] >>394 「malloc マルチスレッド」で検索すれば? 知らんけど。
402 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 01:47:49.68 ID:gWHeIT9l0.net] >388 Win98か2000の頃にあったわ。 1kバイトぐらいのを数万回(ファイル数)mallocやろうとしたらNULL返した。 XPで試したらエラー出なかったけど。
403 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 05:55:11.31 ID:ihSnxU6O0.net] 逆にメモリ不足以外でNULL返すことってあるのか?
404 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 06:25:04.97 ID:DIBn3EXs0.net] malloc(0)とか
405 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 12:48:57.97 ID:U0IfpguFd.net] malloc(負の数)も
406 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 15:48:48.11 ID:1v7huw3N0.net] 負数は単に符号なしで評価してとんでもなくでかい領域を要求してるだけ?
407 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 21:47:45.23 ID:DIBn3EXs0.net] だね
408 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 22:22:16.08 ID:wEvOepYPd.net] sizeof(struct)*numとかごちゃごちゃ書くうちにうっかり0や負数になって… というのはよくあった
409 名前:デフォルトの名無しさん [2021/01/02(土) 11:42:56.15 ID:QsP+Nlmq0.net] forループでunsignedで<0やって終わらないバグとかもあるな
410 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 00:53:19.09 ID:ERUOHNUN0.net] >>406 それは正しい挙動じゃないかな。 強いて言えば、おせっかいでwarning出せばいい程度かと。
411 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 11:06:33.61 ID:QdF5iATA0.net] >>407 正しい挙動 ≠ 想定した動作
412 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 11:12:17.27 ID:3NmY3eCcd.net] この条件は必ずTRUEになりまっせー というwarningはあったと思う
413 名前:デフォルトの名無しさん [2021/01/03(日) 11:41:35.97 ID:TDgWBZToF.net] <0は終わらないじゃなくて始まらないの間違いだった
414 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 13:51:43.57 ID:3NmY3eCcd.net] unsigned int a; for( a = 11; a > 0; a -= 2 ) ... こんな感じのを作ってしまったことはあったな… aは1のあと65535になるので永久に終わらず aは0になる可能性もあるので条件式ではwarningも出ず
415 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:28:17.87 ID:izXBuwpQd.net] >>407 #defineの値によって警告でちゃうから おせっかいイラネ
416 名前:ビル・ジョブズ [2021/01/04(月) 00:09:11.84 ID:V9PboY9+0.net] mallocとか常に成功を返すんじゃない? 問題はそのアドレスに何か操作をした時。 MMUありの前提だけど。
417 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 00:29:40.79 ID:NWAwlt7F0.net] 実行してみないと使えるか分からないとなると 医療関係では使用禁止になるな
418 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 01:03:06.31 ID:PMQqdXD/0.net] validation 通らないだろうねぇ
419 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 07:24:09.81 ID:Nz2iXOdN0.net] >>413 メモリーオーバーコミットの話をしたいんだろうけどLinuxとかでも設定によるし>>414 の言うように医療やECU等のようにそんなもんが許されない組込系の機器もあるから環境によるとしか言えんわな
420 名前:デフォルトの名無しさん [2021/01/05(火) 12:05:40.60 ID:G8BimKKu0.net] 宇宙関係も無理やろね
421 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 12:12:18.79 ID:8w5sr2J0d.net] 失敗が絶対に許されないならmallocとか使うな スタティックで確保しろ
422 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 13:27:41.97 ID:zIEcR2TW0.net] 一つのファイルポインタで読み書きする場合、読みと書きを切り替えるときに fseek(fp,0,SEEK_CUR)等を挟むことはANSI Cにも書いてるわけですが、 挟まなくていい環境(Linuxとか)もありその実装上の違いってどうなってるんでしょうか? バッファゼロにしてもfseekが必要なので、バッファリングってわけでもなさそうです。
423 名前:デフォルトの名無しさん [2021/01/05(火) 13:36:43.08 ID:sz7Oy+6E0.net] https://github.com/gcc-mirror/gcc ここからwindowsのfseekとlinuxのfseekを見つけ出す
424 名前:はちみつ餃子 mailto:sage [2021/01/05(火) 14:23:40.55 ID:N7gEH2Zs0.net] C の規格では OS とかの支援のない 「フリースタンディング」な環境にも言及していて、 フリースタンディング処理系は標準ヘッダ float.h iso646.h limits.h stdarg.h stdbool.h stddef.h stdint.h の内容に限定した機能が用意されてればよいことになってる。 malloc は stdlib.h だから無くても規格合致フリースタンディング処理系と名乗れる。
425 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 16:33:30.17 ID:9HicEvTUd.net] >>413 あり得ない malloc()で==NULLテストして「メモリーが足りません終了します」とかする事はできるが 確保した変数に読み書きした瞬間のエラーは感知する方法がないので そこでエラーにされてもコアダンプして終了するしかない ユーザー側から見たら未完成プログラムである
426 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 16:45:24.18 ID:7nbNqUCud.net] ユーザーからしたら エラーメッセージを出そうが突然死だろうが メモリが足りなくなる事自体不完全プログラムだ エアバッグが作動するときに、 [メモリ不足で動作できませんでした] なんて表示されても何の意味もない
427 名前:はちみつ餃子 mailto:sage [2021/01/05(火) 16:47:22.16 ID:N7gEH2Zs0.net] >>422 やっとる (環境も多い) やろがい。
428 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 17:03:07.78 ID:9HicEvTUd.net] >>423 それなら「エアバッグの数が多すぎるんだな」とか推論できるが なんのメッセージもなく作動しなかったらユーザーはスピードメーター、ショックセンサー、安全装置などあらゆる関連部分を点検しなければならない
429 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:07:14.87 ID:dzUtU5Ds0.net] そんな事はユーザーからすればどうでもいい 不完全な事にはかわりない
430 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:09:46.84 ID:9HicEvTUd.net] ソフト作ったことない人だねw メッセージの有無はバグが起きたときの対処に大きな違いがある
431 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:13:12.71 ID:dzUtU5Ds0.net] メッセージの有無なんかよりも 動作するかどうか の方がはるかに重要 メモリ確保が失敗する可能性があるところで 失敗が許されない動作に対してmallocを使うのが間違い
432 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:15:35.99 ID:dzUtU5Ds0.net] 適切なエラー処理をすればそれで十分 ソフト設計者のしたっぱの発想
433 名前:デフォルトの名無しさん [2021/01/05(火) 18:35:11.65 ID:zMZuOoIk0.net] >>423 読む人がいないならメッセージも無意味.
434 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:47:10.76 ID:oFYQTpSv0.net] 確保できないと返ってくれば対処方法はあるだろう OK返されたあと、実際に使おうとしたら実はってなると その分リカバリーが複雑になる
435 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:00:03.87 ID:K71kt7oj0.net] ここの人はOOM Killerも知らんのか? 確保したプロセスが死ぬとは限らんのだが… https://reboooot.net/post/kernel-params-related-to-oom-killer/
436 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:39:22.64 ID:eT+iPfAP0.net] 確保しようとしてエラーになったなら対処のしようもあるが、空手形乱発していざとなったら 関係ないプロセスが殺されるってのも困ったもんだよな。 初期のOSXはOOM Killerのような仕組みもなくてシステム全体が固まってたな。
437 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:58:11.78 ID:dzUtU5Ds0.net] >>431 1秒後に再度確保? バカ丸出し
438 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 20:01:22.72 ID:8cFKE+AV0.net] お行儀よく死ぬ機構があるかどうか
439 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 21:50:05.77 ID:9HicEvTUd.net] >>428 話が変わってるぞw 論理的に思考できない根本的にプログラマー向きじゃない人だな >>429 どんな適切なエラー処理をすればいいのか ご教示願いたいw
440 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 22:27:33.74 ID:K71kt7oj0.net] >>436 > どんな適切なエラー処理をすればいいのか ケースバイケース 前提示さずにこんな質問する奴はプログラマーに向いてない
441 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 23:58:57.29 ID:zD1ciQHW0.net] OOM Killer は、Kubernetes のリソース制限の基本。 Linux のnamespace, cgroup 例外は、 アプリ例外は業務上のエラーだから、アプリで処理すべき。 システム障害などは、アプリで処理できる例外ではない
442 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 00:01:25.01 ID:WT+BV7/+0.net] その分類上、メモリ確保失敗はアプリで処理すべきなのかどうかわかんなくない?
443 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 00:46:50.28 ID:g4fxgipO0.net] mallocに失敗したらローカルで確保してみる それが駄目なら一時ファイル作ってそこに格納する 他にも手はありそうだ
444 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 01:23:26.66 ID:8o6ePSWp0.net] >>440 ねーよ間抜け
445 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 03:55:31.45 ID:Sqdcyjlhd.net] >>437 ケースバイケース言いたいだけだったのかw >>428 new使うだけでmallocされるのにそんな化石みたいなこと言われても
446 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 05:25:17.33 ID:kVhO/tYW0.net] >>440 > mallocに失敗したらローカルで確保してみる ローカルが何を意味してるのかわからんがローカル変数のことならはじめからローカル変数で確保しておくべき
447 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 05:28:43.74 ID:kVhO/tYW0.net] >>442 > ケースバイケース言いたいだけだったのかw 言いたいだけって言うかそれ以外に言いようがないだろw マジで言ってるならプログラマー失格レベル
448 名前:デフォルトの名無しさん [2021/01/06(水) 07:24:13.29 ID:bGGeDo6wM.net] アプリケーション開発しかやったことないのでシビアな状況のプログラムってのがよくわかってないけど 通常のプログラムだったらNULLが帰ってきたら終了だろうね 失敗が許されない環境で、もしメモリを使い果たして確保できないような状況の場合は失敗が許されないのにメモリを使い果たすようなプログラム自身を改善した方が良いような ファイルから必要なデータだけを読み込むようにして使い終わったメモリは開放するとか メモリを使い果たして無いのに失敗する可能性とかだったら、標準関数の正常な役割が信用できないという事になるのでプログラム言語自体使えなくなるよね C/C++だけじゃなくて それならアセンブラで直接書くしか無くなるのでは この場合だったら「たらーれば」の言いがかりにしか聞こえないけど
449 名前:はちみつ餃子 mailto:sage [2021/01/06(水) 09:52:33.41 ID:NVCaEro60.net] そこんところはホスト環境・開発システムがどこまで保証するかという話になるので、 各環境で十分な保証があるなら使えばいいし、保証がないなら使えないというだけのことでは。 私も実態を知ってるわけじゃないが組み込み開発だったら 実際には保証というか自分たちで検証することも多いと思うが。
450 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 15:10:46.82 ID:6EEBy3Y5d.net] Linux系にはヒープの上限を設定できないの? よくある入門書にはnewで敵キャラでもエフェクトでも作って動かしましょうみたいなのがよくあるが それやって消すのを忘れると一日動かしてるとかなりの容量になり突然システムが止まる 懐かしいシングルタスクOSの時代と変わらんw Win16や32だとローカルヒープは上限があって一杯になってもアプリが止まるだけでシステムは続行できた
451 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 15:49:09.66 ID:kVhO/tYW0.net] >>447 > Win16や32だとローカルヒープは上限があって一杯になってもアプリが止まるだけでシステムは続行できた それはプロセス単位の制限だろ、man ulimit でググってこい OOM Killerとかはシステム全体の話な
452 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 16:05:04.01 ID:QohpZ5Jnd.net] >>446 Cスレだから組み込み系が話題の中心だと思ってたが PCのアプリをCで書くなんて人がいまだにいるの?
453 名前:はちみつ餃子 mailto:sage [2021/01/06(水) 17:27:30.00 ID:NVCaEro60.net] >>449 ロジック部分を C で書くことはもうあまりないかもしれんが、 低レイヤや速度チューニングがなくなるわけではないからなぁ。 コードの総量に C が占める割合は少ないにしても C が (一部には) 使われているものはまだまだあるんじゃね?
454 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 17:33:29.06 ID:QohpZ5Jnd.net] アプリの速度チューンならC++で良いと思うんだが なぜC?
455 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 18:33:49.31 ID:m3At07SYM.net] >>447 ulimit -d でできるぽいね
456 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 18:53:37.18 ID:kVhO/tYW0.net] >>449 LinuxのカーネルとかApacheとか未だにC言語は残ってるよ 新規は少なくなっていくだろうけどCOBOLと同様にメンテでは当面使い続けられると思うぞ
457 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 19:00:16.49 ID:A7AJXFBH0.net] カーネルがmallocで失敗??? システムごと死ぬだろ
458 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:05:41.96 ID:6EEBy3Y5d.net] >>448 だからアホなアプリ一個でシステムが止まるなんて前世紀の話か?と聞いてるんだよね それともここはシステム関連の話だけか? mallocの仕組みもしらずにシステムいじろうなんて命知らずの人だねw >>452 シェルコマンドじゃなくて このアプリちょっと試してみてよ、と他人に渡した時に行儀よくできるような言語自体のオプションはないものかな mallopt()が近いみたいだけど英語ドキュメントしかないや
459 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:50:30.31 ID:kVhO/tYW0.net] >>455 > だからアホなアプリ一個でシステムが止まるなんて前世紀の話か?と聞いてるんだよね だから OOM Killer でググってこいよ システムを止めるかどうかは設定によるし、Windows でもメモリー逼迫したら不安定になるから > シェルコマンドじゃなくて https://linuxjm.osdn.jp/html/LDP_man-pages/man2/setrlimit.2.html そもそもシェルから設定できるのにプログラムから設定できないわけ無いだろ プログラマーの素養なさ過ぎ
460 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:52:54.12 ID:3ZsNazx6d.net] C言語なんだから無条件でPC前提にするのやめようぜ
461 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:58:31.92 ID:3ZsNazx6d.net] Windowsでも プロセスとスレッドのプライオリティを上げて メモリを大量に使えば スワップしまくって激重になって 事実上システムが死ぬけどね
462 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:59:44.32 ID:3ZsNazx6d.net] アプリ1個でシステムダウンさせるのはそれほど難しくない
463 名前: mailto:sage [2021/01/06(水) 21:09:38.92 ID:yUU4KxYw0.net] >>459 さすがにそれは不可能では?win3.1 ならまだわかるのですが‥‥
464 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 21:12:39.72 ID:3ZsNazx6d.net] プライオリティの高いスレッドをたくさん作って無限ループすれば死ぬ
465 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 21:17:12.89 ID:3ZsNazx6d.net] プライオリティ31のスレッドを論理コア数分作ればマウスカーソルも止まる
466 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 22:06:17.54 ID:FKs+KUNY0.net] 間違えてforkしまくるスクリプト実行してしまって何もできなくなった
467 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 22:06:21.76 ID:6EEBy3Y5d.net] いや別に知恵を絞って無理に止める話はしてないじゃんw うっかりミス程度で止まったらおそろしいなあ気楽にプログラミングもできないなあって話
468 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 22:38:40.29 ID:g4fxgipO0.net] うっかりシステムをフォーマットしてしまうこともあるしな
469 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 00:44:03.16 ID:Vx7SD3qO0.net] うっかりプライオリティの高いスレッドをいっぱい作っちゃった場合の話
470 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 02:16:41.45 ID:yeIMGQh50.net] 何の話してたか忘れた
471 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 15:11:57.86 ID:9QJGSme00.net] mallocを使っていても総使用量の最大は見積もっとけって話
472 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 16:20:03.10 ID:DL1zbij8d.net] 総使用量に対してメモリが十分あっても フラグメントで確保出来ないかもしれない
473 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 17:22:12.04 ID:6v7F/BUW0.net] malloc をラップして オレオレアローケーターで一括で確保して使いまわそうとすると malloc の実装とほとんど変わらんよな?って気分になる
474 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 17:32:32.97 ID:DL1zbij8d.net] 固定長が多ければ専用化の価値が大きい
475 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 17:50:56.57 ID:9QJGSme00.net] >>469 malloc実装してみな フラグメントなんてどんな程度の問題かわかるから
476 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 19:23:46.37 ID:jTCzKEfy0.net] とあるスコープ内だけで有効なヒープで、さらにスコープから抜けると開放したい という用途でがんばった
477 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 20:07:04.52 ID:b6arBunA0.net] 何十日何百日稼働するソフトならそれなりに効いてきそうだけど<フラグメント
478 名前: mailto:sage [2021/01/07(木) 20:08:45.38 ID:gAnZzjje0.net] >>473 alloca()
479 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 20:19:01.01 ID:jTCzKEfy0.net] >>475 ほしかったがなかったのだ
480 名前: mailto:sage [2021/01/07(木) 21:26:54.87 ID:gAnZzjje0.net] >>476 C にはデストラクタがないから、C の範囲で実現するのは困難ですね alloca() の実装は、ライブラリだけでは処理できずにコンパイラ側の支援が必要だと思いますので、標準ライブラリには入りにくいでしょうね
481 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 21:43:59.65 ID:jTCzKEfy0.net] >>477 longjmp は対象外とし 完全自動は諦めてスコープの外に回収関数を置く紳士協定で手打ちに
482 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 00:02:52.02 ID:RWydUoCr0.net] >>472 フラグメントで確保出来ない事があったわけだけど
483 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 00:51:10.08 ID:aEO+ezsE0.net] 使ってるアロケータの実装が何なのか, とどう使っているか示さないと何の意味もない K&R mallocに毛が生えた程度のmalloc (Tronとか)ならものすごい勢いで断片化するし glibc mallocとかのbest fitアロケータを使う分には断片化はかなり起こりにくい あとメモリリークじゃないことは間違いないんだよね?
484 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 05:16:18.16 ID:gKD5AY0L0.net] >>479 >>388 を再度問う
485 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 08:53:26.45 ID:/42fFLGad.net] C言語スレなのに組み込みやったことないヤツばっかりってのが不思議 >>480 アロケータの実装次第で断片化がおこる と自分で書いてるわけだ それが答え どんな優れたアルゴリズムでも 断片化はおこるんだけど 完全に未来が予測出来る神アルゴリズムでも
486 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 09:11:57.78 ID:yPaAOWPid.net] Go/C/C++以外に直接システムコールしてる言語ってありますか?
487 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 09:18:29.89 ID:/42fFLGad.net] アセンブラ
488 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 09:37:02.14 ID:MUX0m4u5M.net] c/c++もアセンブラ使わないとシステムコール呼べないけどな
489 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 12:03:05.57 ID:lqJPJl/10.net] CALL 5 が使える言語は全部大丈夫
490 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 12:52:43.97 ID:0DW9z0rLM.net] >>486 call 5って何のこと?
491 名前:はちみつ餃子 mailto:sage [2021/01/08(金) 14:24:17.01 ID:PuoTeu6a0.net] >>477 VLA があれば alloca は要らん。 上限が見積もれないときはいずれにしても使うべきではないが……。
492 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 14:34:20.89 ID:NkKDsd1u0.net] CALL 5ってシステムコール一般の事を指してるのかな? CALL 5はCP/Mから引き継いだMS-DOSのファンクションコールか ふつうMS-DOSはINT 21Hって内部割り込みつかってたけどCALL 5もできたそうな
493 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 15:15:28.39 ID:/42fFLGad.net] 直接システムコール の定義によってはどの言語でも出来るし 定義によってはどの言語でも出来ない 質問者は定義を明確に
494 名前: mailto:sage [2021/01/08(金) 19:43:55.15 ID:cUApPko30.net] >>488 でも VLA は C++ では非推奨でしょう? というか C であっても VLA の格納位置がスタックなら、それこそ悪意を持つクラッカに格好の餌をやっているとしか思えません‥ C99 or later では「VLA の確保場所をスタック禁止でヒープとする」という縛りはあるのでしょうか?
495 名前: mailto:sage [2021/01/08(金) 21:47:27.82 ID:cUApPko30.net] >>491 ,448,477 いろいろ調べたところ、私が間違っていることがわかりました、つまり alloca() はスタックに配列を確保する実装とのことだそうです つまり alloca() は setjmp/longjmp と同じ「C で記述できない」関数ということになりますね‥‥
496 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 22:26:35.55 ID:gKD5AY0L0.net] だからこそ標準に組み入れられているんだよ 非標準でどうしろと言うのか考えろ
497 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 13:37:23.88 ID:lvRTpcj70.net] アセンブラで作ったサブルーチンをそうとは知らずに呼べるのはCの良いところ
498 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 14:13:13.77 ID:wanRtpand.net] それだけならC++でも
499 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 16:16:23.92 ID:fHVxD+CU0.net] 知らずに呼べるって、それアセンブラ側でC呼び出し規約で書いてあげたからじゃね。
500 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 16:42:31.78 ID:lvRTpcj70.net] ABIちゅーもんがあってだな
501 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 17:00:45.39 ID:fHVxD+CU0.net] だからそう言ってる。Pascal規約で書けばPascalから呼べたり。
502 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 17:08:25.76 ID:L3ZBilIB0.net] フルアセンブラなら パラメーターの渡し方は自由 独自のスタック構造だろうが レジスタだろうが 臨機応変に出来る 今時フルアセンブラなんて事は非常に稀で C/C++の呼び出し規約に従うのが普通 というだけ
503 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 17:10:33.54 ID:L3ZBilIB0.net] 今でも超小規模マイコンだと関数コールの構造をとらないフルアセンブラコードを使う事がある
504 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 17:52:11.58 ID:lvRTpcj70.net] __declspec(naked)とか__attribute__((naked))とか
505 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 18:48:02.08 ID:fHVxD+CU0.net] それexternで宣言できないから、アセンブラで書いたルーチンを呼ぶためのものじゃなくて 従来アセンブラを使わないと書けなかったルーチンをCのインラインアセンブラで書くためのものじゃね?
506 名前:デフォルトの名無しさん [2021/01/09(土) 19:47:19.13 ID:gjIQ6YZR0.net] 純粋なC言語プロジェクトとして作るより C++プロジェクトとして作ってCコードを書いた方が 利用可能なライブラリが増えるしほぼ上位互換、という考えは合ってる?
507 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 19:51:04.00 ID:Z+DmrKyh0.net] >>503 それ多分C++コードだと思う
508 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 20:16:57.05 ID:kPw1IBO30.net] >>494 それができない言語の方が珍しいと思うけど?
509 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 20:17:11.62 ID:OS8QkCVT0.net] C++のベターC的な使い方であってpureなCとうまく連結できるかというと…
510 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 20:18:36.46 ID:kPw1IBO30.net] >>503 合ってる、いわゆるベターCって奴
511 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 21:18:21.63 ID:lvRTpcj70.net] DLLなんかどこの馬の骨言語/コンパイラ/アセンブラで作られたかもわからんものを当たり前に使えるだろ
512 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 22:58:21.36 ID:L3ZBilIB0.net] それはDLLで呼べるように作ってあるからであって
513 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 23:00:18.51 ID:L3ZBilIB0.net] 別にCの特徴でもない
514 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 23:45:25.11 ID:kPw1IBO30.net] 大抵の言語はDLLを呼び出す側になれるけど、呼ばれる側になれる言語はそんなにない
515 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 23:52:15.63 ID:lvRTpcj70.net] 普通にCでDLL書くぞ
516 名前:デフォルトの名無しさん [2021/01/10(日) 16:59:27.49 ID:97ZwT7Zl0.net] 言語はOSに依存している。
517 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 17:02:58.26 ID:N5z3vzVP0.net] OSのない非常にチープな環境でも動くのがCの特徴 例えばRAM 16バイト、ROM 256命令みたいな糞CPUでも動く リッチな環境ならCなんか使わん
518 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 17:07:41.53 ID:rshCbxDT0.net] >>514 > 例えばRAM 16バイト、ROM 256命令みたいな糞CPUでも動く 具体例plz.
519 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 17:12:34.41 ID:N5z3vzVP0.net] PIC10F200
520 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 17:29:30.48 ID:rshCbxDT0.net] >>516 ありがと、一応コンパイラもあるのね
521 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 04:19:33.81 ID:aEPvAJq60.net] そんくらいならCよりアセンブラの方が楽そうだけど
522 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 09:26:06.49 ID:yw8V+8is0.net] この規模でもアセンブラの方が楽って事はない 当然性能やリソースに問題がないならCの方が楽 楽をしたいなんて考える人が選ぶCPUではないけど
523 名前:はちみつ餃子 mailto:sage [2021/01/11(月) 09:57:05.78 ID:MiJ5pxpq0.net] PIC は CPU なのか? と思ってデータシートを見たら RISC CPU って書いてあったわ。
524 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 10:16:28.83 ID:RSMcM3e30.net] >>518 まあさすがにROM 256だとCで書くのはあまり現実的じゃないわな
525 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 10:28:09.66 ID:dLrb5ZQk0.net] >>519 コンパイラが相当なじゃじゃ馬だと 調教する(というか、こっちがされるw)のに 結構な手間暇かかったりするんだよ
526 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 12:12:48.66 ID:yw8V+8is0.net] >>522 PIC(というか8bit全般)は 命令やアーキテクチャがじゃじゃ馬 Cのじゃじゃ馬とは比べ物にならん 開発環境構築はCもアセンブラもかわらん
527 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 12:23:14.39 ID:dLrb5ZQk0.net] Cのじゃじゃ馬を調教するにも結局アセンブラを理解する必要があるからな アセンブラのじゃじゃ馬だけで済むならそっちの方が楽だろ
528 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 12:30:40.51 ID:4UZaL5drd.net] アセンブラを理解する必要なんて無いよ
529 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 12:34:47.00 ID:dLrb5ZQk0.net] あるよ Cに対するよくある誤解で、 アセンブラから逃げるためのものではなく アセンブラもわかる人が手抜きするためのものだ そもそもアセンブラで書かれていたUnicsを書き直すために作られたツールだしな
530 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 12:37:16.69 ID:4UZaL5drd.net] >>526 いつの時代の人?
531 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 12:37:56.75 ID:4UZaL5drd.net] 楽かどうか から話が変わってるし
532 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 12:54:40.32 ID:RSMcM3e30.net] 256程度に収まるコードならアセンブラでもそんなに苦労しないと思うよ
533 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 13:03:17.58 ID:4UZaL5drd.net] でもアセンブラの方が楽 って事はない
534 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 13:04:29.37 ID:yw8V+8is0.net] そもそも楽をしたいならこんな糞CPUをわざわざ選ばない
535 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 13:31:51.18 ID:COmzXB920.net] Cコンパイラの吐き出す最適化済みのコードを人力でできればよいのだが なかなか ね
536 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 14:40:26.73 ID:dLrb5ZQk0.net] CはISO/IEC規格で「こうでなければならない」という決まりがあるが アセンブラにそんなものはない 初めて触るCPUは多かれ少なかれ、それまでに蓄積した偏見に逆らうところがあり あんまり迂闊にじゃじゃ馬呼ばわりすると他の人や未来の自分にアホにされる たとえばPICならPICが向かない用途にPICを使おうとしたり その逆をやらかすやつは気をつけたほうがいい
537 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 14:55:18.12 ID:yw8V+8is0.net] 要するにCのが楽
538 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 18:03:00.86 ID:T9p+a0He0.net] >>500 関数コール構造ってスタックか?
539 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 19:17:14.19 ID:3OtB0f6U0.net] 組み込みだとデバッグしやすいようにサブルーチンの引数はグローバル領域に置くとか リターンアドレスも同じようにグローバルに置くとかあったな。
540 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 19:22:32.27 ID:exQc5JPEM.net] 呼出規約 https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
541 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 21:38:48.2
] [ここ壊れてます]
542 名前:5 ID:dLrb5ZQk0.net mailto: > デバッグしやすいようにサブルーチンの引数はグローバル領域に置く COBOLer乙 [] [ここ壊れてます]
543 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 22:18:26.34 ID:3OtB0f6U0.net] COBOLみたいな高級言語の話じゃねーよw
544 名前:デフォルトの名無しさん [2021/01/12(火) 15:17:22.63 ID:XXwzvzv60.net] 標準ヘッダファイルの関数の実際の処理コードってどこに書いてあるんですか? ぼく「rand関数ってどんな処理すんの?」 無能教科書「stlib.hに書いてあるだよ^^」 ぼく「ほーんstlib.hはWindowsだとここのフォルダに置いてあるのか」カチカチ ぼく「Visual Studioで開く」 ぼく「ってプロトタイプ宣言やんけ!本体の場所は?」 って感じで困惑してるんですががが?
545 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 15:20:38.53 ID:aoRXfngS0.net] 特にコレといった決まりはないので ランタイムライブラリのソースがあればラッキー程度
546 名前:デフォルトの名無しさん [2021/01/12(火) 15:21:37.16 ID:XXwzvzv60.net] ていせい X stlib O stdlib
547 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 15:24:49.50 ID:aoRXfngS0.net] <Program Files>/Microsoft Platform SDK/src/crt にあればラッキー
548 名前:デフォルトの名無しさん [2021/01/12(火) 15:45:13.34 ID:XXwzvzv60.net] >>543 たぶん自分の環境だと C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\ VC\Tools\MSVC\14.28.29333\crt\src って奴なのだろう。 stdlib.cはなかったですね・・・
549 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 15:49:14.18 ID:aoRXfngS0.net] >>544 関数で小分けになってたりで rand.c があったりなかったり
550 名前:デフォルトの名無しさん [2021/01/12(火) 16:02:39.24 ID:XXwzvzv60.net] ないですね・・・(絶望) 一端諦めたほうがよさそうかな・・・ aoRXfngS0さんは付き合ってくれてホントありがとう!感謝!
551 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 16:35:19.21 ID:aoRXfngS0.net] どういう風に実現してるの? ならば ソースあたるしかないけど どんな処理(機能)なの? ならば ヘルプなり man ページなり 色々あたれる
552 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 17:24:10.27 ID:3icaK3oM0.net] ヘルプは嘘書いてたりな いままでヘルプのいう通りある関数のフラグ書いてきたのに、ソースみたら全部無視されてたって経験が
553 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 18:07:45.16 ID:GYcPzbFp0.net] クソMicrosoftの使うからだ。
554 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 20:21:16.28 ID:ZB1xpZCm0.net] c/Program Files (x86)/Windows Kits/10/Source/10.0.10240.0/ucrt/stdlib/rand.cpp c/Program Files (x86)/Windows Kits/10/Source/10.0.16299.0/ucrt/stdlib/rand.cpp c/Program Files (x86)/Windows Kits/10/Source/10.0.17134.0/ucrt/stdlib/rand.cpp c/Program Files (x86)/Windows Kits/10/Source/10.0.17763.0/ucrt/stdlib/rand.cpp
555 名前:イリヤは俺の嫁 [2021/01/12(火) 23:06:47.42 ID:XXwzvzv60.net] ありがとう! 早速試してみますね
556 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 01:30:22.66 ID:uZRkh4HP0.net] Visual Studio は、プリコンパイル済みヘッダーだろ。 pch.h (旧 stdafx.h) もうビルド済み
557 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 06:12:29.66 ID:CAw2lvTg0.net] afxって文言を削りたかったのねw
558 名前:デフォルトの名無しさん [2021/01/13(水) 11:46:14.48 ID:vx4ASjNc0.net] 大体知りたいことが分かりました! 皆さんありがとうございます!
559 名前:デフォルトの名無しさん [2021/01/14(木) 18:11:57.43 ID:ZgCcmsal0.net] ヘルプとかマニュアルの嘘は多い 最初から疑うべき 特に日本語のやつ
560 名前:デフォルトの名無しさん mailto:sage [2021/01/15(金) 07:50:56.36 ID:FigS/mOA0.net] 昔デジタルマニュアル内のサンプルソース確認してくれってわたされたやつが、 I -> 1 みたいなやつや、全角文字使われてたとか 入力ミスのサンプル集かと思った。
561 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 08:50:40.04 ID:j2J8OKt50.net] いかにもな機械翻訳で、英訳しながら読まないと意味わかんないのとかね
562 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 10:23:01.71 ID:j2J8OKt50.net] JIS X3010, JIS X3014どちらももうじき20年遅れ
563 名前:デフォルトの名無しさん [2021/01/19(火) 09:32:50.28 ID:eNVxWvb9a.net] >>514 メモリ16Gの超リッチなLinux環境で使ってすいません。
564 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 12:02:21.59 ID:Uy0+fZqKd.net] 16Gで超リッチとは何と安上りなんだ
565 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 03:33:05.19 ID:h5t/8l7N0.net] 16GBのPCを個人所有してたら超リッチ って話じゃないぞ
566 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 08:00:15.22 ID:6vEnElCe0.net] で、どういう話なの?
567 名前:はちみつ餃子 mailto:sage [2021/01/20(水) 11:53:21.26 ID:2wFV5REW0.net] C で書かれたコードを実行するにはリッチって話っしょ
568 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 17:49:36.27 ID:6B9ftBiM0.net] void *p=malloc(1024*1024*1024*16);
569 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 17:55:29.77 ID:HhPa7Y4p0.net] >>564 int型が32bitの環境ならその整数の乗算部分でオーバーフローが起きて16GBにならないんでないかな
570 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 20:34:38.74 ID:6vEnElCe0.net] >>563 意味わからん LinuxはC言語で書いたプログラム専用じゃないし4.8PiBのメモリーを持つ富岳でもLinuxは動くし
571 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 20:48:15.35 ID:h5t/8l7N0.net] おまえバカだろ RAM 16バイトの底辺CPUに比べて超リッチな環境だって話
572 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 22:02:18.04 ID:6vEnElCe0.net] バカはお前w それは単に比べる相手がおかしいだけだろ
573 名前:デフォルトの名無しさん [2021/01/21(木) 00:28:31.26 ID:MGeCCcUA0.net] GUIが無いんだろ、最強じゃんw
574 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 06:10:52.98 ID:gXoiSngNH.net] C「を」書いたのはリッチー
575 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 07:07:18.10 ID:zKx4b76A0.net] A「おれ財布に16円しかない」 B「おれ今16万円も入ってるよ超リッチ」 >>566 「16万円で超リッチとは何て安上がりなんだ」 >>566 「ビル・ゲイツの財布には16億円入ってる」 A「???」 B「???」 A「誰?」 B「何で突然ビル・ゲイツ?」 A「いや、おれの財布に16円しか入ってないって話を...」 >>566 「それは単に比べる相手がおかしいだけだろ」 A,B「???」
576 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 07:12:03.65 ID:rjSQv0Wq0.net] >>571 それどう見ても「個人所有してたら超リッチ」って話だろ… >>561 は一体何を言いたかったんだ?
577 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 07:31:52.93 ID:zKx4b76A0.net] 開発ターゲットの話
578 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 08:08:33.69 ID:rjSQv0Wq0.net] >>573 だからターゲットもチープな組込みからスパコンまであるだろ 限定なしに超リッチとか言われても井の中の蛙が語ってるとしか思えん
579 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 08:12:32.96 ID:zKx4b76A0.net] >>574 >>571
580 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 08:38:58.68 ID:rjSQv0Wq0.net] >>575 だからそう言うのは井の中でやれよって話
581 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 12:02:22.51 ID:NDHJTNIed.net] 流れも理解せずに話に勝手に入って来て 何を言ってるんだか
582 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 12:34:13.57 ID:8rFkGfvd0.net] ここは胃の中です
583 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 13:14:18.23 ID:hceb9QsBa.net] 頭はプアです
584 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 13:40:44.42 ID:xengUv2k0.net] もう引っ張ることでも無いやろ
585 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 13:54:25.02 ID:rjSQv0Wq0.net] 勝手に入ってこられるのが嫌ならブログででもやってろよw バカすぎる
586 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 22:19:55.22 ID:Z9MWAls10.net] >>570 エデ・イー?
587 名前:デフォルトの名無しさん [2021/01/22(金) 12:29:52.09 ID:pJ+Dy7HCF.net] 最近のOSってmallocで実メモリ足りないときはHDD/SSDからとってきてくれるんでしょう?
588 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 12:44:10.92 ID:MTKvFG+KM.net] 仮想記憶のことなら全然違うし、全然最近でもないし、swapも埋まればmalloc失敗すると思うけど、何だろう
589 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 12:50:00.55 ID:3IahkNr8M.net] 仮想アドレス空間に隙間がなければ失敗するけどな
590 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 13:07:46.80 ID:/3jYtxszd.net] >>584 いや 全然違うってこともない イメージ的にはそれでいい
591 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 14:43:34.68 ID:Pa9c7HBM0.net] スタック領域もコード領域も足りなくなったら補助記憶装置にスワップアウトするしmallocとは直接関係はしないよ
592 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 14:52:58.55 ID:B/3A9QDar.net] コードがスワップアウトしたら実行中のプロセスはどうなるんでしょうか?
593 名前:はちみつ餃子 mailto:sage [2021/01/22(金) 14:59:09.88 ID:gbaM/AZn0.net] コード領域までスワップアウトすることがあるかどうかわからんけど、 あったとしたらタイムスライスの割り当てが戻ってきたときにその退避してたコードも メモリに戻すことになるだけでしょ。
594 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:03:45.51 ID:/3jYtxszd.net] >>587 mallocと直接関係ある なんて誰も書いてない
595 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:07:21.69 ID:/3jYtxszd.net] >>588 アクセスした瞬間に例外発生 これを受けてHDD/SSDに退避してあったデータをメインメモリに戻して例外を復帰する コードデータ関係なく
596 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:18:29.37 ID:Pa9c7HBM0.net] >>590 >>583 を100回音読してこい
597 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:22:19.21 ID:/3jYtxszd.net] 主語はOS
598 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:25:32.00 ID:/3jYtxszd.net] mallocは単なるトリガー(の1例)
599 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 16:21:31.38 ID:Pa9c7HBM0.net] 主語でないと関係しないって? 日本語の勉強からやり直した方がいいと思うよ 結構マジで
600 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 16:28:50.78 ID:/3jYtxszd.net] 非制限用法
601 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 16:30:53.38 ID:/3jYtxszd.net] 直接関係してなかろうと (例えば)mallocをトリガーとしてスワップすることは事実
602 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 19:42:10.12 ID:Pa9c7HBM0.net] >>596 頭大丈夫? そろそろ黙ったほうが良くね?
603 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 20:55:52.26 ID:red8nkhVM.net] 確かに直接関係はしないな syscallというレイヤーが挟まるから で?それがどうした?
604 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 22:55:39.06 ID:Pa9c7HBM0.net] >>597 > (例えば)mallocをトリガーとしてスワップすることは事実 するとは限らんしそもそも仮想記憶のない環境もあるし何が事実だかw
605 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 23:26:46.95 ID:LtnZZu+T0.net] mallocがスワップアウト要求すんのか? ページアウトですらなく?
606 名前:デフォルトの名無しさん [2021/01/23(土) 00:33:31.85 ID:MUxSQoqh0.net] mallocは常に成功する、問題はそのメモリにアクセスした時
607 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 00:37:30.76 ID:QrEIYEWsM.net] Cでマルチスレッドなプログラム書くときのデザインパターンというか、オススメの書き方って何かある?
608 名前:デフォルトの名無しさん [2021/01/23(土) 00:40:17.93 ID:MUxSQoqh0.net] >>603 pthread
609 名前: mailto:sage [2021/01/23(土) 00:47:46.15 ID:JHWvmAOA0.net] >>603 私は c++11 以降に移行しました、言語が MT をサポしてくれているのはありがたいです‥
610 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 03:11:07.99 ID:WU8kpFS10.net] >>600 mallocをコールした結果スワップすることがあるのは事実
611 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 03:12:25.03 ID:WU8kpFS10.net] pthreadやc++11がデザインパターン?
612 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 07:30:28.10 ID:4VL29Q1J0.net] >>606 >>602
613 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 08:27:23.59 ID:WU8kpFS10.net] >>602 それは実装次第
614 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 08:43:07.74 ID:4VL29Q1J0.net] >>609 だから>>583 の様に言い切る奴はアホだ って話でしょ
615 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 08:50:59.97 ID:pbmfU4sr0.net] >>602 どんな実装でも仮想アドレスに連続領域が確保できなかったらmalloc呼び出し時点で失敗するんじゃないの?
616 名前:デフォルトの名無しさん [2021/01/23(土) 09:44:47.82 ID:MUxSQoqh0.net] >>611 実際にアクセスする時には仮想連続領域があるかもしれないじゃん
617 名前:デフォルトの名無しさん [2021/01/23(土) 09:45:23.82 ID:MUxSQoqh0.net] んで、そんな時こそのスワップですよw
618 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 10:27:22.67 ID:4VL29Q1J0.net] >>611 オーバーレイで仮想空間を拡大する実装かもしれんw オーバーヘッドがでかすぎるしそもそも今時の環境でそこまでする必要があるとは思えないけど >>612-612 仮想アドレスと物理アドレスの区別ついてる?
619 名前:デフォルトの名無しさん [2021/01/23(土) 10:29:19.13 ID:MUxSQoqh0.net] >>614 バカなの?
620 名前:デフォルトの名無しさん [2021/01/23(土) 10:31:56.75 ID:MUxSQoqh0.net] >>611 とりあえず割り当てちゃうんだよ
621 名前:デフォルトの名無しさん [2021/01/23(土) 10:36:34.75 ID:MUxSQoqh0.net] アプリとかプログラムのcodeだって全部メモリ上にロードされてないからな、アクセスした時に、あっそこにはプログラム無いから今からロードするわ〜、って感じだから
622 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:00:13.95 ID:4VL29Q1J0.net] >>615 ネタに突っ込んでるのか、仮想アドレスも理解できてないことを指摘されて悔しいのかをはっきりさせてくれw
623 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:08:04.07 ID:sAz3YI3ta.net] >>616 仮想アドレスに連続した空き領域が足りないのに、とりあえずで何を割り当てるんだよ
624 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:15:26.28 ID:X7rXBKGs0.net] メモリーマップトファイルでペタバイトの巨大なプログラムを実行するんだい
625 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:55:57.12 ID:pbmfU4sr0.net] >>614 俺にレス?なんか間違ってるか?
626 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:57:17.63 ID:pbmfU4sr0.net] >>621 おっと612か。すまんかった
627 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 15:00:04.42 ID:E2XTqnevd.net] >>610 言いきってるように見える? おれには初心者が「大体こんな感じ?」って言っただけにしか見えないんだけど 意味的には大体合ってるのに 全然違う とか 最近のOSとしか書いてないんだし 技術的な話をしたいならせめてOSを特定しようよ 勝手に特定のOSを前提にした視野が狭い人みたいだから
628 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 15:27:34.50 ID:4VL29Q1J0.net] >>623 ああ、>>583 が言い切ってるは言い過ぎだな その後の>>586 がアホだって言い直すわ
629 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 15:31:32.55 ID:E2XTqnevd.net] いやどう見ても>>584 がアホ
630 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 16:34:32.36 ID:LPDMRZtK0.net] スワップファイルが満杯でmallocが失敗なんて状況に陥る前に対策するだろjk
631 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 16:57:50.33 ID:5Na5U87Z0.net] linux って簡単に process 殺すよね 知らんふりも得意
632 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 18:17:32.24 ID:4VL29Q1J0.net] >>625 アホと言うなら具体的にどこがアホって書かないと恥ずかしいだけだぞ 一応ここ技術板だし
633 名前:619 [2021/01/24(日) 15:57:31.34 ID:5JJAlISZ0.net] >>619 64bit時代に仮想アドレスに連続した空き領域が無くなることなんか現実に無いだろ
634 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 16:53:19.15 ID:0zbFdmBp0.net] >>629 それなら>>616 の時点でそう書けばいいだろう。まあC言語の用途を考えれば後付けで64bitに限った話にしようとするのは馬鹿げているが。 で、>>616 のとりあえずって結局何だったの?
635 名前:デフォルトの名無しさん [2021/01/24(日) 17:27:58.38 ID:5JJAlISZ0.net] >>630 常に成功を返す
636 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 17:35:27.66 ID:1wsdfsyQ0.net] 実際にアクセスしたときにページフォルト起こしてページを割り当てるとして、そのアドレスに 連続した空きがない状態じゃメモリ割り当てても使えないじゃん。
637 名前:デフォルトの名無しさん [2021/01/24(日) 22:06:29.57 ID:5JJAlISZ0.net] >>632 日本語が変だぞw
638 名前:デフォルトの名無しさん [2021/01/24(日) 22:09:51.26 ID:5JJAlISZ0.net] PFでメモリ割り当てられなきゃ、リスケジューリングだアホ
639 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 22:14:36.76 ID:1wsdfsyQ0.net] 割り当てられたとしても使えないと言っているんだが?それとも既に他で使われている領域を上書きするか?
640 名前:デフォルトの名無しさん [2021/01/24(日) 22:18:58.47 ID:5JJAlISZ0.net] >>635 4Kページ割り当てて使えないって何なんだよ・・
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 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています