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


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

C言語なら俺に聞け 151



1 名前:デフォルトの名無しさん [2019/04/02(火) 11:23:37.62 ID:SQXqRaAc0.net]
!extend:checked:vvvvv:1000:512
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

175 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 23:34:23.62 ID:8C7kRl9M0.net]
アホ
n % 16だろうが

176 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:07:20.17 ID:WPUlIDDo0.net]
>>169
つよい

177 名前:デフォルトの名無しさん [2019/04/20(土) 01:30:17.77 ID:2mEBnGIe0.net]
早く配列になりたい

178 名前:デフォルトの名無しさん [2019/04/20(土) 12:04:07.28 ID:adBHY6Cw0.net]
忙しかったものですから、ウルトラ亀レスで申し訳ありません。

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

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

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

K&Rを読んだときに、気が付く人はすぐ気が付いていると思います。
自分で考える人です。
本当のプログラマです。

179 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 13:35:25.67 ID:UeTDxeBdd.net]
>>173
自分で考えるのが良いってのは、プログラマに限らずなんでもそうだよね。
その上で本当のプログラマとやらにもとめられるのは、考えて理解することよりバグを出さないテストを行う能力だと思うね。
考えてもミスる時はミスるし。
場数を踏んだプログラマは、もちろんちゃんと考えるけど、その上で自分の理解やコードを信じない。
ちょっと話が違うかな。

180 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 18:04:05.64 ID:YpwC1XIf0.net]
>>173
それはK&Rのよくないところか?

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

単にCの機能を説明するために例を挙げただけのナンチャッテコードを
いきなり本番環境に持っていった東大卒とかぬかすやる気のねえクズと
大きな事故に至るまで欠陥を検出できない会社の検証ルールの問題だろうが

181 名前:デフォルトの名無しさん [2019/04/20(土) 18:21:44.59 ID:rZAw ]
[ここ壊れてます]

182 名前:W+3j0.net mailto: 在るプログラムを作るのは間違い。買うのが正しい。 []
[ここ壊れてます]

183 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 00:16:47.67 ID:NOPBo00z0.net]
買ったもの、存在するものが四角い車輪だけだったとしてもか?



184 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 00:25:39.70 ID:sE/qbOcV0.net]
買ったもの、つまり売っているものは、自作したものよりも性能がいい

185 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 05:49:28.91 ID:HT/hFmaDa.net]
Cできる人は(ここの住人のような)C++も当たり前にできるん?

186 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 06:09:41.42 ID:znB8VhQa0.net]
>>179
会社に今までC一筋20年くらいの人がC ++のプロジェクトに来たんだが使えなさすぎてクソワロタ

187 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 06:45:11.14 ID:XP3sT+Yd0.net]
>>178
何も言うまい
破門だ
それだけだ

188 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 08:31:58.96 ID:nzBarAq00.net]
もしかしてCのライブラリのソースコード全部読んでんの
アホじゃね

189 名前:デフォルトの名無しさん [2019/04/21(日) 10:26:51.61 ID:gW8lsVjX0.net]
>>175
173です。
おっしゃるとおりです。
俺の言いたかったのは、まあそういう感じです。
K&Rの信奉者があまりに多いので
どゆふうに指摘していいのか困惑している次第です。

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

しかし、ハッシュ値のところですけど、
あと数文字をコーディングするだけでまともなコードになるのに、
なぜしなかったのか?という疑問はあります。

190 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:42:02.64 ID:ZEQClH310.net]
プログラマなんて正常な判断ができないような過酷な状況に追いやられることなんてよくあるし、想像の余地はいろいろあるな。

191 名前:デフォルトの名無しさん [2019/04/21(日) 10:51:08.83 ID:MDootfcvM.net]
>>179
Cを数年やってからC++を
やりましたけど
最初は全くわかりませんでしたよ。
C++に慣れるまで1年ぐらいかかったかな?
全く別の言語と思ったほうが
よろしいかと思います。

192 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 11:08:55.42 ID:gKcyDuy9a.net]
Cでインターフェース・抽象性を意識したプログラムを書いてたらそんなに変わらんと思う。
ただ現実としては委譲を使ってたところから無理して継承に適応するために混乱することはある。現場で待っているのは神クラス。

193 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:18:59.87 ID:+Seww2xKM.net]
まるで別物と思うわ。
ただ仕事で使う分にはみなjavaと同程度の構文しか使ってないから、違いはさほどないと感じるかも



194 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 13:49:17.56 ID:ZEQClH310.net]
仕事以外でC++使うなんてドMでしょw

195 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 13:55:23.49 ID:7uFZhwV3M.net]
C言語で開発しているのも大概だけどなw

196 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 14:18:53.79 ID:P3URCDUY0.net]
仕事以外でプログラミングすること自体がドMの極みw

197 名前:デフォルトの名無しさん [2019/04/21(日) 14:48:54.11 ID:YKRN8m01M.net]
34年間、ほぼ毎日プログラミングしてますよ!
定年になってもずっとやってると思います。
作りたいものが一杯有りすぎて体が2つ3つ欲しいです。
今、最も力を入れているのが人工知能です。
人類を滅ぼす悪魔のソフトを造るのが人生最大の目標です!

198 名前: mailto:sage [2019/04/21(日) 15:58:12.64 ID:MozNv5pX0.net]
>>191
>人類を滅ぼす悪魔のソフト
これには

199 名前:ニても興味がありますね

「人類を滅ぼす悪のソフトウェア」
うーん、ぱっと思いつくところではテトリスとか…
[]
[ここ壊れてます]

200 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 17:58:31.04 ID:XP3sT+Yd0.net]
>>183
全然わかってねえじゃん
あと数文字をコーディングすることが
Cの機能を説明するサンプルとしては邪魔だったら
その数文字をコーディングしねえのは当たり前だ

サンプルってのはS/N比が大事なんだよ
そこで伝えようとしていること以外のノイズは
徹底排除する必要があるんだ

201 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 17:59:26.99 ID:XP3sT+Yd0.net]
>>191
おまえ自分が作ったプログラムの敵が未来からタイムマシンで暗殺に来るぞ

202 名前:デフォルトの名無しさん [2019/04/21(日) 19:19:27.57 ID:AjzRUWat0.net]
脳波を検出して見たいVRを出してやるわ ==> 人類滅亡

203 名前:デフォルトの名無しさん [2019/04/21(日) 20:04:10.03 ID:gW8lsVjX0.net]
>>193
初心者向きの本ですから真似する馬鹿もいるということを
想像すべきでしょうね。
おまえこそ馬鹿だな
想像力がゼロだ
笑えるぞ?
知ったかのクズだ



204 名前:デフォルトの名無しさん [2019/04/21(日) 20:08:24.68 ID:YKRN8m01M.net]
今どきCとか
K&Rとかで
能書きこいて
馬鹿ジジイにも
ほどがあるwww

205 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 20:10:12.48 ID:XP3sT+Yd0.net]
>>196
「初心者」という隠れ蓑に逃げる馬鹿って、自己紹介か?

206 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 20:48:49.16 ID:ZEQClH310.net]
>>197
イラッとするのはわからんでもないが、ここはC言語スレだからそんなこというのは荒らしだぞ

207 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 23:45:38.39 ID:2X82VWTJ0.net]
>>196
あの時代の初心者は今時の初心者と違って、大半はちゃんと自分で考えて自力で技術を習得していく姿勢があり、ただ教えてもらった通りにするだけのようなのは自然と落伍していったと思うよ。当時の想定する読者層にあった適切な内容だったろうと思う。

208 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 00:28:58.76 ID:1mQu6LUBa.net]
単に裾野が広がってるだけで

209 名前:デフォルトの名無しさん [2019/04/22(月) 01:07:58.48 ID:HMkHCtfr0.net]
>>196
人の意見を聞く気がないなら
チラシの裏にでも書いてなよ

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

あと何であの本に信奉者がいるのか
理解できない自分も

210 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 02:24:36.97 ID:RPRc4IKz0.net]
>>200
当時のccが寡黙だったのが却ってよかったよな
なんで動かないのか自分の頭で考えるしかなかった
今どきのコンパイラは過保護で
落伍すべき者を引っ込み付かないところまで引きずっちまう

211 名前:デフォルトの名無しさん [2019/04/22(月) 08:39:06.04 ID:29O1k2F2M.net]
>>202
お前のような馬鹿な奴は
そのうち自滅するよ(笑)

お前は「おれ天才!」とか
思ってる低知能のクズだ
もっともたちが悪いクズ

212 名前:デフォルトの名無しさん [2019/04/22(月) 10:09:04.63 ID:y6AB5FtQa.net]
>>179
いや、俺は使えない。

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

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

仕事はやがてLinux関係に移行するがそこでもC++が必要とされる事はなく現在に至る。趣味でJavaを覚えたりもしたが自分の仕事ではほとんど必要とされなかった。
今は趣味で Kotlin を覚えているところだが、C++については複雑化

213 名前:オ過ぎたようなので今さらやる気は起きない。多分今後もやらないと思う。
Windowsプログラムを作る必要が出てきたとしても今ならC++なしで出来そうだし必要になるとしても局所的だろう。
[]
[ここ壊れてます]



214 名前:193 mailto:sage [2019/04/22(月) 10:13:09.11 ID:RPRc4IKz0.net]
>>204
196の時点ではまだ僅かに技術的な話題に振れていたが
今度は100%罵倒のみ
とうとう落ちるところまで落ちたな

215 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 12:15:04.42 ID:IrgyqU7Vx.net]
>>179
MFCが流行ってたりC++Builderが流行ってた時にはそれなりに使う人口がいたと思うけど、過去メンテ以外で現在積極的に使ってる人は少ないかもね。

216 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 01:03:01.93 ID:dZlKsmD/r.net]
>>157
え?こんな書き方出来たの!?
初めて見た
[]が演算子??
そんなの今まで読んだ本にのってなかったよ!

217 名前: mailto:sage [2019/04/23(火) 06:21:01.09 ID:JSYnwir10.net]
>>208
ioccc

218 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 07:52:30.55 ID:ITUqyUOr0.net]
https://www.ioccc.org/

219 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 09:50:22.14 ID:tEWsQxq+M.net]
[]が演算子って常識じゃないのか?
どの優先順位表にも載ってるだろ?

220 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 09:56:40.16 ID:EYeaOvlg0.net]
もちろんこういう書き方も出来るのが[]演算子と文字列リテラルの合わせ技

int wday = 2;
printf("%c", "SMTWTFS"[wday]);

221 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 11:04:29.35 ID:lZSXa7efa.net]
標準入力で最初に数字を入力して、その値だけ文字列を入力するのはどんな感じで書けばいいですか

3
asdf
qwert
sdfghg

こんな感じで最初の入力の値に合わせて配列を用意する?感じになるとおもうんですが
なにもひらめきまへん

222 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 11:22:00.88 ID:ITUqyUOr0.net]
>>211
配列の宣言に使う[]は演算子ではない
直接宣言子の一部だ

意図的に演算子に似せてあるので
勘違いするのは無理ないが
演算子は式に作用するもので
宣言子に含まれる[]はこの定義に該当しない

223 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 11:44:40.51 ID:5E3fgZzA0.net]
>>212
土日・・・



224 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 11:54:58.53 ID:mPLR84qwa.net]
>>214
またおまえか

225 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 12:32:49.10 ID:ITUqyUOr0.net]
>>216
何か用か?

226 名前:デフォルトの名無しさん [2019/04/23(火) 15:59:59.72 ID:gv0SOq8da.net]
>>213
文字を入力するだけで変数に入れる必要がないなら getchar() で '\n' 三回読んだら終わり。
変数に入れる必要があるなら最初の値の分だけ char * を保持する配列を char ** に malloc() や calloc() 使って確保して、更に全要素を malloc() や calloc() 使って確保して、それに対して fgets() を繰り返す。

227 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 16:43:21.53 ID:56NoAZCP0.net]
>>215
土曜は日曜であり、全は一である。

228 名前:デフォルトの名無しさん [2019/04/23(火) 17:41:00.23 ID:gv0SOq8da.net]
月月火水木金金

229 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:20:58.69 ID:i9di+stUM.net]
おじいちゃん戦争はもう終わってるよ

230 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:24:41.37 ID:aEjNiIWC0.net]
令和も戦争のない年号になると良いが、ちょっと雲行きが怪しいな。

231 名前:デフォルトの名無しさん [2019/04/23(火) 20:44:52.15 ID:k/LWg8++0.net]
>>222
日本は戦争しないでしょ?
そして巻き込まれもしないと思う。

だって日本には軍隊がないんだもの。
自衛隊なんて銃もろくに撃てないへなちょこばかりだから。

232 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:56:24.90 ID:XDXL3q34a.net]
コンピュータ好きなオタクって勇ましいやつおおいよね

233 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:21:40.55 ID:Dz3CEytOM.net]
語尾によねをつけて同調



234 名前:を求めたがるのは左巻きの典型だよね []
[ここ壊れてます]

235 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:58:52.95 ID:ITUqyUOr0.net]
俺は右巻きだが「よね」はよく使う
レッテル貼りは瞬時に反証される論議の中では自爆行為だ
しょーもね

236 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 22:34:42.99 ID:bUhZMb1va.net]
やっぱり自信がないからコンピュータ好きになるのかな?

237 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 23:06:00.81 ID:ITUqyUOr0.net]
断言できないおまえが自信ないだけだ(pgr

238 名前:デフォルトの名無しさん [2019/04/24(水) 03:42:44.00 ID:SZsIFAZx0.net]
よね

239 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 08:04:11.05 ID:P2wnwvJc0.net]
ICEデバッグしてるとき、とある変数の値をいくつか足し算して、別の変数に代入する関数で、
変数の内容同じなのに、結果が違う。。
最適化OFFにしてビルドしてる。

240 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 08:05:24.40 ID:P2wnwvJc0.net]
その関数は、別の場所から2度呼んでて、1回目と2回目で結果が違う
計算に使う値は全く同じなのに

241 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 08:51:50.10 ID:zvRm4GUYM.net]
>>230
自分の経験則で言えば、大抵は関数の処理途中で割り込み処理が発生してメモリかレジスタバンクを書き換えていると思う

242 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 10:14:34.45 ID:V3yGzJXe0.net]
一回目から二回目の間で変数のどれかが書き変わってるに決まってんじゃん

243 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 10:55:30.16 ID:HTDgYDWT0.net]
>>230
加算に使っているレジスタを割り込みで使いっぱしてね?



244 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 10:58:08.05 ID:HTDgYDWT0.net]
>>230
_Atomic使ってるか?

245 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 11:21:13.53 ID:IysC1nu6x.net]
>>230
ほぼ100%スタックのゴミ拾ってる。

246 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 12:37:12.74 ID:AiHhhuXgM.net]
まれにポインタ周りバグっててメモリー書き換えてるとか
てかICE使ってるならそこで止めて変数の中身確認しろよ

247 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 13:14:34.92 ID:V3yGzJXe0.net]
ICE製造の過程でICEそのもののデバッグでもしてんじゃね

248 名前:デフォルトの名無しさん [2019/04/24(水) 18:27:12.37 ID:SZsIFAZx0.net]
まずはアイスクリームでも食べて休むといい
よね

249 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 18:45:45.47 ID:JD7HGNH40.net]
ここ20年ほどフルICE使ってないなぁ。
未だにあるんだろうか?

250 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:00:32.37 ID:P2wnwvJc0.net]
230だけど、俺の見当違いでした。
インプットの変数の値が違っていたので、当然足し算の結果も違っていたというオチ。
ICEデバッグだと変数を表示するとメモリの中じゃなくて表示した時点で割り当てられたレジスタの値を表示するので、
変数としては変わってないはずなのに他で書き換えられるので逐一変わって混乱していた。

ICE初心者でしたw

251 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:16:06.15 ID:03JhFb4B0.net]
デバッグ中に最適化を抑制するのは間違いではないと思います。
慣れてくると最適化したままでもある程度推測できるようになりますので、
リリースオプションでICEを使用することの方が多くなるかもしれません。

252 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:18:24.10 ID:lwqMqFKi0.net]
CPUぶっこぬいて差し替えてやるやつ?

253 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:41:36.06 ID:W4WRMDmVM.net]
ぶっこ抜くと言うよりターゲットボードのCPUの代わりに専用のソケットを実装して専用プローブで接続する
PCなどと違って組み込みのSoCにソケットなど無いのでぶっこ抜いて差し替えるなど無理



254 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 23:07:42.00 ID:gVrMWpFh0.net]
>>243
20年前のICEならそうなんだろう
>>244
JTAGの話か?
ソケット云々の前にGHzオーダーのCPUだと信号引き出すなんてとても無理

255 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:33:17.24 ID:1oTSGFU/a.net]
scanf("%d%d%d", &a, &b, &c);
こうまとめて入力するのをfgets使うとどうやるの

256 名前:

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

このセットをループで三つまわすしかない?
一行でやる方法あるんかな
[]
[ここ壊れてます]

257 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 00:56:36.76 ID:WntZOZIYa.net]
いや、1行中に入ってるなら同じじゃないか?
行の区切りとか要素の区切りとか細かい話はあるけども

258 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 03:18:03.15 ID:rmDyF6iV0.net]
またfgets教か
マジいやらしさがカルト教団さながらだ

259 名前:デフォルトの名無しさん [2019/04/25(木) 04:21:17.20 ID:D6NtakiX0.net]
>>246
なんというか、ほとんど答えが上に書いてあるかのような質問だな・・・

sscanf(s, "%d%d%d", &a, &b, &c);

260 名前: mailto:sage [2019/04/25(木) 05:17:53.53 ID:6xUIrXDu0.net]
>>246
https://mevius.5ch.net/test/read.cgi/tech/1434079972/55

261 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 21:00:37.28 ID:E+TyVG800.net]
>>244
そんな感じ
CPUじゃなくてROMだけど
就業先で当たり前のようにICE使わせて頂いてるけど、お値段見てビックリ・・

262 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 10:01:13.22 ID:EJ4BH9nCa.net]
>>250
商売すんなや…

263 名前:デフォルトの名無しさん [2019/04/26(金) 10:28:55.76 ID:YRtkzMZRa.net]
>>252
それって商売になってるのか?
普通に公開されてるが。



264 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 13:15:14.86 ID:0jspcAl20.net]
商売のための宣伝だろ

265 名前:デフォルトの名無しさん [2019/04/26(金) 14:06:27.08 ID:YRtkzMZRa.net]
そうなの?何の宣伝になってるのか全くわからんのだが。

266 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 14:27:22.39 ID:0jspcAl20.net]
誰もアクセスしない隔離スレなんで
時々こうやって宣伝して引っかかるカモを呼び寄せようと

267 名前:デフォルトの名無しさん [2019/04/26(金) 14:36:01.95 ID:YRtkzMZRa.net]
元々有償でプログラム作るスレとして作ったスレだったんだろうけど結局誰もそんな風には使ってなくてただのプログラム発表の場になってるよね?

ま、しかし、5ちゃんのような掲示板で稼ぐのは無理があるよなあ。それ専用のサイトなら可能だろうけど。

268 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 10:20:19.39 ID:H+/AGAV+0.net]
既存をちょっと修正してほぼデグレのテストというスタイルの俺には、
要望に応じて1から新しいプログラムを組む人を尊敬する
修正は修正で既存への影響の面でそれなりのノウハウは要るにしても

269 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 10:42:26.45 ID:e+ce++rA0.net]
>>258
むしろ俺は人の作ったワケワカメなコードを文句も言わずメンテしてる人はすごいと思う。

270 名前:デフォルトの名無しさん [2019/04/27(土) 16:22:24.62 ID:W91FG5LxM.net]
>>259
文句を言わずに、というより
文句を言わせずに、だと思う。

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

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

派遣辞められません!

271 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 17:56:34.08 ID:H+/AGAV+0.net]
>>260
派遣でそれほどの能力があったら独立して2000万は稼げるのでは

272 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 18:25:28.46 ID:H+/AGAV+0.net]
派遣でそれだけ貰える程のスキルがあるってことは、
C言語だと本当に低レベルのデバイスの制御からビジネスロジックの
設計からお任せできるレベル
独立すべきでしょう

273 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 19:19:15.66 ID:e+ce++rA0.net]
ハードの設計から組み込みソフトはもちろんWindows、Android.、iOSのアプリ、DBもWebもゼロから設計できるスキルがあったらどこに行ったらそんな高級取りになれるでしょうか?



274 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 19:26:07.70 ID:mTDcTDsb0.net]
火事の現場

275 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 19:26:19.83 ID:H+/AGAV+0.net]
コンサルレベルでもなかなか

276 名前:デフォルトの名無しさん [2019/04/28(日) 03:02:09.70 ID:IQfIs7rY0.net]
自分で開業した方が良さそうな感じもするが、そうなると営業力も必要になるな。

まあでも Android や iOS アプリの場合は営業力あまりなくても世界中に売れれば儲かる事がある。
電卓アプリでこんな風に稼いでいる人も居るし。
https://appmarketinglabo.net/calculator-1100man/
これは世界での需要がどのぐらいあるかとプログラムが簡単かどうかはあまり関係ないってことでもあるかな。
需要がないものだと作るのが大変なプログラムでも売れなくて稼げない。苦労と儲けは無関係。

277 名前:デフォルトの名無しさん [2019/04/28(日) 07:50:35.97 ID:3xnz0I0C0.net]
大半の自営業は開発費半分を前金でもらいとんずら。

278 名前:デフォルトの名無しさん [2019/04/28(日) 13:24:06.83 ID:JRRKtJTbM.net]
>>267
日本に前金払うところなんてないから。
たからデスマになる

279 名前:デフォルトの名無しさん mailto:sage [2019/04/28(日) 20:30:30.58 ID:I/cjvEXhM.net]
そんなことすれば詐欺として警察に追われる身になる

280 名前:デフォルトの名無しさん [2019/04/29(月) 21:07:19.95 ID:2RjR17Kk0.net]
Linuxでシリアル通信のソフトを作成しています。
codepad.org/L4BLwgAQ

コマンドを送信すると、相手が応答電文を返してくる仕様なのですが
write→readでは、うまく受信できないようです。
teratermで同じ電文を投げると、受信できるので
このソースが悪いのだと思っています。
投げて、受けるというのを上手くやるにはどうしたらいいでしょうか。
お助けをよろしくおねがいします。

281 名前:デフォルトの名無しさん mailto:sage [2019/04/29(月) 21:50:17.89 ID:AbuAGGh6a.net]
socatパクってみれば

282 名前:デフォルトの名無しさん mailto:sage [2019/04/29(月) 22:10:00.81 ID:atpu4K080.net]
>>270
とりあえずwrite()の戻り値とread()の戻り値が-1でないことから確認しようか

283 名前:デフォルトの名無しさん mailto:sage [2019/04/29(月) 22:16:47.11 ID:zdawGwopM.net]
>>272
writeはバイト数の13が返ってきます。
readはここで止まります。ずっと待ち?状態になるようで、ctrl+cで抜けるしかありません。



284 名前:デフォルトの名無しさん [2019/04/29(月) 22:19:37.72 ID:dHR449jcM.net]
Cっていいよね。
シンプルで全て見えてる。
キチンと組めば性能も素晴らしく、
ソースも分かりやすい。

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

馬鹿にはJavaがお似合いw

285 名前:デフォルトの名無しさん mailto:sage [2019/04/29(月) 22:40:41.10 ID:atpu4K080.net]
>>273
そもそもtioが未初期化
33行目にtcgetattr(fd, &tio)とかを入れて

286 名前:デフォルトの名無しさん mailto:sage [2019/04/29(月) 22:45:19.28 ID:InnqLHhB0.net]
Cのスレで用途も構造も違うJavaとか出してくるあたり相当頭悪いんだと思った

287 名前:デフォルトの名無しさん [2019/04/29(月) 23:27:52.24 ID:dHR449jcM.net]
ああ
Javaわかんね―馬鹿か

Cしかわからん馬鹿院生って感じかな(笑)

288 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 01:53:25.72 ID:AMBMNz/t0.net]
なんでスレがカテゴライズされているかも理解出来ない

289 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 08:20:44.73 ID:QYNECMA50.net]
Cが分からないってやつはコンピュータの基礎の基礎が理解できてない。
いきなりプログラミングから学ぶからそうなる。

290 名前:本田宗一郎 [2019/04/30(火) 09:04:16.26 ID:UDRlTLQRM.net]
Cしかできない奴はCを評価できない

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

院生くずれのバカニート(笑)

291 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 10:31:21.97 ID:F ]
[ここ壊れてます]

292 名前:QfKtoeU0.net mailto: いや評価はできる

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

自分の「井の中」のほうが相手より大きそうだからって
天狗になるやつこそ成長の止まった将来性のないやつだ
[]
[ここ壊れてます]

293 名前:デフォルトの名無しさん [2019/04/30(火) 11:10:18.88 ID:UDRlTLQRM.net]
できね―よ馬鹿



294 名前:デフォルトの名無しさん [2019/04/30(火) 11:15:16.30 ID:/zD1IEOE0.net]
OSなしで書ける言語はC?

295 名前: mailto:sage [2019/04/30(火) 11:39:21.09 ID:iYYZTFZo0.net]
>>283
C といえども OS なしではなにもできません

296 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 11:40:42.65 ID:FQfKtoeU0.net]
フリースタンディング環境のことだろ
ソース入力やビルドをOSなしでって意味ではなく

297 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 11:43:53.69 ID:vCAloE34a.net]
ハンドコンパイル・アセンブルするってことだろう

298 名前: mailto:sage [2019/04/30(火) 11:45:02.69 ID:iYYZTFZo0.net]
>>285
C だけではなにも出来ないのではないでしょうか、最低限アセンブラの部分が数%はあるでしょう?

299 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 12:02:29.80 ID:FWtA2SNeM.net]
クロス開発ではホスト環境とターゲットは別
小規模組込み開発ではターゲットにはOSと呼べるものが存在しない場合もある

300 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 12:17:23.14 ID:QYNECMA50.net]
>>287
CPUによってはリセットエントリから100%C言語だけで記述できるよ。

301 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 12:28:19.12 ID:AMBMNz/t0.net]
書くことはできる
紙と鉛筆さえあれば

302 名前:デフォルトの名無しさん [2019/04/30(火) 13:23:52.39 ID:JZ+qVZdl0.net]
OS無しで動くプログラムが書ける言語はC?
ってことだろうな

303 名前: mailto:sage [2019/04/30(火) 13:41:26.32 ID:iYYZTFZo0.net]
>>289
へえ!そうなんですか!多倍長演算をCで書くときキャリーフラグはどう扱うのですか?



304 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 14:20:29.60 ID:Cm5pFeJF0.net]
>>292
15bit+キャリーみたいな形で扱えばいいだけ

305 名前: mailto:sage [2019/04/30(火) 15:00:43.85 ID:iYYZTFZo0.net]
>>293
それは私もやりましたが、悲惨なコーディングになりました、キャリーを使えるのにそれを無視してCですべて記述するとか、ありえない選択だと考えています
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51

306 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 15:58:16.84 ID:QYNECMA50.net]
>>294
そりゃビットサーチとか場合によってはCPUの機能を使ったほうが速かったりシンプルに書けるケースもあるけど、それはそれでまた別の話。
それを以てC言語で書けないとは言えないよ。

307 名前: mailto:sage [2019/04/30(火) 16:35:39.02 ID:iYYZTFZo0.net]
>>295
まあ java だけで「やってしまった」OSというのもありますから…多分 JNI を使っているとは思いますけど…
C 言語だけで全部やってしまう、というのはありえなく、例外 exception の実装に有用な setjump(), longjump() ですら、CPU を叩かずにはいられない内容ですから、世に蔓延する「C言語マンセー」は、その機会があればなんとしても叩かずにはいられないのです

308 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 17:01:36.40 ID:QYNECMA50.net]
>>296
もしかしたら貴方と私は違う思想の元で仕事してるのかも。
JNIはAndroidぐらいでしか使ってない、てかそもそもJavaを使う機会が少ないような業界の人です。
なんちゃってtry〜catchのためのsetjmp系はそれでもやっぱりアセンブラを使わないC言語の範疇内な訳であって、やっぱりC言語否定の理由にはならんとです。
唯一、OSを記述する際のタスクプリエンプトだけはC言語だけで記述できず悪魔のスタック操作とコンテキスト切り替えが必要なのでアセンブラが必須だとは思いますが。

309 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 17:54:15.66 ID:Cm5pFeJF0.net]
>>296
別にsetjmp, longjmpなくてもプログラムは組めるし
Memo

310 名前:ry Mapped I/Oならデバイス制御もC言語だけで組めるだろ []
[ここ壊れてます]

311 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 18:21:31.59 ID:hc3e5D+80.net]
プログラミング素人です。
scanf関数について質問なのですが、
char str[10];
for(i=0;i<5;i++){
scanf(“%c”,str[i]);
}
として、「abcd」と入力された場合、
str[0]=‘a’
str[1]=‘b’
str[2]=‘c’
str[3]=‘d’
str[4]=‘¥’
str[5]=‘0’
となるのでしょうか?
str配列の0~3番目にa~dが格納されていることはprintfでわかりましたが、4以降は何が格納されているのか自分で調べる方法がわかりません…

312 名前:さまよえる蟻人間 mailto:sage [2019/04/30(火) 18:41:15.22 ID:lzNlO/OB0.net]
>>299
C/C++では文字は整数なんだ。整数として出力して、アスキー表を参照すれば、文字がわかるはず。

313 名前: mailto:sage [2019/04/30(火) 18:44:59.71 ID:iYYZTFZo0.net]
>>299
鋭い質問ですね…手元でいろいろ試していますが、今ひとつ事情がつかめないでいます
https://ideone.com/l3ZslT

ideone と x64/gcc/cygwin でも結果が変わってしまいます…



314 名前:さまよえる蟻人間 mailto:sage [2019/04/30(火) 18:51:26.51 ID:lzNlO/OB0.net]
str[5]以降は決まってないから調べてもあまり意味がない。多分ゴミデータ。

315 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 19:09:43.34 ID:QYNECMA50.net]
>>299
str[4]='¥0'
それ以降はゴミ

316 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 19:30:23.83 ID:CZMZfk1L0.net]
>>303
str[4]は'\n'じゃね?

317 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 19:42:59.90 ID:ZdpyyptHa.net]
まあ改行入れたら改行ですね

318 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 00:16:42.15 ID:pM2+GGDK0.net]
自作関数内のエラー時にerrnoに値をセットするのってマナー違反ですか?

319 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 00:27:56.20 ID:Lv+8X8zta.net]
入れられるもんなら入れてみろ

320 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 01:10:53.33 ID:dGckAS/m0.net]
信長 入れられないなら殺してしまえそのプロセス
秀吉 入れられるまで仕様変更を待とう
家康 俺が直してやる!

321 名前:306 mailto:sage [2019/05/01(水) 02:42:38.43 ID:LlVhs4fx0.net]
https://ideone.com/JeNdi9
こういうエラー処理を書きたいんですが

322 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 13:05:10.79 ID:Vm5gAWGsa.net]
>>305
str[4]が改行コードの\nだとして
str[5]は\0にはならないの?

323 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 14:38:29.13 ID:pGaFGHQ6a.net]
>>310
それは明らかになりません。
null文字入れるのは大抵はこっちの役目です。



324 名前:デフォルトの名無しさん [2019/05/01(水) 14:41:59.38 ID:yF2N0E1tH.net]
>>304
%c は空白文字は入らないのでは?

325 名前:デフォルトの名無しさん mailto:sage [2019/05/01(水) 15:19:37.49 ID:pGaFGHQ6a.net]
%cは文字は全部入る。
受け付ける文字をはっきりさせたいなら[]使うのがよい。

326 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 12:01:07.73 ID:oq2ExZVd0.net]
printf()のペアっぽいからという理由で
scanf()を使わせる初心者本をこの世から駆逐すべき

327 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 12:52:42.24 ID:Yg4L14jR0.net]
使い方を熟知している人が使う分には問題ないが
「良い子はマネをしてはいけません」の典型だな

328 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 13:24:17.15 ID:+EePt9KB0.net]
初心者はただ値が入力できりゃ楽しいんじゃね

ついでにscanfはかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる

329 名前:デフォルトの名無しさん [2019/05/02(木) 15:41:08.09 ID:jQNzLmJja.net]
昔のマイコン的なものだと暴走したりしてなお良い。
core dump してるようじゃまだまだ安全過ぎる。

330 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 19:38:22.59 ID:lQcGaGZC0.net]
たしかにscanfが危険なものだと知った時にどうやってfgetsに置き換えるか考えたの思い出した

331 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 21:18:22.90 ID:H376nx5x0.net]
>>287
その数%のアセンブラの部分を、おまえさんは「OS」と呼ぶのか?

332 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 21:20:29.21 ID:H376nx5x0.net]
>>314
scanfの仕様をロクに調べもせず自分の頭で考えもせず
どっかの受け売りを初心者に吹聴する無能老害こそ
この世から駆逐すべきだろうが

333 名前:デフォルトの名無しさん [2019/05/02(木) 21:21:11.50 ID:TaSBDpemM.net]
>>319
ヨコからスマンけど
そゅ意味じゃないのが
理解できないほどの馬鹿は
ここにくるべきではない



334 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 21:22:02.02 ID:H376nx5x0.net]
>>315
「よい子は真似をしてはいけません」と言われる芸当をやっているプロになろうって人には当てはまらない

335 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 21:24:27.49 ID:H376nx5x0.net]
>>321
おまえさんこそ>>283からの話の流れを読んでるか?
人を馬鹿呼ばわりした自分の発言に責任を持てよ

336 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 21:25:23.96 ID:H376nx5x0.net]
匿名掲示板だから逃げたければ逃げられるが
おまえさんの人間性の問題が変わるわけではない

337 名前:デフォルトの名無しさん [2019/05/02(木) 21:34:15.84 ID:TaSBDpemM.net]
馬鹿丸だし(笑)

論文ゼロの院生くずれ馬鹿ニート
という雰囲気プンプンだな(爆)

338 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 21:53:25.96 ID:TlCaXbcx0.net]
院生とかめっちゃ高評価じゃんw

俺には大学にコロコロコミックを持ってきて、全ての人間が敵に見えて毎日発狂してた同級生の江○君と被ってしまう。
頭はすこぶる良いんだけど、頭が弱い残念なアイツの雰囲気がプンプン

339 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 21:55:19.32 ID:H376nx5x0.net]
学歴コンプレックスまる出しだな
頭隠して尻隠さずw

340 名前:デフォルトの名無しさん [2019/05/02(木) 22:04:26.88 ID:TaSBDpemM.net]
院生の意味が理解できない馬鹿(笑)

341 名前:デフォルトの名無しさん [2019/05/02(木) 22:05:27.60 ID:TaSBDpemM.net]
学歴など無意味
馬鹿は馬鹿(笑)

342 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 22:06:18.25 ID:BLoepDOP0.net]
>>319
何を言いたいのか意味不明w

343 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 22:22:28.19 ID:H376nx5x0.net]
効いてる効いてるw
突然論文ゼロとか言い出すカモは扱いやすすぎ



344 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 00:28:15.71 ID:ykdjIw3IM.net]
#include <stdio.h>

int main(void){

remove("https://mevius.5ch.net/test/read.cgi/tech/1554171817/");

return 0;
}

345 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 03:22:53.97 ID:l9gwftmb0.net]
文字列を消しても実態が消えないのでは

346 名前:デフォルトの名無しさん [2019/05/03(金) 07:52:51.95 ID:EnpL9vkxM.net]
Cできるけどアセンブラできない、
ってのはCもできないってことだ。

347 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 09:31:51.08 ID:Adh7HeMA0.net]
アセンブラからCに行ったらアセンブラでやってたアルゴリズムがCで表現できなく、非常にもどかしくて・・・

348 名前: mailto:sage [2019/05/03(金) 10:16:06.44 ID:ZD3cPA9Q0.net]
>>335
それは初耳、いや、どういうのに手こずったのか参考に教えていただけませんか?

349 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 17:51:44.54 ID:VHrwonhY0.net]
出来る出来ないっていう話なら、基本Cできるんじゃないかな。
CPU固有のブルック転送命令とかそんなのを除いて。
(それすら別にできるけどね。)
1命令でできてたことがめんどくさくなるってものならあるかも。

350 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 18:09:15.33 ID:Mu7G7jjV0.net]
アセンブラで作るにしてもでもアルゴリズムで実装しているならCでも出来るんじゃないの?

351 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 18:10:41.96 ID:3HjiUXGl0.net]
プラットフォーム依存の問題は言語じゃなくてコンパイラより下が解決するわけでさ、それをできると言っていいならなんでもできると思うよ。

352 名前: mailto:sage [2019/05/03(金) 18:51:30.00 ID:ZD3cPA9Q0.net]
>>335
一つ思い出しました、キャリー

353 名前:フラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね
ローテートとかシフトとか
[]
[ここ壊れてます]



354 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 19:20:32.29 ID:Qo5d3PXm0.net]
>335
キャリーフラグが無くてオーバーフロー/アンダーフロー判定が面倒だとか、
ビットシフトはあってもローテーションが無いとか。
ジャンプ命令使うとパイプラインが初期化されるからなるべく使うなと聞いたのに
逆汗見たらジャンプしまくってるじゃないかとか。
8/16bit時代のアセンブラは1バイト、1ステート削って処理速度稼いでたんで
上記の差を補う処理が無駄に思えて・・・。
かといってインラインアセンブラ使うのはなんか違うと(インライン使うと最適化されないとも聞いてたし)。
それならアセンブラでCから呼べる関数書いた方がすっきりするとか。

20世紀時代のことだ。

355 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 19:43:11.87 ID:EWn4tN7a0.net]
マシン語でコード書いてるときはオンレジスタ思考なのに
当時のCはデフォautoつまりオンメモリなので
ああ、やはりマシン語よりは速度が落ちる言語なんだな
コンパイラ言語とインタプリタ言語のような違いが
もう1つあるんだなって思っていた

356 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 20:21:30.59 ID:B4eLqFJ00.net]
スパゲッティなものを書いてるならともかく、真っ当にサブルーチン化してたら必要悪としてレジスタ志向は早々に諦めてたわ。
局所的に最適化するならそれは別問題として解決してた。

357 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 20:27:04.09 ID:EWn4tN7a0.net]
構造化なんか眼中になかったね
速度こそ純粋で美しい法律だった

358 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 20:31:26.00 ID:4Ii/FXBd0.net]
>>340
> 一つ思い出しました、キャリーフラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね
それはアルゴリズムと言うより実装の話かと

359 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 20:52:43.47 ID:EWn4tN7a0.net]
PC9801のVRAMを1ドットスクロールさせるのなんか
キャリー使って書いてたのをキャリーなしで書き直させられるのは悲しかった

360 名前: mailto:sage [2019/05/03(金) 21:19:31.21 ID:0u/4Gvfl0.net]
>>345
>アルゴリズムと言うより実装の話
いや、それは不思議な分類だと思います、DES/AES などはローテート・シフトがそのままアルゴリズムになるのでは?

361 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 22:27:22.12 ID:4Ii/FXBd0.net]
>>347
そのアルゴリズムにキャリーフラグなんて出てこないでしょ?

362 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 22:32:04.75 ID:EWn4tN7a0.net]
アルゴリズムという特定ワードに囚われて用語の定義の話に逸れていくつまらん展開だ

363 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 04:19:37.51 ID:qzgt3pmZ0.net]
文字列入力を受け付けて、それをstrという変数に代入する…というプログラムを書きたいのですが、知りたいことがあって以下のような条件を課させていただきます。

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


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

このコードだと、「abcd」と入力してEnterを押しただけでは、出力されません。(50文字入力されるまで入力受け付け状態から遷移しない)
どのように改良すればよいでしょうか?



364 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 05:12:15.70 ID:Yh80Q70x0.net]
入力される度に文字のチェックしてみれば。

365 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 05:15:36.04 ID:eVIwB2YR0.net]
>>350
宿題は自分でやれ

366 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 05:21:50.50 ID:I31OC90J0.net]
何故誰もscanf("%c", str[i])に突っ込まないのか

367 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 05:39:39.99 ID:RAMEL17i0.net]
>>350


368 名前:「入力処理」のforループで、「50文字入力されたら」を判定してるけど、
もう一方の終了条件「Enterが押されたら」を判定してないからでしょ。
1文字受け取るごとに、Enter '\n' ならループを抜ける、をやらなきゃ。
というわけで >>315 に至る。

>>353 このスレッドの伝統かと。>>299 以下を参照のこと。
あちらはスルーしたのに、こちらでツッコむのは抵抗感がある、みたいな。
[]
[ここ壊れてます]

369 名前:354 mailto:sage [2019/05/04(土) 10:20:54.58 ID:RAMEL17i0.net]
誤: というわけで >>315 に至る。
正: というわけで >>351 に至る。

315 を確認したところ、まるっきり見当違いでもなかったね。

370 名前:デフォルトの名無しさん [2019/05/04(土) 10:47:02.91 ID:lguQ1Ppja.net]
>>354
>>299は見逃していたなあ。空目だな。

371 名前:デフォルトの名無しさん [2019/05/04(土) 11:41:09.49 ID:yT0QTmUja.net]
>>350
もし宿題が本当に scanf(“%c”,str[i]) と書いてある場合は先生が間違えてるので「 scanf(“%c”, &str[i]) ですよね?」とツッコミを入れてみると良い。

そうすると君はできる学生と思われて成績が上がるるか、または気に入らんやつと思われて成績が下がると思う。

372 名前:デフォルトの名無しさん [2019/05/04(土) 13:40:22.89 ID:tOD9kuurM.net]
そういえば東大では今でも
C言語が必修なのか?

まじ時代遅れの馬鹿だと思ってたら、
Cしかできない在日の馬鹿教員が
いるのだとか

373 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 13:51:43.16 ID:k+B84EwL0.net]
学歴コンプレックスの人?



374 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 14:16:41.02 ID:vXlxEQ1E0.net]
参照型とか出てくるのにそもそも参照がなにかも理解出来てないにわかオブジェクト指向が増えるよりよっぽどマシよ
なんの言語とは言わないけども
C言語なら理解しなければ先に進まないから

375 名前: mailto:sage [2019/05/04(土) 14:19:50.76 ID:7fnHNdb20.net]
>>358
C が分からないようでは話にならないのでは?

376 名前:デフォルトの名無しさん [2019/05/04(土) 14:47:16.31 ID:tOD9kuurM.net]
>>361
トヨタ系の研究所には
Cの分かる研究員がもういないのです
研究には全く支障がないです

組込みやってる高卒やFランが
Cをやるべきでしょ?

377 名前: mailto:sage [2019/05/04(土) 14:55:00.73 ID:7fnHNdb20.net]
>>362
それは多分ありえない話でしょうね、なぜならば C は計算機言語の基本で、各種書籍ではアルゴリズムの記述に C を使うものが大半ですから
本も読めない人がトヨタの研究者とか、あなたの空想の話なのでは?

378 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 15:22:49.59 ID:Yh80Q70x0.net]
アルゴリズムの勉強はpythonがいいよ

379 名前: mailto:sage [2019/05/04(土) 15:25:54.07 ID:7fnHNdb20.net]
>>364
python で二分木の実装とかできますか?

380 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 16:05:03.07 ID:Yh80Q70x0.net]
>>365
できますん

381 名前:デフォルトの名無しさん [2019/05/04(土) 16:07:19.80 ID:LvYM7SOrM.net]
>>365
そんなのはFランの仕事でしょ?

382 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 16:13:20.77 ID:8Q7/PMC20.net]
論文の次はFランか、哀れだなw

383 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 16:49:12.48 ID:vXlxEQ1E0.net]
やっぱり相当コンプレックスの塊で頭悪いんだろうなぁ



384 名前: mailto:sage [2019/05/04(土) 18:28:05.43 ID:7fnHNdb20.net]
>>366
本当ですか?ポインタがない python では無理なんじゃないですか!?

385 名前:デフォルトの名無しさん [2019/05/04(土) 18:39:36.30 ID:yT0QTmUja.net]
pythonって参照ないの?

386 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 18:43:01.66 ID:gINSNBZZa.net]
真面目に言うとpythonは基本的に全部参照渡しだね。
参照したものを直接いじれるかというとそうでない場合があるけども。

387 名前: mailto:sage [2019/05/04(土) 19:05:41.64 ID:7fnHNdb20.net]
>>372
なるほど、ではユーザー定義の型は自動的に参照扱い、すなわち Java みたいなかんじなんですね
であれば苦労すれば二分木を実装できますね、大変失礼いたしました

388 名前:はちみつ餃子 mailto:sage [2019/05/04(土) 19:18:51.61 ID:21Of2ELD0.net]
>>370
Python に限らず動的型の言語の多くは変数に値を入れるんじゃなくて、
オブジェクトと変数の間に束縛 (bind) を作ることで成り立ってる。
辿ることでオブジェクトを参照するんだ。 実質的にポインタだよ。 むしろポインタしかない。

(小さい値 (小さい数値とか文字とか) はアロケーションを抑制するためにそのまま
ワードに突っ込むような最適化をする言語 (処理系) もあるけども。)

389 名前: mailto:sage [2019/05/04(土) 20:22:17.94 ID:7fnHNdb20.net]
>>374
Java ならば boxing でヒープにとる値とスタックに取る値とをある程度(意識せずに)変換できますね(そういう C/C++ like な意識が皆無ではない、という意味)
ただし、二分木に関してはいいたいことがまだあって、「本物の」二分木は二重ポインタ(ポインタのポインタ)が必要なのではないか?と思っています
さすがに Java には二重ポインタはない、そんな用途の言語じゃない
Python や ruby にはあるのでしょうか?

390 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 20:55:58.63 ID:cZ5M6KFWa.net]
二重ポインタを何に使う?
Cだと引数でノードのオブジェクトを返す辺りか?

391 名前: mailto:sage [2019/05/04(土) 21:01:18.06 ID:7fnHNdb20.net]
>>376
ノードを追加する関数add の引数を
add(&root, Object)
ってするでしょ?&root ってことは、struct *node のアドレス、すなわち struct node ** が必要なのではないかと

392 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 21:43:09.25 ID:cZ5M6KFWa.net]
>>377
わからんが、Cでも戻り値でポインタを返せばいいんじゃないか?

393 名前:はちみつ餃子 mailto:sage [2019/05/04(土) 21:46:08.02 ID:21Of2ELD0.net]
>>375
参照を持つオブジェクトへの参照を持てるんだから、事実上の二重ポインタとして使えるよ。



394 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 21:57:52.42 ID:8Q7/PMC20.net]
二重までは使うんだよなあ
三重をなぜ使わないか、説明できるか?w

395 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 22:09:57.55 ID:RtDHzLy60.net]
ガベージコレクションと裸のポインタって相性が悪いような

396 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 22:15:35.23 ID:eVIwB2YR0.net]
>>378
2個返したい時とか、戻り値は成功かどうかのコードを返したいとか

397 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 23:07:46.23 ID:cZ5M6KFWa.net]
道はいろいろあると思うが、せっかくあるんだから構造体使って皆くるんじゃえと思うよ。

398 名前:デフォルトの名無しさん [2019/05/05(日) 00:20:41.66 ID:nwgMKC8Ra.net]
微妙にスレチのように思うので続きはJava初心者のスレでやった方が良いのではないか?

まあ人に聞かなくても Java を勉強して Java の API のソースを読めばそういうのをどうしているのかは何れわかると思うけどね。

399 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 00:21:53.66 ID:tvdtPjB+0.net]
Ruby での、Jaggy 配列は、

ary = [ ] # 配列の配列

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

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

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

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

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

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

これを、shallow copy (浅いコピー)と呼ぶ(同一インスタンス)。
new して、別のインスタンスを作ることを、deep copy (深いコピー)と呼ぶ(別のインスタンス)

400 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 00:37:14.86 ID:RPhfdkos0.net]
>>385
馬鹿は消えろ

401 名前: mailto:sage [2019/05/05(日) 08:54:51.63 ID:3EWrT4Pn0.net]
>>378
それは無駄な代入が発生するでしょう?

402 名前: mailto:sage [2019/05/05(日) 09:01:10.92 ID:3EWrT4Pn0.net]
>>380
余裕で三重ポインタなどほいほいと使いますよ
https://mevius.5ch.net/test/read.cgi/tech/1434079972/26
void prep_exe(char *sttp, char **path, char ***argv)
char **argv を使うことが理解できるのだったら「argv のアドレスを渡す」みたいな場合に渡された関数側では三重ポインタを使うことになるでしょう

403 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 09:04:36.94 ID:hoO1o10+0.net]
>>388
それcodepadだろ? 使いさえすればいいって話じゃなくて



404 名前: mailto:sage [2019/05/05(日) 09:08:14.08 ID:3EWrT4Pn0.net]
>>389
無論使いさえすればいい、というわけではなく、この例では小さなシェルを実装しており、シェルのパイプ機能を実装するのに三重ポインタを使ったのです

405 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 09:21:39.41 ID:2T/oydys0.net]
>>387
引数を介すと代入が減るってこと?

406 名前: mailto:sage [2019/05/05(日) 09:47:47.39 ID:3EWrT4Pn0.net]
>>391
代入命令が増えるという意味ではなく、「同じ値」なのに代入してしまう、という作業が >>378「戻り値でポインタを返」す方式の書き方だと不可避です

407 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:05:07.93 ID:bV6goPu10.net]
呼び出しの前後で、ptrの値が 同じかもしれない、場合よっては変わるかもしれない関数

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

うーんどっちも使うな…

408 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:28:11.80 ID:2T/oydys0.net]
>>392
じゃあ、一時変数に代入しとけば?

409 名前: mailto:sage [2019/05/05(日) 10:29:23.05 ID:3EWrT4Pn0.net]
>>393
前者
>ptr = func1(ptr, opt); 
は初心者用で、>>392 のいう無駄な代入が含まれています、二重ポインタがわかるのなら後者にするべきです

410 名前: mailto:sage [2019/05/05(日) 10:30:14.08 ID:3EWrT4Pn0.net]
>>394
シンプルな記述ができるのに、わざと複雑な書き方にするのは問題なのでは?

411 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:32:32.58 ID:2T/oydys0.net]
>>396
じゃあ、戻り値そのまま使えば?
mallocは使うんでしょ?

412 名前: mailto:sage [2019/05/05(日) 10:33:46.84 ID:3EWrT4Pn0.net]
>>397
その場合無駄な代入が発生しますね、>>393 がいい例を示しています

413 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:35:01.06 ID:bV6goPu10.net]
エラー伝達に NULL を使う realloc は即代入するとお漏らししちゃうし
あれ、なん引数書き戻しにしなかったんだろう? 素朴な疑問



414 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:35:57.12 ID:2T/oydys0.net]
>>398
代入されているのかされていないのか、わからない方が良いってこと?

415 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:36:08.55 ID:bV6goPu10.net]
×あれ、なん引数書き戻しに
○あれ、なんで引数書き戻しに

416 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:41:29.60 ID:2T/oydys0.net]
>>399
正直、nullが来た時点で終わってるしなあ…。
まあでも一時変数使うのが筋だと思いますよ。戻り値でも引数でも同じこと。

417 名前: mailto:sage [2019/05/05(日) 11:25:51.36 ID:3EWrT4Pn0.net]
>>400
ちがいます
代入するのか代入しないのかは malloc() したかしなかったかにかかっています。
代入は malloc() したとききだけにすればよく それが >>393 の func2(&ptr, opt); の書き方
一方 >>393 ptr = func1(ptr, opt); は malloc() したかしないかにかかわらず代入を行います、これは無駄な代入を含みます

418 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 11:31:24.71 ID:2T/oydys0.net]
>>403
だから、関数の内部的に何してるのかわからんのが良いってことじゃない?

419 名前: mailto:sage [2019/05/05(日) 11:37:36.53 ID:3EWrT4Pn0.net]
>>404
着目点はそこにはありません。関数による記述で内部を隠蔽するのが目的ではありません
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…@、にかかっており
>>393 ptr = func1(ptr, opt); は@を記述できる可能性が皆無、一方
>>393 func2(&ptr, opt); は@を記述できる可能性がある、というわけです

420 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 11:38:01.66 ID:orE8GGyod.net]
>>393
前者の方が好ましい
2重ポインタなんて最適化の妨げになるものは、それしか使えない場面でのみ使うべき

421 名前: mailto:sage [2019/05/05(日) 11:44:46.28 ID:3EWrT4Pn0.net]
>>406
非常に大きな二分木(ノートが1億個)があって、そのはるか先端で malloc() してそこで代入すればいいだけなのに、
その先端から root に戻ってくる途中の3

422 名前:0箇所ほどで、軒並み全部のノードで「必要のない無駄な代入」をするのですか?

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

この二分木を実装する、というのがまさしく「それしか使えない場面」なのですよ
[]
[ここ壊れてます]

423 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 11:45:42.03 ID:2T/oydys0.net]
>>405
つまり、後者でmallocしてnullが返った時はそれを代入するってことですか?同じじゃん。



424 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 11:47:06.67 ID:2T/oydys0.net]
>>407
二分木のコストってのは比較であって代入じゃないと思いますよ。
まあアルゴリズムの一般論としては。

425 名前: mailto:sage [2019/05/05(日) 11:53:15.92 ID:3EWrT4Pn0.net]
>>408
>>393 func2(&ptr, opt); では
malloc() して null が返ってきたときは、例えば何もしない、ということはできますね

でも >>393 ptr = func1(ptr, opt);
は、malloc() しようがしまいが代入してしまいますね、これは「やる必要のない無駄な代入」が含まれることになり、好ましくないです
>>393 ptr = func1(ptr, opt); の記述法は二分木を最初に習うときに、この記述法で理解を促すという意味では有用であっても、
いつまでもこれで書いているようでは進歩していない、もっといえば怠惰である、と考えています

426 名前: mailto:sage [2019/05/05(日) 11:55:53.32 ID:3EWrT4Pn0.net]
>>409
しかし無駄な代入を放置してよいというわけではないでしょうね、削れるところは削るべきです
単純二分木よりさらに改良された平衡二分木(AVL木、赤黒木等)を紹介する書籍では、最初から >>393 func2(&ptr, opt); で記述されていますよ

427 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 11:57:28.30 ID:2T/oydys0.net]
>>410
じゃあ隠蔽しろという話なんじゃないの?
関数の中で成功失敗を判定して外にnullは返すな入力時のままにしとけ、という関数。

428 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 11:58:36.27 ID:2T/oydys0.net]
>>411
代入回数比較してよ。頼むよ。

429 名前: mailto:sage [2019/05/05(日) 12:05:45.99 ID:3EWrT4Pn0.net]
>>412
ちがいますね
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…@、にかかっています。

>>413
>>407 に書いておきました、1億ノードの二分木にて各ノードが最適に配置されているとして、削ることのできる代入は malloc() 一回に対して 30 個の代入になります
>>393 ptr = func1(ptr, opt); では 1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
代入のコストは大したことがない、にしても、アルゴリズムを正確に記述できないのは問題ですね
洗練された記述とはそういうものではないでしょうか

430 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 12:48:51.19 ID:2T/oydys0.net]
>>414
いや、mallocがnull返した時はいれないんでしょ?
成功か失敗かじゃないの?呼んだかどうかじゃなくて。

431 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 12:52:54.83 ID:2T/oydys0.net]
仕事では戻り値に成功失敗が入ってオブジェクトのポインタは引数に来るような関数は使うけどさ、
結局どっちもチェックするよ。信じられねえもんな。

432 名前: mailto:sage [2019/05/05(日) 13:12:30.38 ID:3EWrT4Pn0.net]
>>415
malloc() が成功したか失敗したかは、今の話には関係ありません
今関係があるのは、
malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…@
です

433 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 13:42:25.11 ID:2T/oydys0.net]
>>417
じゃあ、絶対代入するってことだろうよ。
引数に渡したポインタに。ポインタを。



434 名前: mailto:sage [2019/05/05(日) 13:51:49.48 ID:3EWrT4Pn0.net]
>>418
malloc() したときは代入しますよ、でも malloc() しないときは代入なんかせず、そのまま呼び出し元に返るだけです
それが>>393 ptr = func1(ptr, opt); 方式と絶対的に違うのです

435 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 13:55:35.88 ID:2T/oydys0.net]
>>419
戻り値はvoidってこと?

436 名前: mailto:sage [2019/05/05(日) 14:02:45.71 ID:3EWrT4Pn0.net]
>>420
>>393 func2(&ptr, opt); 式なら void もありえます

437 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 14:08:06.37 ID:2T/oydys0.net]
>>421
いや、必須なのでは?

438 名前: mailto:sage [2019/05/05(日) 14:11:38.90 ID:3EWrT4Pn0.net]
>>422
いいえ、実際に実装するならば、エラーを伝達する手段として返り値を準備することは大いにありえるでしょうね
void が必須ではありません
必要な代入なら使えばいい、でも
>>393 ptr = func1(ptr, opt);
方式は不必要な代入があり、単に二重ポインタを使用して記述すればこれは除去できるので、
>>393 ptr = func1(ptr, opt);
を書くのは問題だし、これを書く人は頭を使っていない、と判断します

439 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 14:33:08.37 ID:bV6goPu10.net]
異常は戻りをNULLにするパティーンで 
 node_t *func3(node_t**, ...)

正常だった場合に ptr = func3(&ptr, opt); と書けるしw (無駄な努力の可能性

440 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 14:34:34.27 ID:bV6goPu10.net]
って書いたけど鼻から悪魔踏みそうな嫌らしさがあるな…

441 名前: mailto:sage [2019/05/05(日) 15:03:58.07 ID:3EWrT4Pn0.net]
>>424
そのパターンでは、異常値 NULL をうっかりノードに登録してしまうと、そのノードより下が浮いてしまい危ないですね、ま、異常系をミスったままリリースしてしまうことも私はよくやりますけど

442 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 15:42:24.13 ID:8x8syc+Fa.net]
>>423
いや、必須でしょ?代入消せるんだから。消さないと。

443 名前: mailto:sage [2019/05/05(日) 17:54:28.38 ID:3EWrT4Pn0.net]
>>427
言葉尻を捕らえて攻めたつもりになっているようですね
「すべての代入を消去できる」なんていってませんよね

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

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

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

は不適当な書き方だ、とこれまで首尾一貫して述べているのです



444 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 18:13:23.13 ID:bV6goPu10.net]
423の文意は
「void が必須なわけではなく
 引数と同じ型のポインタを戻すことはせずに、別の目的の何か、たとえばエラーコードとして int を戻す
 なんてのはアリでしょ?」
ってことだと思うけど

445 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 18:42:49.42 ID:dOx23ziba.net]
returnしちゃだめでしょ
代入が駄目ってくらいだから

446 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 18:56:43.02 ID:bV6goPu10.net]
「代入不要なケースでも代入記述を要求するのはよろしくない」スタイルの延長だと
戻り値評価も破棄可能ならそうすべき って話か

447 名前: mailto:sage [2019/05/05(日) 19:00:00.98 ID:3EWrT4Pn0.net]
>>430
どんな代入もだめだとは主張していませんね…

>>393 ptr = func1(ptr, opt);
方式は不必要な代入があり、単に二重ポインタを使用して記述すればこれは除去できるので、
>>393 ptr = func1(ptr, opt);
の代入が駄目だとはいってきていますけれども

448 名前:はちみつ餃子 mailto:sage [2019/05/05(日) 19:03:30.45 ID:TxpPZKKr0.net]
>>407

449 名前:はちみつ餃子 mailto:sage [2019/05/05(日) 19:13:46.27 ID:TxpPZKKr0.net]
あ、ごめん、ミスって文章を書く前に投稿してもうた。

>>407
あらためて確認するが、この代入を「無駄」としているのはアルゴリズムの表現の上では不要なことをしているという
意味の上での無駄であって、性能上の無駄という意味ではないんだね?
そして、アルゴリズムを正しく表現する上では (ときには二重・三重のも含めて) ポインタが必要だと。

450 名前: mailto:sage [2019/05/05(日) 20:16:09.59 ID:3EWrT4Pn0.net]
>>434
>性能上の無駄という意味ではないんだね?
性能の上で分析するとなると、間接参照にてデータをロード、ストアするコストと値をストアするコストを天秤にかける、ことになりますね
なるほど、その点を言いたくて、でも言いたくなくて、しつこく絡んでいたのですか…

私は二重ポインタでの表現の方がトータルでお得だ、とは思ってはいますが、これまで表に出ている私の発言は、あえてそこには踏み込まず(だって性能の話はうかつに断言できませんからね…)、
おっしゃるとおり「アルゴリズムの表現の上では不要なことをしている」に留まっています

451 名前:はちみつ餃子 mailto:sage [2019/05/05(日) 20:57:45.43 ID:TxpPZKKr0.net]
>>435
たとえば数学上の表記なら「A=1 であり B=1 のとき A=B は真である」と「1=1 は真である」には何も差が無い。
途中で名前を付けるのは人間に対する便宜であって、無駄な「操作」は存在しない。

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

C の低級な世界でまともな意味論を表現しようとするのがそもそもの間違いだろう。

452 名前: mailto:sage [2019/05/05(日) 21:02:18.49 ID:3EWrT4Pn0.net]
>>436
>「ポインタが無い言語では表現できない」というわけではないよ。
それは理解しています、なぜなら
Java での二分木の実装を検討したことがある(探せば2ch過去ログにあるかもしれません)
Java にはポインタはありませんが、実装できるかできないか、といえば「できる」の方に入りますね

453 名前:はちみつ餃子 mailto:sage [2019/05/05(日) 21:54:26.85 ID:TxpPZKKr0.net]
>>437
そこまでわかっているのなら、
「代入しない」と「同じ値を代入しなおす」が意味論的に等しいということがどうしてわからないんだ。



454 名前:デフォルトの名無しさん [2019/05/05(日) 23:34:40.25 ID:RXFRr1FQ0.net]
C言語のプログラム内で確保していいメモリってユーザー空間の仮想メモリ上限いっぱいまで取っていいの?
複数の変数a, b, c, ・・・の値を表示するだけのプログラムを時系列に並べて考えてみるんだけど

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

こんな感じなんだろうけど
上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?

455 名前:はちみつ餃子 mailto:sage [2019/05/05(日) 23:38:14.20 ID:TxpPZKKr0.net]
>>439
いいけど、もっと効率的な方法があるならそれに越したことは無いっていうそれだけの話

456 名前:デフォルトの名無しさん [2019/05/05(日) 23:41:29.98 ID:RXFRr1FQ0.net]
簡潔に書くと
安全のためにはどこまでメモリを使っていいの?
そのメモリの大きさはユーザー空間の上限と同じなの?
という室問なのに長くなってしまた

457 名前:デフォルトの名無しさん [2019/05/05(日) 23:47:50.76 ID:RXFRr1FQ0.net]
>>440
ありがとう
ただ初心者なので効率性を目指すにはきつい部分が出てくる
そうなるとメモリの残量を監視する、つまり残量の値を取得する必要があるわけだけど
これは一般的にはwindowsのAPIを使うのが普通なの?
(そんなものがあるのかは知らない)

458 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 23:52:54.47 ID:RPhfdkos0.net]
>>442
スタックとヒープという概念は知ってる?知らなければまずそれを調べてみて。
それと、初心者なら効率を求める前に正しくメモリ管理を扱えるようになる必要があるが、その時点で残量は気にする必要はないぞ。

459 名前:デフォルトの名無しさん [2019/05/05(日) 23:59:16.82 ID:RXFRr1FQ0.net]
FIFOだとかナントカ程度にしか。
「〜〜領域」という幾つかの用語がOSとかの環境が違っても
全く共通のものなのかよく分からないから正直スルーしてる

460 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 05:38:27.60 ID:wr9bFPpT0.net]
>>414
>1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
2^10 = 約1,000 千
2^20 = 約1,000,000 百万
2^30 = 約1,000,000,000 十億

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

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

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

読み込んだデータを使ったら、すぐに捨てないといけない。
ユーザー空間に、空きを作らないといけない

461 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 06:20:53.21 ID:Geq8Gq1G0.net]
>>445
いつものRubyバカだろ。いい加減な知識でC言語のメモリの話題に口を挟むのはやめろ。この板になれている者からすれば「またいつものか...」ですむが、初心者にとっては害悪でしかないから消えろ。

462 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 06:25:32.64 ID:Geq8Gq1G0.net]
>>444
組み込みとかの特殊な環境では例外もあるけど、基本的には環境によらずC言語で必須の概念だからスルーせずにちゃんと調べるべき。

463 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 08:39:59.60 ID:s1ulBxFy0.net]
>439
>上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
他のプロセスがスワップ起こして重くなるから止めろって言いたい。



464 名前:デフォルトの名無しさん [2019/05/06(月) 10:14:49.95 ID:Om5TJBQR0.net]
>>447
うん調べてみるよ
ありがとう

>>448
そんな視点もあるのか
他のプロセスも考慮しないといけない
思ったよりも数段以上やっかいだな

465 名前:デフォルトの名無しさん [2019/05/06(月) 10:19:59.43 ID:Om5TJBQR0.net]
>読み込んだデータを使ったら、すぐに捨てないといけない

データをガンガン読み込んでいくようなプログラムだと「使ったらすぐ捨てる」のが鉄則か

466 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 10:40:24.77 ID:F7BEaxMm0.net]
>>439
ユーザープロセスなのでカーネル空間はマッピングされないよ。プロセス管理のための領域はカーネル空間に多少は確保されるとは思うけど、それはユーザープロセス用ではないし。
ページサイズの関係で効率的に確保できるかどうかは別問題だけど仮想メモリ領域いっぱいまで取れるか否かと言えば取ることはできる。
実際にそんなことしたらスワップ発生しまくりでまともに動かないとは思うけど。

467 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 12:43:21.39 ID:53K/0wkW0.net]
実装としてはだいたいcopy on writeだから、確保だけだったら特に問題発生しないよ

468 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 16:08:26.90 ID:95XsbNbMM.net]
>>451
どのOSなのか明示してくれ。
少なくともlinux 32bitは3GB以降はkernel空間にマッピングされてるだろ

469 名前:デフォルトの名無しさん [2019/05/06(月) 21:20:46.06 ID:lSipB+Y80.net]
配列にある16進数アスキーを
整数型変数に数値として入れたいのですが、上手くいきません。
valの値をprintfで出力しても「0」になります。

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


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

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

よろしくお願いします。

470 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 21:29:36.69 ID:v87Zm/5a0.net]
sscanf の %x は、文字列で記述された数字+アルファベットの列を 16進数として抜き出す
sscanf("10", "%x", &val); → val の値は 10進で16 となる

0xDC 0x18 の並びから どういう整数値にしたいんだろうか?

471 名前:454 [2019/05/06(月) 21:38:34.55 ID:lSipB+Y80.net]
>>455
回答ありがとうございます。
val=0xDC18
という感じで取り出したいです。

472 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 21:40:18.62 ID:v87Zm/5a0.net]
>>456 それなら
val = rbuf[5]; じゃあかんの?

473 名前:454 [2019/05/06(月) 21:50:08.40 ID:lSipB+Y80.net]
>>457
ありがとうございます。そういうことか・・・
下記で上手くできました!

val= rbuf[5];
val = val << 8;
val |= rbuf[6];



474 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 21:54:12.13 ID:v87Zm/5a0.net]
>>458 解決してよかったね
0xDC 0x18 の並びから
(最低でも32bit長の整数)0xDC18 が欲しかったということだね

475 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 21:55:43.20 ID:v87Zm/5a0.net]
(俺がちゃんと >>456 を読めてなかった説 val=0xDC18 って書いてるやんけw)

476 名前:デフォルトの名無しさん [2019/05/06(月) 22:06:19.06 ID:NYoOX9LAa.net]
>>454
> rbuf[5]の中身は「0xDC」
> rbuf[6]の中身は「0x18」でした。(printfで出力してみたところ。)

だったらそれはASCIIではないよね。

477 名前:デフォルトの名無しさん [2019/05/06(月) 22:08:02.81 ID:NYoOX9LAa.net]
などと、ゆっくり書いていたら既に解決か・・・

478 名前:デフォルトの名無しさん [2019/05/06(月) 22:09:16.82 ID:lSipB+Y80.net]
>>460
>>461
ありがとうございます。
お陰様で解決できました。
勝手にASCII、文字列と勘違いしていたのがよくなかったです。

479 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 06:48:35.98 ID:/Z9tG+PY0.net]
ASCII は、7 bit キャラだろ

欧州文字コードなら、8 bitとか

480 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 15:31:36.79 ID:gGAOuhJk0.net]
BASIC時代 文字→文字コード変換関数が ASC(文字) だったな。

481 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 20:11:19.53 ID:w7dyIR3e0.net]
逆はCHR$(コード)だったな。

482 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 22:02:13.36 ID:LqpjdKM80.net]
「なんで朝潮?」と思ってしまった当時の俺w

483 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 08:32:10.12 ID:IVg2TokP0.net]
わらってよりとも というのは、当時の人気番組名をもじったものだよ



484 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 12:40:11.38 ID:J26JobOx0.net]
https://ae01.alicdn.com/kf/HTB1goomIL1TBuNjy0Fjq6yjyXXaS/Cetak-Pria-Kaus-Katun-Leher-o-Tshirts-ANSI-Pemrograman-C-Buku-Jepang-Lengan-Pendek-Wanita-Kaus.jpg_640x640.jpg

485 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 20:40:23.75 ID:axmpki24M.net]
「はじめてのC」なら買う

486 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 22:18:17.14 ID:fgRKvhjn0.net]
その本の名前、買うときに恥ずかしいw

487 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 23:03:35.49 ID:vEdVh+9n0.net]
質問です
文字列の配列
char matrix[Y][X]を関数に引数として渡して、渡した先の関数でtxtファイルに出力したい。
YとXはその時々によって違う値でmatrixは文字列の配列だけど1行ごとに'\0'が入っていないとき、渡した先の関数でYとXをどうやれば参照できますか?
例えば
matrix = {{‘a’, ‘b’, ‘c’}, {‘d’, ‘e’, ‘f’}};
みたいな配列です

488 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 00:00:40.06 ID:IBOrEgMWa.net]
X(配列のサイズ)を共有してやればいいんじゃないかな

489 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 00:14:05.05 ID:Ojl9YgLP0.net]
>>472
matrixのアドレスと共にX、Yの値を渡さないと無理

490 名前:デフォルトの名無しさん [2019/05/10(金) 03:11:16.60 ID:+vHN15fT0.net]
>>472
https://qiita.com/Hiraku/items/babed27bc1d750c2e12d

491 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 09:26:09.21 ID:bwAvNWKg0.net]
>>474
やっぱり配列のサイズ一緒に渡さないとだためですか

492 名前:デフォルトの名無しさん [2019/05/10(金) 09:44:04.32 ID:0Zlxa6bHa.net]
そう。他の言語だと裏でこっそり渡すようになっていたりしてプログラムに書かなくても動くかも知れないが、Cはそこまでやってくれない。

493 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 10:05:05.80 ID:hw8N8wYC0.net]
標準関数も一次元配列ですら大きさを渡してるからねー
(文字列は '\0' が終端である という了解を持って大きさを不要にしているだけ)



494 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 12:34:03.34 ID:zZfQYrbwd.net]
>>475
URL張って解党した気になってるアスペルガーのカスがスレ来んな

495 名前:デフォルトの名無しさん [2019/05/10(金) 23:50:49.39 ID:svzEPJh90.net]
え?読んでもわからなかったの?

496 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 07:43:24.28 ID:glRpLuyC0.net]
確かにつまらんね
リンクだけとかググレカスとか
せっかく掲示板にいるのに対話がないのは

497 名前:はちみつ餃子 mailto:sage [2019/05/11(土) 09:55:06.58 ID:GtXmrqj00.net]
>>481
リンクを示すのも、ググればわかるようなことにググれというのも対話だよ。
対話を終わらせてるのはお前だろ。

リンク先を見て意味がわからんかったならどうわからなかったか、
よりよい説明があると思うならそれを示してもいい。
望むことだけ欲しいというのは対話とは言えんよ。

498 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 10:34:34.75 ID:glRpLuyC0.net]
>>482
話が噛み合ってない
おまえさんとは平行線のようだな

499 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 11:46:55.45 ID:0ygzdBDA0.net]
ID:glRpLuyC0が対話する気なさすぎて草w

500 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 12:23:55.76 ID:9iCvmH6s0.net]
ここは質疑を行うスレであって
対話したり、雑談したりする場ではない

501 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 19:10:51.09 ID:HOBfdmGr0.net]
Cの上位互換(?)として、C++がありますが。C++は覚えた方がいいですか?
もしくは、CとC++を両方覚えたら、Cは不要になり、C++でコードを書くようになりますか?
C++でできることはCでもできるように見えますので、ならCだけでいいようにも思えたり。

502 名前: mailto:sage [2019/05/11(土) 19:18:54.28 ID:KtHZQgR00.net]
>>486
C++ は最近規格の改定がすすみ、いろんなことが C++ の枠内でできるようになりました

503 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 19:21:03.92 ID:2v2BzL6t0.net]
>>486
言っておくが、python,C++,Java,javascript,C#,shellでできる事はC言語でも出来る
更に君が作ろうとしてるものや、やりたいことは、もう誰かが作ってる
ましてや大規模になると、googleとかamazonと戦う羽目にもなる
それが嫌ならプログラミングなんて辞めとけ



504 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 19:32:35.19 ID:HOBfdmGr0.net]
>>487-488
了解です、ありがとうございます

505 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 21:07:19.81 ID:glRpLuyC0.net]
>>484-485
482は反対意見を述べているという意味でまだいいところがあったが
てめーらは一方的な押しつけしか頭にない100%真のノイズだ

506 名前:はちみつ餃子 mailto:sage [2019/05/11(土) 21:28:03.11 ID:GtXmrqj00.net]
>>490
既に解説があると示すのも質問に対する回答として十分だし、それで不満な理由がまるでわからん。
それが対話でないと断言するのも意味がわからん。
結局のところどうして欲しいの?

507 名前:デフォルトの名無しさん [2019/05/11(土) 22:15:36.12 ID:YLmnNEXIa.net]
きっと寂しいんだよ。

508 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 22:49:22.08 ID:glRpLuyC0.net]
>>491
意味がわからんからどうした?
平行線の相手に何か言って欲しいのか?

509 名前:はちみつ餃子 mailto:sage [2019/05/12(日) 10:19:15.38 ID:l86zXz3/0.net]
>>493
そう決めつけて続きを拒むなら「一方的な押し付けしか頭にない」「対話がない」というまさにそれでしかなくね?
意味がわからんから解説してくれっての。
わからんことを理解する必要があるから対話になるんだろ。

510 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 11:22:06.40 ID:VeGHf8Lz0.net]
>>494
自分の言葉で何か言えよと思う俺の意見を
おまえ真っ向から全否定しただろ
だから接点がないと判断したんだ
接点があるなら最初の態度を撤回しろ
話はそれからだ

511 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 11:57:36.56 ID:7nn+3/Jt0.net]
>>495
意見を全否定って、そりゃ異なる意見があるのは当然だろう。異なる考えなら議論にならないなんて、議論する気が無いだけだろう。

ついでだが、俺もお前さんの意見には反対だ。自分の言葉で書くかはまったく重要ではないと思う。お手軽に書ける掲示板のレスは言葉足らずだったり不正確な表現なことも多々あるが、それよりきちんと纏まった情報をリンクされた方がありがたいことも多い。

512 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 12:19:14.09 ID:VeGHf8Lz0.net]
>>496
意見が異なるのと全否定は違うぞ
自分はこう思うと述べるのと
おまえは間違っているというのの違いだ

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

そこが俺とおまえの違いだな

513 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 15:34:15.26 ID:SbCKIsfP0.net]
質問です
テキストファイルから文字を1文字ずつ読み込んでchar型の2次元配列matrixに入れていきたい。
この時改行は配列に入れたくないときどうすれば良いですか?

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


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

のようなファイルです



514 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 15:51:11.62 ID:L7lYUohVa.net]
fgetc二回呼びたいの?

515 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 16:10:46.32 ID:7kDDqNbD0.net]
>>498
continueだと内ループ先頭に戻るから違うんじゃないの

516 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 16:24:47.11 ID:R31sKZyy0.net]
>>498
.for ... {
. for ... {
. char c = fgetc(fp);
. if (c != '\r' && c != '\n') {
. m

517 名前:atrix[i][j] = c;
. }
. }
.}
[]
[ここ壊れてます]

518 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:12:05.74 ID:SbCKIsfP0.net]
>>499
呼ばなくていいです
>>501
これでもうまくいかないです

519 名前:経団連 mailto:sage [2019/05/12(日) 17:22:08.08 ID:uLUIsoqa0.net]
for (i=0;i<10;i++) {
for (j=0;j<10;j++) {
matrix[i][j] = fgetc(fp);
}
fgetc(fp); //読み捨て
}

520 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:29:14.22 ID:CrklWm7I0.net]
変な例出すなよ…

521 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:29:29.19 ID:gzai7Rgq0.net]
サイズが固定なら fread でよくない?
そうすべきというほどのものでもないだろうが。

522 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:35:10.27 ID:x4ccFx6b0.net]
>>498
「うまくいかない」症状を見れば、もう少し見当がつくんだけど…。
格納先の配列を char matrix[LINES][CHRS]; とか定義して、
printf("%s\n", matrix[n]); で表示してるの違うかな。

各行の文字列の末尾にあるべき '\0' が格納されてない、みたいな。

523 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:36:33.22 ID:JjryTeWM0.net]
2重ループやめても良いか?
 while (1) {
  int c = fgetc(fp);
  if (c == EOF) {
   break;
  }
  if (c == '\n') {
   continue;
  }
  matrix[i][j] = c;
  j++;
  if (j == 10) {
   i++; j = 0;
  }
 }



524 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 17:38:28.80 ID:JjryTeWM0.net]
501の方法だと'\n'読んだ時に、スキップしているけど
ループ変数の方は ++1 してるからズレてくる

525 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:35:08.99 ID:SbCKIsfP0.net]
>>503
>>507
どちらも行けました
507のは理解できるんですが
503の読み捨てというのはどう言うことなのでしょうか

526 名前:デフォルトの名無しさん mailto:sage [2019/05/12(日) 18:43:30.54 ID:JjryTeWM0.net]
>>509
10個読んで1個捨てる

527 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 20:38:42.19 ID:WOFscy660.net]
バッファにつめるところを簡単にしてみた。
https://ideone.com/fJ91BI

528 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 06:41:01.67 ID:7SLYc+Rqr.net]
OSSで構造体を公開しようとおもってる

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

char[100] buffer;

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

C++ならテンプレートでいけるけど、OSSだから利用者が多いC言語で書いておく必要がある
構造体を公開しないで、ハンドラとセッタで扱えばいけるだろうけど、今回は構造体でいきたい

529 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 08:01:00.18 ID:YNmKUGxB0.net]
「sizeof(int)が環境依存」を前提にするなら
バージョンアップ以前のint a;だけでもう既にサイズ固定じゃないじゃん
int32_tですら必ずある保証はないよ

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

素直に「よくある手段」でやりなさいってことだ

530 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 08:07:10.74 ID:0o/9QF7Tx.net]
>>512
処理系によるパディングとかの問題を別にしたら、bufferをunionにしといたらわざわざ減らさなくても良いのでは?

531 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 08:25:38.55 ID:7SLYc+Rqr.net]
>>513
たしかにint aですでに違うね
ただ今回考えてるのは、コンパイルせずに共有ライブラリを差し替えるって状況を想定してる
そのときにセグメンテーションフォールトがでないようにしたい
だから、すべての処理系で同じサイズにしたいってわけじゃなくて、同じ処理系の中ではバージョンにかかわらずサイズを保ちたいってことなんだよね
説明不足ですまん

532 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 08:36:30.40 ID:2RiYyx1fa.net]
あらゆる環境だったらシリアライズしないとだし。
同じ処理系だったら同じ構造体でいいだろうし。

533 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 13:41:09.36 ID:d9/Wmgv60.net]
>>514 のはこんな感じですかの

union foo {
 struct {
  int a;
  double b; // ここをバージョンアップで追加
 };
 char dummyBuffer[100];
};



534 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 13:59:44.65 ID:d9/Wmgv60.net]
構造体の大きさが char[100] に収まってる範囲での話
>>512 のように末尾に用意したギャップを引き算していくにしても、引ききれなくなった段階で破綻するよね

※ 突破したことをチェックするには sizoef(union foo) と sizeof(char[100]) とを比較すんのかなぁ…

535 名前:経団連 mailto:sage [2019/05/14(火) 14:09:24.00 ID:4po1tQ0w0.net]
C99 <stdint.h>のuint*_t型を使った方がいいと思う。

536 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 14:39:04.31 ID:2RiYyx1fa.net]
普通符号付きでしょ

537 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 14:51:20.14 ID:5nOlmwWa0.net]
符号プログラミングか

538 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 15:42:40.54 ID:2RiYyx1fa.net]
今はstatic_assertとかいうものがあるらしいぞ
これでコンパイル時にチェックすればよい

539 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 21:12:50.85 ID:8soz04JH0.net]
>>512

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

#include <stddef.h>

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

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

struct foo {
int a;
double b;
char buf[BUF_SIZE];
};

540 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 07:47:15.99 ID:FPbZusNo0.net]
>>523 ちょっと間違ってるみたい。
struct foo には struct inner_foo に double b; が追加されてるせいで
sizeof(struct foo) == MAX_STRUCT_SIZE にならない。
sizeof(struct foo) == MAX_STRUCT_SIZE + sizeof(double) になっちゃう。

inner_foo と foo とで char buf[] より前のメンバを一致させる必要がある。

541 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 08:35:12.84 ID:0TljqresM.net]
>>515
なんでサイズが違うとセグメンテーションフォールトになるのかよくわからんが…
Win32APIみたいに頭にサイズ入れときゃいいんじゃね?

542 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 08:56:22.39 ID:nK0I7Knm0.net]
データファイルの話なら分かるが、intのサイズが違う環境の共有ライブラリってそもそも使えるのか?

543 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 09:12:43.64 ID:e9I3VVqQa.net]
コンパイルは自分でしろって話だと思うよ。
そうすると単にメモリ配置を意識した



544 名前:vログラムだな。
当然、バイトオーダーも気にしろよっていう話に
[]
[ここ壊れてます]

545 名前:デフォルトの名無しさん [2019/05/15(水) 09:32:21.44 ID:k0yjAgrYa.net]
やっぱ int32_t みたいな環境に関係なく同じビット数になるやつにしといた方が良いんじゃないかな。

546 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 09:45:02.94 ID:25auY+1H0.net]
515の
>ただ今回考えてるのは、コンパイルせずに共有ライブラリを差し替えるって状況を想定してる
>そのときにセグメンテーションフォールトがでないようにしたい

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

旧ソースで追加されたパラメータ部分は不定値であって
その不定値をうけて共有ライブラリ内部が正しく動作できるとは思えないが…

547 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 11:40:27.07 ID:AfKgri370.net]
構造体には、サイズの変わらない、ポインタだけを置いておいて、

実際の領域は、ライブラリ内で確保して使って、解放すれば?

548 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 12:19:01.09 ID:e9I3VVqQa.net]
さすがに実体を共有するという目的がないとこういう発想にはならんでしょ。
共有メモリとか、ファイルとか、通信とか。

549 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 12:31:29.02 ID:dMKqDPXvr.net]
>>529
呼び出す側がバージョン情報をもっておいて、処理側で振り分けてアクセスしないようにすれば問題ないね

#define version 2

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


void func_impl(const struct* foo, int version) {
if (version > 1) {
foo.b;
}
}

550 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 12:43:05.74 ID:25auY+1H0.net]
>>532
そのバージョン情報の数字を埋め込むのに一番適度なのは実構造体のサイズって話に(>>525)

>>531 のような背景なら
ペイロードサイズは触りたくない ってのは納得できるな
バージョン違いの吸収法は別途必要だけど

551 名前:デフォルトの名無しさん [2019/05/15(水) 12:53:24.07 ID:k0yjAgrYa.net]
構造体の中身を公開しないでポインタだけ使わせて読み書きする関数を別途用意するって方法もあると思う。オブジェクト指向の言語でのプロパティのようなものね。
内容のファイルへの読み書きやネットワークでのやり取りはそれようにデータをpack、unpackする処理を作ってそこにバージョン番号も埋め込む。

552 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 12:59:51.65 ID:Wbf0zcGJ0.net]
exeがnew(malloc)するけど中をいじるのは全てdllの関数ってのはままある
dllだけ差し替えで済ましたい、サイズが変わらなければexeはビルドし直さなくていいのに…
ってことだろう

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

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

>514,517のunionもいいと思うけど
foo.aでアクセスできないよね?foo.body.aとかしないと

553 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 13:12:20.84 ID:25auY+1H0.net]
>>517 の foo.a でいきなりアクセスできる union が記述できるのは C11 からみたい
無名構造体/無名共用体



554 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 14:41:00.06 ID:dMKqDPXvr.net]
>>535
intが4バイトなんて保証はないから、char[] bufの大きさを決められないって話でしょ?
intメンバを追加したとして、bufのサイズはどれだけ減らせばいいのかわからないのが問題
4の環境が多いだろけど、2の環境だと2を減らさなきゃいけないわけで

dll差し替えで再ビルドしない場合、構造体サイズが変わると特に配列渡しの場合はセグメンテーションフォールトになる可能性が高くて危険
セーブデータみたいに構造体をそのままファイルに落とすとしても、サイズはずっと不変なのが扱いやすいね

555 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 14:56:07.34 ID:e9I3VVqQa.net]
数字付かないintのでかい方に合わせるなら、それこそunion使って明示的にオフセット決めるとか。
本当にそんなことしたいのか?という話は置いといて。
もちろんint32_tとかint_least32_t使う方がいいし、本当に位置合わせするならバイト位置指定して読み書きするし、そもそもサイズ固定

556 名前:ケずにシリアライズ用のライブラリ使うのが正しいよ。 []
[ここ壊れてます]

557 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 19:35:47.81 ID:0TljqresM.net]
>>537
> intが4バイトなんて保証はないから、char[] bufの大きさを決められないって話でしょ?
そんな話はとっくに終わっとる
>>515をちゃんと読めよ

558 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 20:46:54.27 ID:Wbf0zcGJ0.net]
>>536
ほう知らんかった
なら>517でほぼデメリットないね

>>537
「その環境」でのintのサイズはsizeof(int)でおk

559 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 21:55:29.06 ID:ZaVTFrP70.net]
win32apiはバージョンによって構造体の変数が追加になるから構造体のサイズを構造体の先頭にセットする

560 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 08:13:26.18 ID:eEplP63Q0.net]
windows.hのsmallで一時間潰した

561 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:38:59.34 ID:GXqxfUU20.net]
文字配列列sを逆順に文字配列tに格納して出力したいのですが、
以下のコードでは実行してもt=[]と出力されてしまいます
#include <stdio.h>
#define MAXLINE 1000
main()

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

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

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

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

どこがおかしいのでしょうか…

562 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:48:10.73 ID:q0J7kB7g0.net]
後のループの一発目は

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

こういうことになるから

t[0] = s[i] ってことになって t[0] = '\0'; をやってることになる
上記のは
  1 2 3 4 \0 → \0 4 3 2 1 のコード
実装すべきなのは
  1 2 3 4 \0 → 4 3 2 1 \0 となるコード

563 名前:デフォルトの名無しさん [2019/05/16(木) 20:27:22.18 ID:m1+/MMjMa.net]
惜しいねえ。綺麗に逆に入ってはいるんだよな。



564 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 20:38:11.53 ID:GXqxfUU20.net]
おっしゃる通りでした…今度は上手くいきました
ありがとうございます

565 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 20:38:46.73 ID:GXqxfUU20.net]
おっしゃる通りでした…今度は上手くいきました
ありがとうございます

566 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 21:09:34.65 ID:q0J7kB7g0.net]
自己解決できたようでなにより
整数の配列を逆に整列させるなら正解だったんだけどねー
「文字列」操作の落とし穴ですな

567 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:03:40.11 ID:e0Mh58zT0.net]
今C言語教室でSQLとGUIやってる初心者なんだがCでDB弄る仕事ってあるのか
JavaとかC#に取られそうだけど

568 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:06:44.17 ID:8rj7/ih6a.net]
sqliteは使うよ

569 名前: mailto:sage [2019/05/18(土) 22:07:47.63 ID:Pqc0+ZP00.net]
>>549
ODBC 経由ならできますが…昔、ハンドルのキャストをとちったミスを、その意味不明の動きから突き止めるのは大変でした
ODBC を直書きする情報はネットにほとんどありませんね

570 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:19:48.67 ID:e0Mh58zT0.net]
SQL使うのか慣れてないからあんまやりたくないんだよなあ
頑張るか

571 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:37:47.44 ID:D3aJPSyb0.net]
>>549
C++ならまだしもC言語でGUI?
どこの教室だよ…

572 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:53:12.41 ID:RWbfx4gX0.net]
むかーし、Pro*C って使った事がある
Cのソース内にSQLを埋め込み
プリコンパイルする感じ
今は流行らないかもしれない

573 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:58:45.45 ID:8rj7/ih6a.net]
SQL使いこなしてる人ってすごいけど、正直ああはなりたくないという感じだよな。



574 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 23:01:53.11 ID:RWbfx4gX0.net]
賢いファイルシステムとして利用すると超便利だぞ

575 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 23:02:38.45 ID:RWbfx4gX0.net]
同じ事をCのロジックで組むとなると、アタマおかしくなるかも

576 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 23:08:58.89 ID:Y/SMFmS40.net]
普通にアプリケーションの規模が大きくなるとsql使いたくなるだろ

そういう場合はsqlite使う

577 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 23:10:30.33 ID:RWbfx4gX0.net]
5ちゃんねる専用ブラウザもsqlite使っているそうですね?
プログラムコードはCではないですが

578 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 10:01:29.20 ID:EV8D9m9A0.net]
IoTのデバイス開発やってるけど、C言語でDBのクライアントライブラリ使ってるよ

579 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 16:30:57.06 ID:b6d7Y/CF0.net]
リーナスさんはC++嫌いつーてるしな
トレードマークのfuck口調で

580 名前:デフォルトの名無しさん [2019/05/19(日) 17:49:51.40 ID:V/GPYpFPa.net]
この頃は間に何かライブラリ挟んでDB変わってもSQL文がほぼ同じままで行けるようなのが流行りなのでは?

581 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 19:08:51.80 ID:SqCxdnVY0.net]
大学の情報科の人たちってどのレベルでC言語使えるんですかね?
Cに限ったことではないですが大学4年でどの程度の練度が身につくのか

582 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 19:17:39.10 ID:Ic55MIMX0.net]
人によるだろ
そもそも好きなやつは大学入る前からやってるからな

583 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 19:22:28.74 ID:qBoKnLB7a.net]
>>563
別に使えなくてもいいよ



584 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 21:05:03.54 ID:b6d7Y/CF0.net]
>>565
おまえは情報科に来るなってだけ
やる気ねえやつが畑違いな学部に入ること自体が害悪だ

585 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 21:14:52.17 ID:Y3pJ4vrOa.net]
>>566
お前が入ったの専門学校だろ?

586 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 21:19:32.43 ID:b6d7Y/CF0.net]
>>567
化学科だけど

587 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 21:24:37.32 ID:RJz4Ejb00.net]
学校だとアルゴリズムやシステム設計手法は学べるだろうが
練度が上がるのはやはり仕事を始めてからだと思う

588 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 12:44:26.31 ID:PSRVLRmYr.net]
コンピュータサイカヨウの基本は一通りやるんじゃない?
情報処理試験の基本レベルくらいのもの
初心者は実務にはそのままは使えないけど、中級以上のエンジニアならこのあたりの知識があると差がついてくるね

589 名前:デフォルトの名無しさん [2019/05/20(月) 14:12:04.87 ID:0d3wAWyu0.net]
業務のほとんどは手作業の自動化だから差は出ない。そしてみんなリストラされる。

590 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 18:18:34.53 ID:IJBxlZ980.net]
仕事で出会った、いろいろな人を思い出すに、ガチに使える人材って凄いからなあ。
学校や仕事を通じて学ぶ、みたいな次元じゃないんだよねえ。

591 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 19:49:19.18 ID:Nbm/sW0Oa.net]
おまえが使ってるんだったらおまえが偉いよ

592 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 00:42:18.33 ID:jVHVO/YL0.net]
setbuf関数っていつなんの為に使うんや?
バッファリングのためにあるのはわかるけどそもそもバッファリングがなんの為にあるのかわからん

593 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 00:44:38.83 ID:Hcv2vO/e0.net]
ちまちま出力するより溜めてからまとめて出力した方が高速



594 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:29:10.75 ID:jVHVO/YL0.net]
1万文字くらいのテキストファイルを標準出力でやってみたけど変わった気しなかったぞ
もしかして数百万文字レベルの巨大ファイルだと劇的に変わるんか?

595 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:34:19.46 ID:XM845/F70.net]
10kbって小さくね

596 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:46:59.05 ID:+xvLcOVEa.net]
というか普通はバッファリングする関数ばっかりだが、自前でバッファ用意したいときもあるって話。
基本変わらんよたぶん。

597 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:47:43.41 ID:jVHVO/YL0.net]
確かに少ないな
と思ったんで2,700kbでやってみたらむしろ4秒長くなったぞ

598 名前:デフォルトの名無しさん [2019/05/21(火) 02:21:13.21 ID:Y+BS98b80.net]
>>574
FILE * 経由で出力する printf() 等は内部でバッファリングしていてバッファがいっぱいになったらまとめて出力する(出力先が端末の場合は行単位で出力する)。
そのバッファを自分で指定した領域を使わせるか、またはなしにできるのが setbuf()。更に自由に大きさやモードも指定したいなら setvbuf() を使う。

バッファリングに関して考慮しなくても良い入出力をする場合は read(), write() で行う。この場合は全くバッファリングされないので少ないバイト数の入出力が多いと遅くなる。
それと printf() のようなフォーマットを考慮した出力はないので必要なら自作する。

599 名前:デフォルトの名無しさん [2019/05/21(火) 02:26:07.71 ID:Y+BS98b80.net]
>>576
open()してwrite()で1バイトづつ書くのとまとめて書くのとではバイト数によっては大幅に違いが出ると思う。環境依存ではあるが。

600 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 03:47:59.45 ID:jVHVO/YL0.net]
>>581
大きなファイルの入出力を高速化したい時はsetbuf(fp,buf)
バッファリング無しにしてバッファをフラッシュするタイミングを順番に逐一実行させたい時はsetbuf(fp,NULL)
みたいな感じでええんかな?

601 名前:デフォルトの名無しさん [2019/05/21(火) 03:58:34.93 ID:Y+BS98b80.net]
>>582
setvbuf()で自分でバッファの大きさ決めてしまった方が良いかも。

602 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 04:24:32.31 ID:zmxtmgNI0.net]
既出かもしれませんがconstがjavaのfinalと違うと知りました。どう違うのでしょうか?c初心者です

603 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 05:39:22.97 ID:SRv5ILQj0.net]
>>576
OSによってはHDDへ遅延書き込みするから、結局バッファしてるのと大して変わらなかったりする。



604 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 06:44:08.98 ID:UPiNM42a0.net]
>>584
20年前くらいの知識で、しかも完全に理解してるわけではないので、間違っていたらゴメンだけど。

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

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

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

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

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

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

みたいな感じの違いはあったような。最近のCやJavaは知らないんだけどね。
あまり自信がないので、詳しい方のレスを待ちましょう。

605 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 06:49:56.40 ID:tdstqwiHM.net]
>>585
そっちもあるけどAPI呼出し回数の削減もあるから

606 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 07:08:29.24 ID:6muVxYSDr.net]
>>585
今どきのディスクならほぼ遅延書き込みしてるといってもいいね
バッファには二段階あって、
@プロセスが持ってるバッファ
AOSが持ってるバッファ

flush関係のライブラリ関数やシステムコールは@をAに吐き出す
Aを吐き出すにはLinuxだとfsyncもしくはfdatasync

607 名前:デフォルトの名無しさん [2019/05/21(火) 09:19:53.31 ID:BVi2WQ22a.net]
>>584
Cはポインタの指す先が const という指定ができるがJavaは配列の要素まで final にする指定ができなかったと思う。
つまり配列やクラスそのもののインスタンスへの参照は final にてきる。しかし参照される中身までは final にできず書き換え可能(クラスの場合はpublicのクラス変数とか、外部から書き換えられるようになっていれ

608 名前:ば書き換えられる)。

ま、ちょっと試してみな。
[]
[ここ壊れてます]

609 名前:デフォルトの名無しさん [2019/05/21(火) 10:05:33.15 ID:DLRGb2lZ0.net]
LTOのオプション
を使ってコンパイルすれば
インライン関数をヘッ
ダーに書かなくても
勝手にインライン化できるものはインラ
イン化してくれる
という理解で
あってますか?

610 名前:デフォルトの名無しさん [2019/05/21(火) 10:21:18.62 ID:BVi2WQ22a.net]
>>590
それコンパイラ依存なのでは?

611 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 12:55:43.68 ID:PZq+OQZ5p.net]
>>589
これな
Javaを最初に設計した奴はバカなんじゃないかと final の仕様を見たとき思ったな

612 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 15:23:18.72 ID:ZAINLMmO0.net]
Linux では、HDD へ書き込むのは、デフォルトで、5秒に1回

USB メモリで、書き込み回数を減らしたい場合は、
15秒に1回とかに設定する人もいる

613 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 18:23:31.31 ID:6muVxYSDr.net]
>>593
書き出し周期はファイルシステムに依存するよ
例えばext3かext4かで挙動は違う



614 名前:デフォルトの名無しさん [2019/05/21(火) 18:37:21.97 ID:G/IUf+gXp.net]
C言語のfprintfを用いるときに、前行の改行を消す方法をご存知ないですか?
エスケープシーケンスでバックスペースを試したのですか上手くいかなくて困っています。

状況としてはfor文を用いて改行を含んだ文字列を繰り返し出力させているんですが、最後の行だけ改行を無くし、続けて別の文を出力したいのです。
繰り返しの回数を変えて最後に改行なしの処理をいれればいいと思うのですが、簡単な方法があればと思い質問させていただきました。
よろしくお願いします。

615 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 18:40:11.67 ID:UdJL+OJH0.net]
ストリームの撒き戻しは難しいんじゃないか? 表示装置なのかファイルなのかでも変わるだろうし…

616 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 18:54:48.20 ID:Hcv2vO/e0.net]
ファイルポインタは巻き戻せる
標準出力ならエスケープシーケンスで右上に行けばいい

617 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 19:19:14.41 ID:IJ+i04U80.net]
こんな感じでいいのか?

#include <stdio.h>
int main(void) {
FILE* fp;
fp = fopen("Test.txt","w");
fprintf(fp,"hoge\n");
fseek(fp,-1,SEEK_CUR); /* 改行2byteなら-2 */
fprintf(fp,"fuga\n");
fclose(fp);
return 0;
}

618 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 19:53:55.55 ID:UPiNM42a0.net]
質問者が知りたい情報とは違うので、スルー推奨かもですが。

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

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

fprintf で「それ以外の文字列」を出力
}
fprintf で「別の文を出力」

619 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 19:58:03.98 ID:kdkwqODuM.net]
>>595
bool First = true;
for( … ){
if(First){
First = false;
} else {
fprintf("¥n");
}
fprintf( … );
}

620 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 19:58:35.62 ID:kdkwqODuM.net]
あっ、被ったや

621 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 20:07:13.38 ID:IJ+i04U80.net]
ファイルが標準出力等でvt100互換端末であれば。
#include <stdio.h>
#include <string.h>
int main(void) {
int i;
i=fprintf(stdout,"hogehogehogehoge\n");
if (0) fprintf(stdout,"\E[01Afuga%*c\n",i,' '); /* これか? */
else fprintf(stdout,"\E[01A\E[%02dCfuga\n",i-strlen("\n")); /* あるいはこれか? */
return 0;
}

cmdとかdos窓なら無理?

622 名前:デフォルトの名無しさん [2019/05/21(火) 20:22:57.69 ID:G/IUf+gXp.net]
>>596-602
皆様回答ありがとうございます。
ファイルを扱っているので、fseekで戻す方法を試してみようと思います。

623 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 20:31:17.43 ID:JOJ6V6qzd.net]
プログラムいじられるなら、改行出す方をどうにかした方が良さそうだが



624 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 20:31:52.25 ID:8vKfOnx40.net]
ansi.sysを組み込めばVT100互換エスケープシーケンスが
という昔話…と思ったが、ググったらvistaまであったんだな驚き
Windows 10 Threshold 2(10.0.1058)ではコマンドプロンプトでANSI/VT100互換表示が可能に
というスラドの記事も出た

625 名前:デフォルトの名無しさん [2019/05/21(火) 20:52:46.26 ID:BVi2WQ22a.net]
最後に改行出すんじゃなくて最初に改行出すようにすれば良いだけでは?
一番最初の行だけは最初に出さなければ良いだけ。
バッファリングされて出力されないのが嫌なら行末でfflush()する。

626 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 21:47:10.75 ID:n1jvW3Ih0.net]
>>606
>>599-600

627 名前:デフォルトの名無しさん [2019/05/21(火) 22:06:40.11 ID:Y+BS98b80.net]
>>607
おお。既にあった。
さっきスマホで見てて気付かなかった。

628 名前:デフォルトの名無しさん [2019/05/21(火) 22:09:47.12 ID:JtLDtEYt0.net]
>>604-607
603です。>>600の意味をちゃんとわかってませんでしたが、>>606の方のレスでわかりました。
>>600の方が安全な気がするのでそちらを検討します。

629 名前:デフォルトの名無しさん [2019/05/24(金) 09:00:19.45 ID:h3dkW7YJ0.net]
C言語はクラスが無い。
それは実際どれくらい問題になりますか?

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

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

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

そうでもないものですか?

630 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 09:04:22.51 ID:a6wIXg41a.net]
まあファイルがクラスと同じだし。
継承はしづらいけど、そんなもん使ったらC++でもむしろ見通し悪くなるでしょ?

631 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 10:11:20.70 ID:M2ZwKTAn0.net]
最大のデバイスドライバがOSのカーネルなんじゃねえの
そしてそれがC言語の限界

632 名前:デフォルトの名無しさん [2019/05/24(金) 10:43:06.36 ID:h3dkW7YJ0.net]
Linuxカーネルは2100万行を超えているそうなので
たぶん地球上でもっとも大規模な開発の1つです。

633 名前:デフォルトの名無しさん [2019/05/24(金) 11:21:47.36 ID:0dR+L/D60.net]
責任ある人は気がくるっているじゃない。



634 名前:デフォルトの名無しさん [2019/05/24(金) 12:25:59.56 ID:Cw+6mW4za.net]
Cでもオブジェクト指向的に考えて作ることは可能。構造体へのポインタまたは情報を区別する番号などを渡してその中身に基づいて処理する関数作ればいいので。
ファイルアクセスとかは作りがそうなってるよね。

635 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 12:32:21.84 ID:M3xcEept0.net]
クラスはコンストラクタ/デストラクタは活用したけど
継承で面倒になって、ちょっと便利な関数付き構造体としてしか設計したことない。

636 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 12:35:03.01 ID:C+5joBz9M.net]
C言語ではオブジェクト指向も関数型プログラミングもできる。その下位レイヤーだから。
面倒臭いけど。

637 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 12:50:51.48 ID:8pSuDyEhM.net]
>>613
デバドラとかが山ほどあるだけでコア部分はそんなにたいしたことないよ

638 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 12:53:08.72 ID:8pSuDyEhM.net]
>>610
構造体に関数ポインタ入れたりすれば継承も多態も可能
書くのが面倒ってだけの話
モジュールを適切に分割すれば個々の開発部分はそんなにでかくならないし

639 名前:デフォルトの名無しさん [2019/05/24(金) 12:59:14.48 ID:Cw+6mW4za.net]
まあしかしC++は複雑怪奇な状態になったような感じがするのでなんか別の言語でオブジェクト指向やった方が良いような気がする。

640 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 13:49:11.26 ID:FIKXvkBI0.net]
Javaがとてもシンプルな言語に見えてくる

641 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 14:27:11.63 ID:YkjJvwKvd.net]
linux kernelなんておもくそオブジェクト指向的な構造だろ

642 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 19:13:34.31 ID:E0qJKDus0.net]
関係ないけどOOPが流行り始めた頃に「WindowsのUIはオブジェクト指向だ」と言ってたやつを思い出した。

643 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 19:26:36.07 ID:omgaeJxY0.net]
目指していた方向はそうだったと思う



644 名前: mailto:sage [2019/05/24(金) 20:26:08.87 ID:0N6+tWvP0.net]
>>615
>Cでもオブジェクト指向的に考えて作ること
あくまでも「オブジェクト指向『的』」であることに注意すること
C ではオブジェクト指向を実現できない(断言)

645 名前: mailto:sage [2019/05/24(金) 20:27:08.05 ID:0N6+tWvP0.net]
>>617
>C言語ではオブジェクト指向も関数型プログラミングもできる

C ではオブジェクト指向はできない(断言)
継承をCでどのように記述するのでしょうか?

646 名前: mailto:sage [2019/05/24(金) 20:27:59.68 ID:0N6+tWvP0.net]
>>622
>linux kernelなんておもくそオブジェクト指向的な構造だろ

あくまでも「オブジェクト指向『的』」であってオブジェクト指向そのものではありません(断言)

647 名前:デフォルトの名無しさん [2019/05/24(金) 20:41:47.14 ID:1FXcUtRQa.net]
いやできなくはないよ。何せC++は元々はCへのコンバータだったしな。C++のソースを読んでC言語に変換して後のことはCコンパイラに任せてたんだよ。それが初期のC++。

もちろんCは言語そのものがオブジェクト指向をサポートしてないから人間がそれをやろうとするととても面倒な事になるけどな。

648 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 20:51:16.47 ID:E0qJKDus0.net]
そんなん言い始めたらアセンブラでもオブジェクト指向プログラミングできることになっちゃう。
言語としてOOPがサポートされてなきゃ認められないでしょ。

649 名前: mailto:sage [2019/05/24(金) 21:00:32.57 ID:0N6+tWvP0.net]
>>628
>C++のソースを読んでC言語に変換して後のことはCコンパイラに任せてたんだよ。それが初期のC++。
C++ から C へのトランスパイラが存在したからといって、C にてオブジェクト指向(的ではなくそのものずばり)なプログラミングができるわけではありません
C++ のコンパイラが存在するからといって機械語が OO でないのと同じです、まず、

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

に対応する C のコードを示してください

650 名前: mailto:sage [2019/05/24(金) 21:01:09.07 ID:0N6+tWvP0.net]
>>629
>言語としてOOPがサポートされてなきゃ認められないでしょ。

激しく同感いたします!

651 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 21:12:51.85 ID:ZwmHdTYl0.net]
>>610
全く問題にならない
classというキーワードがなくても
コードを書く者の考え方次第でカプセル化や継承はできる
FILE構造体がその例だ
多態性がないというのは、おまえさんの認識不足で
関数ポインタでそんなものはすぐに実現できる
そういう認識不足があるからこそ
メジャーなカーネルをなぜ書けたかが理解できないのだ

652 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 21:15:04.81 ID:ZwmHdTYl0.net]
>>630
対応するCのコードを示せるやつがいたら、おまえどうする?
朝8時の品川駅のホームでストリーキングでもするか?

653 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 21:24:37.67 ID:QPLeHwR8a.net]
まあ継承なんてオブジェクト指向と関係ないよ



654 名前: mailto:sage [2019/05/24(金) 21:45:54.65 ID:0N6+tWvP0.net]
>>632
>classというキーワードがなくても
>コードを書く者の考え方次第でカプセル化や継承はできる

C ではカプセル化はできても継承は不可能ですよ

655 名前: mailto:sage [2019/05/24(金) 21:46:59.73 ID:0N6+tWvP0.net]
>>633
>対応するCのコードを示せるやつがいたら、おまえどうする?
あなたができないことをそんなにアピールしなくてもいいと思いますよ

656 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 21:56:28.68 ID:wwZ4gkZH0.net]
仮想関数テーブルの実装方法について語るスレはここですか?

657 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:01:07.63 ID:ZwmHdTYl0.net]
>>635
いーや、できる
おまえさん禿本やリップマンくらい読んだか?

裸踊りを賭す自信もねえやつがいきがってんなよ

658 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:02:14.93 ID:ZwmHdTYl0.net]
>>637
いいぜ
おら、来いや

659 名前:蟻人間 mailto:sage [2019/05/24(金) 22:06:22.36 ID:/xfbOr910.net]
>>630
https://ideone.com/omqT5r

660 名前: mailto:sage [2019/05/24(金) 22:17:20.89 ID:0N6+tWvP0.net]
>>638
ではストロヴストルップやリップマンはどういっているのか、ここに引用していただけますか?
あらかじめいっておきますが、引用はできない、なぜならば、そんな内容をストロヴストルップもリップマンも書いていないのだから

661 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:18:09.05 ID:TMKOHW7N0.net]
>>625-627, >>629
オブジェクト指向と言う概念と実装の区別がついてないんだな
低能なプログラマーによくある行動w

例えばLinuxで言えばリダイレクトなんて言うのはもろオブジェクト指向な機能だよね
Applicatlon > xxx
ってやればxxxがファイルならApplicatlon が出力したデータをファイルに書き込むし、xxxが端末なら端末にデータを表示するし、xxxがプリンタならデータを印刷する
Applicatlonは出力先が何であるかを気にする必要はない
もちろんLinuxはC言語でこれを実現してるしより面倒だろうけど当然アセンブラで実装することも可能

662 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:21:05.39 ID:0NhXAFL60.net]
概念ならFILE構造体とそれの操作関数群

663 名前: mailto:sage [2019/05/24(金) 22:21:27.40 ID:0N6+tWvP0.net]
>>640
>typedef struct C
>{
> A ThisA;
> B ThisB;
> int c;
>} C;

これは委譲であって継承ではありません。私は >>626 で「Cでは継承はできない」と主張しており、これを否定するために委譲は使えません



664 名前: mailto:sage [2019/05/24(金) 22:23:27.35 ID:0N6+tWvP0.net]
>>642
それは smalltalk 的な OO であって C++ の OO の概念とは多少食い違うと思います

665 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:24:05.41 ID:0NhXAFL60.net]
コンストラクタとデストラクタの機構だけは欲しいと思ったことがしばしば

666 名前: mailto:sage [2019/05/24(金) 22:24:31.62 ID:0N6+tWvP0.net]
>>643
FILE は OO 的ではありますが、OO そのものではありません
OO というからには委譲とは別の継承を表現できねばなりませんが、
C では継承を表現できません

667 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:41:32.12 ID:K6buSCwsM.net]
glibとか大昔からあるじゃん…
glibがooでないならooの定義をまず示せ

668 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:42:05.32 ID:hUeULEjja.net]
オブジェクト指向ってC++固有の概念なの?
だとすると、そりゃCで実現は無理でしょう。関係ないんだから。CとC++は。

669 名前: mailto:sage [2019/05/24(金) 22:44:44.02 ID:0N6+tWvP0.net]
>>648
glibc++ は OO かもしれませんが glibc が OO だとは寡聞にして聞きませんね

670 名前: mailto:sage [2019/05/24(金) 22:45:51.47 ID:0N6+tWvP0.net]
>>649
>オブジェクト指向ってC++固有の概念なの?
いいえ、Java も C# も OO だし、 python も ruby も OO で表現できます

671 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:50:26.22 ID:hUeULEjja.net]
>>650
GLibだよGLib
今知らないのもどうかと思うけど、使ってみると面白いと思うよ

672 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:51:22.70 ID:hUeULEjja.net]
>>651
いや、それだとつじつま合わないでしょ
自分の決めた道を突き進めよ

673 名前:蟻人間 mailto:sage [2019/05/24(金) 22:53:40.43 ID:/xfbOr910.net]
GTKのGLibだよね。



674 名前: mailto:sage [2019/05/24(金) 22:54:27.15 ID:0N6+tWvP0.net]
>>653
どうつじつまがあわないというのですか?説明ください
私は「OO ならば委譲と区別された継承を記述されなければならない」と主張しています

675 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 22:55:59.59 ID:K6buSCwsM.net]
>>650
glibcじゃねーよ…
gimp、inkscape、gnomeほか様々なソフトウェアで使われてる。
linuxとは無縁だったんだな

676 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 23:36:16.20 ID:SCqWQYPI0.net]
>>629
出来るに決まっている
OO言語はオブジェクト指向プログラミングがやり易いようになっているだけでそれじゃなきゃOO出来ないというのはOOについて理解していないだけ

677 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 23:46:49.71 ID:SCqWQYPI0.net]
>>644
多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書くというルールなだけ

それだけで呼び出し元のコードはほぼなにも考えずにベースクラスの機能を使うことができる

678 名前:デフォルトの名無しさん mailto:sage [2019/05/24(金) 23:58:34.02 ID:S5Q/uU3j0.net]
>>655
CでもOOできるし、継承できるし、オーバーライドもできる。
20年位前の本に「ANSI C に準拠したコンパイラならできる」と紹介されている。

メモリを意識したコードを書けない人には理解できないけどね。

679 名前:デフォルトの名無しさん [2019/05/25(土) 00:01:58.97 ID:7Hh+Cor80.net]
C言語はABIが標準化されている、という文を見たんですが、
その標準仕様の名前は何ですか?

新しいプラットフォームがその標準仕様を満たせば
バイナリレベルあるいはソースレベルで移植性があるんでしょうか?

680 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 00:07:07.65 ID:KPhaQb+n0.net]
>>654
ていうかお前、MZ級にウンコな片山博文やんけ。

>>660
標準の名前は無いんじゃないの?
とりあえず「ABI」でググれ。

681 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 00:11:09.80 ID:oops2jeN0.net]
アーキテクチャ跨いでABIが統一できるわけないよね
引数の渡し方なんてアーキテクチャ変わったらそもそも使えるレジスタ変わるし

同一アーキテクチャの特定OS内ならバージョン変わってもABI互換ってのは良くあるけど

682 名前:蟻人間 mailto:sage [2019/05/25(土) 00:29:35.52 ID:2ZlhwbAL0.net]
>>661
そのプライドを大切にしろよ

683 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 05:52:48.29 ID:Tic4GHY30.net]
>>645
お前のOOの定義書いてくれ
俺の思うOOじゃないとか言われたらどうしようもないわなw



684 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 05:57:11.32 ID:6KmI3UXB0.net]
Cでオブジェクト指向プログラムなんて書くのは時間の無駄
速度が必要な部分だけCで作るのが正解

685 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 06:05:28.22 ID:6T2yG8cn0.net]
>>641
てめえの怠慢を俺が尻拭いする筋合いはねえぜ
調べるところまで教えてやったんだ
自分で調べる気がねえなら不勉強のまま取り残されろ

686 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 07:19:56.39 ID:DOpjF4HUM.net]
>>665
> Cでオブジェクト指向プログラムなんて書くのは時間の無駄
そう言うこと
ただ時間がかかると言うのとできるできないの話は別
なのでお前のレスのほうが時間の無駄w

687 名前: mailto:sage [2019/05/25(土) 15:51:01.79 ID:jppBZDTS0.net]
>>658
>多重じゃない継承の場合Cでは1つめのメンバにベースクラスのインスタンスを書くというルールなだけ

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

となると一つめのメンバにベースクラスのインスタンスを書いても、コンパイラに入れ替えられてしまっては無意味なのでは?

688 名前: mailto:sage [2019/05/25(土) 15:52:11.46 ID:jppBZDTS0.net]
>>659
>CでもOOできるし、継承できるし、オーバーライドもできる。
できないとおもいますよ、できるというのなら >>630 を C で記述してみてください

>20年位前の本に「ANSI C に準拠したコンパイラならできる」と紹介されている。
出典を明記ください

689 名前: mailto:sage [2019/05/25(土) 15:53:43.84 ID:jppBZDTS0.net]
>>666
>てめえの怠慢を俺が尻拭いする筋合いはねえぜ
あなたは私の怠慢を主張するのと同様の筋で、私はあなたの欺瞞を主張します
出典元や引用を正確にできないのであれば、あなたは嘘をついていると判断されてもしかたがないと思います

690 名前: mailto:sage [2019/05/25(土) 15:55:14.60 ID:jppBZDTS0.net]
>>661
片山先生は私とは比較にならないほど生産性の高いプログラマですよ

691 名前: mailto:sage [2019/05/25(土) 16:03:59.98 ID:jppBZDTS0.net]
>>652
はじめて知りました、>>650 は勘違いした内容でした、すみません
ご紹介ありがとうございます。今試しているところです!

692 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 16:17:34.75 ID:Tic4GHY30.net]
>>668
真面目な話、規格書読んでこい
ツッコミどころが頓珍漢すぎる

693 名前: mailto:sage [2019/05/25(土) 17:02:40.54 ID:jppBZDTS0.net]
>>673
コメントありがとうございます。確かに >>668 には誤りが含まれていました

ISO/IEC 9899:1999
6.7.2.1



694 名前:.5
As discussed in 6.2.5, a structure is a type consisting of a sequence of members, whose
storage is allocated in an ordered sequence,

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

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

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

構造体の先頭にパディングがあった場合は、この記述は正しくないのではないでしょうか。
[]
[ここ壊れてます]

695 名前: mailto:sage [2019/05/25(土) 17:37:11.41 ID:jppBZDTS0.net]
>>674
よくよく考えると、私の「この記述は構造体のパディングが構造体の先頭に詰められる場合を排除していないと考えます」もかなり疑わしい、
パディングというものは、一つのメンバがあって、それに対してもう一つのメンバを置くときにパディングを置くものであって、最初からパディングを置く必然性がないですね

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

>>658 を認め、同時に単一継承であれば C で OO と継承を表現できることを認めます

696 名前: mailto:sage [2019/05/25(土) 18:11:59.97 ID:jppBZDTS0.net]
>>674
> a type consisting of a sequence of members, whose storage is allocated …
この is にも惑わされてしまいました
これは
a type consisting of a sequence of members, each of which is allocated about storage in an ordered sequence
とか
a type consisting of a sequence of members, each of which's storage is allocated in an ordered sequence
くらいに解釈するべきなんですね
検討する機会をいただきありがとうございました

697 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 21:04:32.61 ID:DDy3bloZM.net]
>>675
絶対許さんぞおおおお

698 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 21:07:06.72 ID:aM9QB8YDa.net]
オブジェクト指向って抽象化が目的なのに、メモリ配置とか気にするのは馬鹿みたいだよな

699 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 21:23:55.56 ID:cjrLAMgS0.net]
MicrosoftのCOMはほとんど全てのコンパイラが構造体のメモリ配列を同じ様にするってのを利用してるんだっけ?

700 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 22:13:30.07 ID:UN9uDEfaM.net]
>>678
ここにも概念と実装の区別がついてないバカが…w

701 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 23:25:49.27 ID:KPhaQb+n0.net]
>>669
C言語でオブジェクト指向を表現する (クラス、継承)
https://qiita.com/qiita_kuru/items/8f3441bce9b2f53d1d62
この辺でも読んどけ。

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

あ、同じ板でハッシュが一致してるのでお前は蟻。

702 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 01:24:13.78 ID:zv+FEFKTa.net]
>>681
またおまえか

703 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 08:36:08.16 ID:o+/j3IaP0.net]
>>670
は? 俺は主張なんざしてねえぜ
事実をありのまま指摘しただけだ
何勘違いしてやがる
というか勘違いということにせねば立場がねえってかw



704 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 08:56:22.54 ID:7tI1cTYc0.net]
もうこんなとこで喧嘩しても勝敗つかないんだからやめろw
仲良くできねえのかお前らは

705 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 12:29:05.12 ID:lzKtO2WM0.net]
でも冷静になって考えてみろ
単細胞時代から何億年と喧嘩してきた結果今の人間がいる訳だから喧嘩をやめてしまったらそれは果たして生物と言えるのか
逆に言えばAIが人知を超える時
人間は機械に滅ぼされ地球から人間はいなくなっているという事
つまり今何をすべきかと言うと人間は思考をやめアホになるべきである

706 名前:
そうアホの坂田こそ未来の救世主ネオなのである
[]
[ここ壊れてます]

707 名前: mailto:sage [2019/05/26(日) 15:17:23.15 ID:CpBTYp0n0.net]
>>681
そのご紹介のリンク先は、内容について、はっきりいって詰めが甘いです
すなわち、継承と委譲を区別できていません
そんな中途半端な理解で quita に掲載するとか、玉か石かどちらかといえば、石の部類でしょう、全然参考になりませんでした
そんな中途半端な内容の記事を掲載するあなたも同様と判断いたします

708 名前: mailto:sage [2019/05/26(日) 15:19:14.79 ID:CpBTYp0n0.net]
>>683
事実かどうかは、主観的か客観的か、に依存すると思いますが、
相対論においてはすべての事象について純客観的などありえない…@
ので、@より、あなたは主観を主張しているものと私は理解します

709 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 15:46:43.76 ID:aNhG7Lwu0.net]
>>686
「継承」に必要な操作一式を委譲に基づいて提供できているなら継承できていると思うんだけど、
言語サポートを伴って暗黙的に機能しない限り「継承」と呼ぶべきではない、ということなの?
そこで明確に区別することにあんまり意義が見出せないんだけど、その定義どっか出典示せる?

710 名前: mailto:sage [2019/05/26(日) 15:52:14.70 ID:CpBTYp0n0.net]
>>688
委譲による実装で継承を実現できているのなら、それは継承(の一形態)である、…@ という主張ですね
@は私にも理解できますが、委譲はダイヤモンド継承を回避できない欠点があるのでは、と考えています
「ダイヤモンド継承」については C++ の書籍には大概載っているかと、具体的な書籍名は探しておきます

711 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 16:00:20.28 ID:Jdhtsrqd0.net]
まあ継承なんてオブジェクト指向と関係ないからね

712 名前: mailto:sage [2019/05/26(日) 16:02:51.60 ID:CpBTYp0n0.net]
>>690
それは初耳です
Object Oriented に継承は憑き物だと思っていました、継承のない OO って存在するのですか?それは例えばなにですか?

713 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 16:08:55.02 ID:aNhG7Lwu0.net]
>>689
ちょっと何言ってるかわからないな。
ダイアモンド継承の問題を「継承」で回避しているが委譲では回避できないであろう例を挙げてくれたら考える。

明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。



714 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 16:22:19.45 ID:Jdhtsrqd0.net]
>>691
なにって、言語を知りたいということ?

715 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 16:37:44.23 ID:vwTAovQx0.net]
クラスベースのOOP言語ではクラスの継承は一般的だけどプロトタイプベースのOOP言語では継承の概念は存在しないよ

716 名前: mailto:sage [2019/05/26(日) 16:40:12.48 ID:CpBTYp0n0.net]
>>692
クラス A, B, C, D について、
A のメンバ変数を a とする、また
B->A(B は A を派生する)
C->A
D->B, C (多重継承)
において、これを委譲で実装すると、B.A.a と C.A.a が同じであるべきにもかかわらず二重にインスタンスとして生成されてしまうので、
継承で実装した D.a を、委譲で実装した D.B.a と同一視するか、D.C.a と同一視するか、また継承における D.a を更新した場合に委譲では D.B.a と D.C.a の両方を更新するコードを生成しなければならないのか、
等あいまいな部分がでてくる、これがダイヤモンド継承問題です

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

以上より委譲で継承のすべてを代行できないため、委譲と継承を区別する必要が生じると考えます
ただし、多重継承を認めないのであれば、委譲と継承は同一視しても差し支えないと考えます

717 名前: mailto:sage [2019/05/26(日) 16:41:21.10 ID:CpBTYp0n0.net]
>>693-694
ふーん、インタプリタ JavaScript には継承はないのですか

718 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 16:41:38.74 ID:vwTAovQx0.net]
https://ja.m.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9

719 名前: mailto:sage [2019/05/26(日) 17:08:49.07 ID:CpBTYp0n0.net]
>>692
>明確に区別しないことも理解できると言うなら「詰めが甘い」とか「中途半端」とか言ってたのは何なのか・・・。
「単一継承に限定するのならば委譲による継承の実装も可能である」という意味での>>689の「理解します」の文言だと解釈ください
ただし委譲で継承をすべて実現できないので、>>681 掲載のリンク先は「詰めが甘い」と判断せざるを得ない、そんなリンク先を紹介する >>681 も同様と判断するものです

720 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 17:11:49.57 ID:iR9VJ5EUa.net]
継承がオブジェクト指向と無関係なんだから、委譲で実現する必要がない

721 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 17:25:25.86 ID:aNhG7Lwu0.net]
>>695
C++が仮想継承・多重継承でやっていることをコードで書き下せば済む話。
アップキャストがnopで済むか、オフセットの足し算になるかなどの詳細に基づいて区別しろってことに
聞こえるんだけど、やっぱりそんな区別の意義が見えてこない。

722 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 17:39:21.34 ID:kcdU4Ge60.net]
もうそろそろ別スレ立ててやれや

> それは smalltalk 的な OO であって C++ の OO の概念とは多少食い違うと思います
とか言う様な奴を相手にしても永遠に終わらんと思うが…

723 名前: mailto:sage [2019/05/26(日) 17:50:19.72 ID:CpBTYp0n0.net]
>>700
>C++が仮想継承・多重継承でやっていることをコードで書き下せば済む話。
そこで実現されているのは私のいうところの継承であって、私のいうところの委譲ではありません
委譲ではダイヤモンド継承に対応できない(選択肢を提供できない)
したがって、委譲と継承とは区別するべきであり委譲で継承を実装するべきではない、という私の主観には一貫性があると思います



724 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 17:56:41.22 ID:NrZyzakr0.net]
>>702
継承はだめだよ
これから使ったら反省文ね

725 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 18:07:56.35 ID:aNhG7Lwu0.net]
>>702
むちゃくちゃだなぁ。「私のいうところの」「継承」「委譲」の区別がどうにも掴めないし、
その区別の意義も示されなさそうだし、迷惑してる人もいるみたいだから、離脱させてもらうよ。

726 名前: mailto:sage [2019/05/26(日) 18:09:31.06 ID:CpBTYp0n0.net]
>>703
私がいつ「継承は要らない子」とかいいましたか?
あくまでも「継承を委譲で実装できない」とは言っていますが(これは部分的に意見を修正していますが)「継承不要論」とかは一切主張していないと考えていますよ

727 名前: mailto:sage [2019/05/26(日) 18:13:13.41 ID:CpBTYp0n0.net]
>>704
継承と委譲の区別は必要だと思いますよ、その言葉を贈らせていただきましょう

728 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 18:34:08.86 ID:NrZyzakr0.net]
>>705
だから、世界の共通認識として要らないもの。
使っちゃだめ。

729 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 18:57:26.86 ID:mCW+tIqA0.net]
もういい加減やめてくれないかな
やりたいなら、Cでクラス実装とかって
別スレたててその中でやってくれ

730 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 19:03:45.32 ID:NrZyzakr0.net]
>>708
またおまえか

731 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 20:50:42.22 ID:o+/j3IaP0.net]
>>706
私のいうところのって、最初の論旨からずいぶん乖離しているな
カプセル化や継承ができるかどうかって話だっただろうがよ

いつから、おまえのお気に召すかどうかって話になったんだよ

732 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 23:38:41.06 ID:SA/0I36h0.net]
>>686
煽って、良い文献の情報を得ようとしているのだろうが、カスにはやらんよwwww

733 名前:デフォルトの名無しさん [2019/05/27(月) 01:54:45.96 ID:sXav5Bzw0.net]
https://jp.quora.com/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B



734 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 02:52:02.77 ID:jiPRfYyG0.net]
ソロソロ終わって良いですよね?
この議論は、C使っている人とは違う世界に感じる

735 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 03:09:42.07 ID:HzhW79+j0.net]
>>713
またおまえか

736 名前:デフォルトの名無しさん [2019/05/27(月) 09:01:49.81 ID:Nqk3VxBP0.net]
stddef.hをインクルードして
#

737 名前:define __STDC_WANT_LIB_EXT1__ 1
を定義して
-std=c11をつけても
gccでrsize_tが使えないですけど
なぜですか?
windows版のGCCでは使えました
[]
[ここ壊れてます]

738 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 09:23:40.73 ID:or6IbtWZa.net]
defineの順番とか…

739 名前:デフォルトの名無しさん [2019/05/27(月) 09:34:14.79 ID:Nqk3VxBP0.net]
>>716
順番は試しましたが駄目でした

740 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 10:04:44.33 ID:PB+ZSyAza.net]
rsize_tって多分オプションだから実装されてないよね?
windowsはなぜか実装してる

741 名前:デフォルトの名無しさん [2019/05/27(月) 10:11:08.57 ID:Zyn15i1D0.net]
C#でポインタ使えばC、C++は無くても良いんじゃないですか?

742 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 10:15:55.39 ID:gR3ITcWOM.net]
C#使うならポインタのように面倒臭いこと考えなくても変数でも関数でも参照できるだろ

743 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 19:48:50.47 ID:0mZL0xC90.net]
C#のポインタはC/C++ほど使い勝手が良くない
C#でポインタを使ったところでパフォーマンスはC++の半分程度

まあトータルで見れば最優秀クラスの言語なのは間違いないけどね
C++みたいなスパゲティ言語ではないし



744 名前:デフォルトの名無しさん [2019/05/27(月) 20:36:21.78 ID:f4m/nmMua.net]
まあ、だいたいの後から出た言語はC/C++の欠点を補おうとしているのでポインタがあっても安全なのが普通だな。

745 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 20:42:45.71 ID:MaSSH1d10.net]
安全じゃないのがc#のポインタの特長だろ。
特徴じゃなく

746 名前:デフォルトの名無しさん mailto:sage [2019/05/27(月) 21:12:57.55 ID:RgnUDQi4a.net]
そりゃC#のポインタ使うにはunsafeオプションが必要だからね。安全じゃないわね。
C#のポインタは過去資産APIを使うための必要悪って感じか。

747 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 07:12:55.99 ID:gr6HI2ftM.net]
>>722
Cの前からでてたPascalにもポインタはあるんだが…
むしろC/C++が例外的

748 名前:デフォルトの名無しさん [2019/05/28(火) 09:09:59.25 ID:HGTlDNNW0.net]
数年前からこのプロジェクトがちょっと注目されてるけどどう思う?
RustはC++を置き換えてもCを置き換えないだろうと思うし、
ZigはCの置き換えとしては妥当なんじゃないかという気がする。
Cより高速、単純、堅牢らしい。
https://ziglang.org/

749 名前:デフォルトの名無しさん [2019/05/28(火) 09:29:30.01 ID:HGTlDNNW0.net]
Cより速いと主張
>Speaking of performance, Zig is faster than C.

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

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

個人的にとても興味を持ってるんだが

750 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 17:05:35.46 ID:5GqHhS1Q0.net]
CはC++ほどではないにせよ色々酷いから
Cを置き換えられる言語があるなら見てみたいしぜひ置き換えてほしい

751 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 17:30:53.21 ID:vL2LyOeQ0.net]
>>726
ttps://www.spriters-resource.com/resources/sheets/34/36939.png
ちょっと検索してみたらもうドット絵まで準備されてるらしい
さすがに西洋人は仕事が早いな

752 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 19:02:59.10 ID:Pzgny9jf0.net]
https://www.datadeliver.net/receiver/file_box.do?fb=966f97555e424f19a29d0d866b4b3cf5&rc=683943257e194056afc95195b542ba5d&lang=ja

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

753 名前:ゥったのか、どうして10が無限に生成されるのか、教えて欲しい

環境は学校の端末演習室でやったから詳しいことはわからんです
[]
[ここ壊れてます]



754 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 19:04:37.65 ID:F6815kaN0.net]
>>730
それじゃあ検証のしようがない
ネットカフェで書いてここに晒せ

755 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 20:11:39.46 ID:vL2LyOeQ0.net]
「無限に10を生成するようになってしまった」「どうして10が無限に生成されるのか」
コレがポイントだな
無限に生成してるように見えるだけだよ

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

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

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

}

756 名前:デフォルトの名無しさん [2019/05/28(火) 21:09:24.77 ID:Rd7hCJnFa.net]
>>725
Pascalの方が先にできたんだっけ?

まあでも用途が大幅に違うよね。Pascalはコンピュータの学習用の高級言語でCはOS記述用でアセンブラ代わりに使う言語。

757 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 21:27:52.19 ID:jSvCRMUQ0.net]
Pascalが嫌いな人が作った言語だ

758 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 22:21:26.92 ID:/lAZ9dU10.net]
>>733
だからそんなことを言い出したら>>722の言うポインタが安全な言語って用途が違う言語だよね
って話にしかならないんだが…

759 名前:デフォルトの名無しさん [2019/05/28(火) 22:24:51.47 ID:Rd7hCJnFa.net]
>>735
まあそうだな。
Cは用途が違う上に古くて安全性が低い感じか。

760 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:20:22.65 ID:jSvCRMUQ0.net]
安全性って何だよ
インテルのerrataみたいなことか?

761 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 23:34:40.02 ID:IamnQRk90.net]
子供にはナイフを使わせるなというのと同じ類いか

762 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 04:57:03.97 ID:mWed49vm0.net]
>>736
いやOSを書くにはその安全性が邪魔になるから両立は難しいよ

763 名前:デフォルトの名無しさん [2019/05/29(水) 06:20:35.18 ID:D5Uzvk1s0.net]
OSのコードはどんな感じなの?
ポインタを使ったトリッキーな事をやってるの?

未だにLinuxでバッファオーバーフローの脆弱性出てるよね



764 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 06:48:57.50 ID:Bfh00rIBM.net]
>>740
OSのソースなんてちょっとググればいくらでも出てくるから自分で見なよ

765 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 07:45:37.52 ID:6C23lth10.net]
見たこともないやつが議論してたのかよ

766 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 08:03:59.01 ID:aFUCBt4U0.net]
詳細linuxとかいう1000ページの宗教書だろ
持ってるだけで御利益がある

767 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 08:13:08.04 ID:akQz27P/d.net]
オープンソースなのだから1分もあればソースコードくらい見られるだろうに

768 名前: mailto:sage [2019/05/29(水) 18:31:01.76 ID:8RGCI4670.net]
>>740
>未だにLinuxでバッファオーバーフローの脆弱性出てるよね
最近は聞かないね…

769 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 19:51:04.91 ID:D+pGsdPRa.net]
今普通に静的・動的解析使うとバッファオーバーフローなんてあり得ない感じするわ。

770 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 20:40:15.44 ID:rT4tqcG+0.net]
strcpyとかsprintfとか使ってるコードはまだたくさんあるでしょ
dstのサイズ指定しないライブラリとか

771 名前:デフォルトの名無しさん [2019/05/29(水) 21:00:57.32 ID:FFsAnOexa.net]
Cは標準ライブラリ考え直した方が良いかもね。

772 名前:デフォルトの名無しさん [2019/05/31(金) 08:23:23.52 ID:JBiczG6TM.net]
Cが最も好きだけど、
C十十のほうがライブラリが
便利なのあるから、
個人で趣味で作るものは最近は
CとC++

773 名前:ャ在で作ります。
わりと自由に混在できるので
とても助かってます。
こうゆの俺だけですかね?
[]
[ここ壊れてます]



774 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 08:28:11.59 ID:7PD5X056a.net]
C††

775 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 08:30:02.90 ID:LyENK1r60.net]
C‡‡

776 名前:デフォルトの名無しさん [2019/05/31(金) 09:21:15.46 ID:GTUdpXapa.net]
С++

キリル文字

777 名前:デフォルトの名無しさん [2019/05/31(金) 18:42:40.60 ID:JBiczG6TM.net]
C十十つ
―ー

778 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 18:46:16.16 ID:4felF8bG0.net]
C田田

779 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 19:11:42.88 ID:Ki0lpFF5M.net]
C云々

780 名前:デフォルトの名無しさん [2019/05/31(金) 19:45:27.77 ID:/GnAMAD/a.net]
⊂┼┼

781 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 21:44:53.32 ID:r0b/3vSWd.net]
C言語認定一級を取得したら転職でどれぐらい評価されますか?

782 名前:デフォルトの名無しさん [2019/05/31(金) 21:48:01.31 ID:I0+j7s4/a.net]
さあ?
その会社がどの程度その知識を必要としているかで変わるのでは?

783 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 21:48:52.32 ID:r0b/3vSWd.net]
>>758
そういうときは一般化して正確じゃなくても妥当な範囲で思考して回答する癖をつけましょうね〜



784 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 21:56:26.15 ID:OHagz7+U0.net]
うちの周囲じゃ全く参考にもしていないし資格給が出るわけでもないって所が多いな

785 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 22:06:46.05 ID:4X6MeSMk0.net]
英検1級の方が重要そう。

786 名前:デフォルトの名無しさん [2019/06/01(土) 11:44:52.57 ID:2YdNSpFdd.net]
codepad.org/NUCaFYyE
雨が降る様子を自分の今持ってる知識だけで作ろうとしたんですが、表現が上手くできてない気がします

だれか改善案があれば助言お願いします

787 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 18:13:48.99 ID:w9UetZ9K0.net]
>>762
それはC言語の問題ではなかろう

788 名前:デフォルトの名無しさん [2019/06/01(土) 18:56:55.84 ID:2YdNSpFdd.net]
>>763
抜けてました
プログラムの問題として、実行すると縦に雨粒が重なってしまうのが目立っていて、この原因がわからず質問しようと思いました。

789 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 19:26:44.16 ID:w9UetZ9K0.net]
>>764
それは使用する言語とは無関係に、雨らしく見せるアルゴリズムの問題ではないか?
ある処理をC言語で実現したいがどう書いていいか分からないとか、書いたものが想定通りにならないのはなぜかとかなら答えようがあるが。

790 名前:デフォルトの名無しさん [2019/06/01(土) 21:18:58.51 ID:2YdNSpFdd.net]
>>765
1番上の行で雨を発生させるとき何列目で発生させるかは乱数できめているはずなのに、何行か連続で同じ列に発生しているのがよく見られていて、それが何故なのかがわかりません。

このプログラムは改良中のもので、その前のプログラムは雨粒が全部同じ速さのやつを作っていてそれは問題なく(上の現象も起きず)動いていたので、乱数でなくプログラムの問題かなと思って質問しました

791 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 21:37:41.87 ID:njUSTe0T0.net]
>>766
乱数っていうのは偏るものだから、同じ列に連続して発生することが普通。
同じ列に発生しないような作為をする場合は乱数とは言わないと思う。
https://twitter.com/Newton_Science/status/1031788874836529152

あと、'o'が縦に連続するのに違和感があるのなら'|'などに置き換えれば良いと思う。
https://i.imgur.com/wR1mNu5.gif
みたいな感じで
適当に作っててチカチカしちゃってるからあまり参考にならないかもしれない
(deleted an unsolicited ad)

792 名前:デフォルトの名無しさん [2019/06/01(土) 22:01:32.09 ID:2YdNSpFdd.net]
>>767
すごい!!!
一気に雨っぽく見えるようになりましたw

乱数の件大変

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

あと、もしよければGIFのやつのソースコードを貼ってもらえないでしょうか。よろしくお願いします
[]
[ここ壊れてます]



794 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 22:03:49.20 ID:gZsm+Fjra.net]
一様分布でなくても乱数とは言えるだろう

795 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 22:10:20.53 ID:njUSTe0T0.net]
>>768
一応貼るけど自分はC言語あまり得意でない上に適当にササっと作ったのだからあんまり参考にはしないでほしい
https://ideone.com/FG3nNS

system("cls")で画面更新してるけどチカチカさせずに滑らかに動かしたいならpdcursesとか使ったほうが良いと思う
あとLinuxだったらclsでは動かない

796 名前:デフォルトの名無しさん [2019/06/02(日) 08:12:25.21 ID:Df5btDJSd.net]
>>770
ありがとうございます!
初心者なので関数の使い方とか、あと自分がいかに無駄なコードを書いてたかとかがわかってとても参考になります

調べてみようと思います。ありがとうございました

797 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 13:28:56.70 ID:gM/IYiKd0.net]
constが外れるのにキャストせずに
char *p = "abc";
とできることを定めている条文どこだっけ?

798 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 14:35:27.10 ID:hvNC8EHQa.net]
初期化はちょっと違うんじゃねえかな

799 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 19:44:47.54 ID:JpBlPJqE0.net]
https://i.imgur.com/bxgSD4n.jpg
ちんぷんかんぷんなので教えて下さい

800 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 19:47:13.69 ID:aVpNGdHY0.net]
火の玉ストレートでワロタw

801 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 19:51:23.16 ID:NMMhu3n80.net]
>>774
糞みたいな問題だな
家木臭すぎ

802 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 19:56:34.99 ID:JpBlPJqE0.net]
解決しました

803 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 19:56:39.36 ID:vGrK+0JX0.net]
もうちょっときれいに写せないのか



804 名前:デフォルトの名無しさん [2019/06/03(月) 21:20:26.29 ID:CuEu7mica.net]
影があって見えない。

ていうか、試験中に撮影して書き込みか?
思い切ったカンニングだな。

805 名前:772 mailto:sage [2019/06/03(月) 22:17:42.98 ID:V6PZ+bAi0.net]
(3)のとこ、この試験問題を作った教官がどういう教え方をしているのか聞かせてくれ

806 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 22:19:26.68 ID:V6PZ+bAi0.net]
正解は *(const char **)&s なんだが解答群にねえだろ

807 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 01:35:34.87 ID:TgdlAqGq0.net]
>>781 C++11以降でもなさそうだし、回答群にあるsでいいでしょ。

808 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 07:58:43.31 ID:e9k+jtYr0.net]
タイミングがよすぎるし>>772>>774は同一人物なのかな

809 名前:デフォルトの名無しさん [2019/06/04(火) 10:12:17.26 ID:prB+PlYza.net]
ワッチョイからすると別のようだが

810 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 10:47:57.52 ID:PKXus+yhx.net]
簡単なテストがちんぷんかんぷんな人が規約を気にするとは思えない。

811 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 11:04:10.57 ID:eBRK1s1cH.net]
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる   
https://pbs.twimg.com/media/D8I_kMUUYAEOmcl.jpg 
     
@ スマホでたいむばんくを入手  
A 会員登録を済ませる     
B マイページへ移動する   
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)     
   
今なら更に4日18時までの登録で2倍の600円の紹介金を入手    
クオカードとすかいらーく優待券を両方ゲットできます。  
    
数分で終えられるのでぜひお試し下さい。 

812 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 13:24:20.51 ID:VVsdR08YH.net]
>>786
QUOカード良いな

813 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 15:35:37.38 ID:ZIqEmt8SM.net]
>>786
複数スレに書き込みまくってID変えてレスも書き込みまくってる。



814 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 17:39:59.80 ID:dFy1Csfg0.net]
迷惑メール来るようになるっていう報告もあるからこれはスルーしたほうが良いと思う

815 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 17:46:57.34 ID:VrCvogjT0.net]
ありとあらゆるスレに貼られてるbotだから気にしなくていいぞw

816 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 17:48:42.06 ID:rpsLXROr0.net]
内容を変えてNG対策すり抜けをやろうとしているから、悪質だと考えた

817 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 18:10:41.59 ID:QEritYjya.net]
サービスの提供もとに不正行為として通報して、そいつの招待コードとやらを無効にさせられないかな。

818 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 18:49:11.42 ID:rpsLXROr0.net]
提供元も共犯だろう

819 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 20:15:40.66 ID:dFy1Csfg0.net]
これってどこの企業がやってるんだろう
普通に5chでは荒らしに近い迷惑行為だしなんとかできないかな

820 名前:デフォルトの名無しさん [2019/06/04(火) 20:19:32.69 ID:RBIldFVda.net]
しかし500円だの600円だのしょぼいな。
PayPayみたいにずっと二割引でたまに全額当たるぐらいやらなきゃ宣伝にならんだろう。

821 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 20:43:44.67 ID:rpsLXROr0.net]
宣伝じゃなく、個人情報の収集だから

822 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 00:33:04.12 ID:ZHHYr8Rz0.net]
とてもいいアプリだからダウンロードして星つけてあげたらいいと思うよ

823 名前:デフォルトの名無しさん [2019/06/05(水) 10:04:09.95 ID:Fd++qFdya.net]
激しいステマ



824 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 16:33:58.73 ID:uIEpx76AH.net]
真って0でしたっけ?1でしたっけ?0以外でしたっけ?1以外でしたっけ?

825 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 17:02:27.40 ID:HLWbZT6Fa.net]
>>799
bool型の1です。

826 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 17:27:02.62 ID:RHh4qcVs0.net]
0以外は真として扱われることが多いな。
0は明示的にfalseになると思う。
そのfalseの否定がtrue。

827 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 17:31:47.53 ID:OLbvc6Nr0.net]
論理演算結果を整数化したら 偽が0 真は1
整数を論理評価したら 偽が0 で真はそれ以外

828 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 17:33:03.09 ID:sehGKr170.net]
#define TRUE (1==1)
#define FALSE (!TRUE)

こんな事書いてたな
値がいくつなのかは気にしなかった

829 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 20:41:26.72 ID:NHeyKhkN0.net]
OR EAX,EAX
JZ FALSE
JNZ TRUE

こんなんか?

830 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:31:11.89 ID:51aJPRpO0.net]
TRUEと比較するなって先輩に言われたろ

831 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:37:49.54 ID:e6zybBXY0.net]
!!a == TRUE ならセーフになると思われるー

832 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:15:27.47 ID:RQudHa2vd.net]
論理演算では1が真なのに終了は1が異常終了なのはなぜですか?
1が正しく0が間違いというイメージなのですが

833 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:18:06.19 ID:RHh4qcVs0.net]
昔はintを返す習慣が多分にあったのでその習慣によるが、自分は異常終了は-1返してたな。



834 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:19:30.98 ID:0dWbT8qma.net]
>>807
いや、boolが戻り値なら真を成功にすることがむしろ多いと思う。
「エラーを返す」関数の需要が多いということではないか。

835 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:21:18.54 ID:51aJPRpO0.net]
エラーの種類を沢山返せるから

836 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:23:25.13 ID:e6zybBXY0.net]
正常というのは1つの状態しかないが
異常には色々な種類があるのでそれを区別するためにコードとして返したい

というのと

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

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


なぜC言語では偽を0に割り当てたのか?という問いの答えを求めているのならば…
俺は知らない

837 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:23:54.80 ID:Bjvb97BWx.net]
>>807
正常は 0でいいけど、異常はいろいろな状態の別を報告できるようにでは

838 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:30:40.09 ID:51aJPRpO0.net]
ソフト会社に長年いて開発者からこの質問は初
OSインストールできませんなんてすごく高度なんだなって思った

コマンドのテストでコマンドの戻り値ってあるんですがなんですか?

839 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:36:39.33 ID:0dWbT8qma.net]
>>813
windowsの終了ステータスの確認の仕方とか忘れるしなあ。
言葉で出てくる結果しか見れないなんて普通だと思うわ。

840 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:42:11.06 ID:xj9RlcCA0.net]
0が偽なのにnoerrというイカれた慣習はどうして生まれたんだろうねぇ。

841 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:58:47.67 ID:DaiiMVNnx.net]
最初に誕生した OS、system/360 の JCLでも、正常は 0、警告が 4だったか 8だったかで、異常が 8だったか 16だったかだったな
z/OSでも同じだろうけど
知らんけど

842 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 23:33:27.02 ID:sehGKr170.net]
幸福な戻り値はどれも似たものだが、不幸な戻り値はいずれもそれぞれに不幸なものである。

843 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 23:33:41.86 ID:nzmV+Edn0.net]
if (error == 0)
で違和感ないじゃん



844 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 03:30:43.12 ID:KzIynz9K0.net]
0 informational
1 warning
2 error
3 severe
4 critical

845 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 11:21:36.15 ID:5iouJYEP0.net]
返り値0でエラーなしはUNIXのコマンド終了ステータス以来の慣習かな。
「正常終了」は状態が1種類しかないけど、失敗は「どう失敗したか」で
複数の状態があるから、正常で0、他の値はエラーコードってのは便利でしょ。

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

関数は一般にエラー状態を返り値で返す、と思っていれば
正常 == 返り値0 == false は違和感ないかと。
このルールから外れてるのは「失敗時にNULLを返す」タイプの関数で、
結構たくさん存在するのが困ったところだけど。

846 名前:デフォルトの名無しさん [2019/06/08(土) 11:32:28.80 ID:7CBKOF2N0.net]
Cでは同一のもとして動かせてしまうが
そもそもエラーコードとboolを同一視してる時点で論外なんだが

847 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 11:38:57.76 ID:WG7jlf5q0.net]
論理型を別に設けずに整数型で代用してしまおうというアイデアはBやCの言語仕様をコンパクトに
抑えるのに役立ったが、今となってはプリプロセッサマクロと同じくらいの悪しき遺産だなぁ。

848 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 14:58:06.03 ID:KzIynz9K0.net]
え、何か問題あるか?

849 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 15:35:48.39 ID:X+3AMWAUM.net]
C99以降であれば_Bool型を使えばいいのでは?

850 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 15:41:42.45 ID:KzIynz9K0.net]
ダメだこりゃ

851 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 15:41:57.08 ID:bm2ApAetM.net]
正常時1で異常時0を返す関数が混ざってたり
正常時ポインタで異常時ヌルポ返す関数があったり
それらの関数の返り値を全部 if でチェックしててカオスだったことがあります

852 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 15:56:39.68 ID:KzIynz9K0.net]
BOOLを返す関数が負数を返したかどうか調べにゃあかんやつとかな

853 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 16:38:04.87 ID:WG7jlf5q0.net]
ワインバーグの本にあったなあ。ドル紙幣はみんな同じ色、同じサイズで見分けがつきにくいけど、
それが常識だと思っている人は、一定の確率で間違えてしまうことも世界の法則で仕方のない
ことだと思っているとか。



854 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 17:13:44.27 ID:auwh2hzj0.net]
>>827
GetMessage()の悪口はいくら言ってもよいぞ
DWORDにしとけよ

855 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 18:39:07.71 ID:jm0tDZO60.net]
>>826
カオスっていうかこれ普通じゃない?
標準ライブラリのラッパー書くとき互換性保つために0成功にするでしょ
で他のオレオレライブラリはboolという

856 名前:デフォルトの名無しさん [2019/06/08(土) 18:53:36.19 ID:jXs/KV+s0.net]
戻り地がboolのときはtrueが成功
intのときは0が成功なんだよ

857 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 19:39:01.75 ID:ogfAGAzJ0.net]
bool型ができたのはC99のときなので

858 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 19:42:23.71 ID:jm0tDZO60.net]
boolぐらいなにもインクルードしなくても使わせてくれぽよ

859 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 19:54:54.89 ID:ogfAGAzJ0.net]
「歴史的理由」という奴

860 名前:デフォルトの名無しさん [2019/06/08(土) 21:28:56.66 ID:gCLo3iIIa.net]
>>830
それのせいでPrelではシステムコールと同名の関数の返り値がいまいち統一取れてなかったりして、結局マニュアル見ながら個別に覚えざるを得なかったりする。
Perlはだいたいは1が成功でundefが失敗なんだけどね。(undefはCでのNULLみたいなもの。未定義を意味する。定義されてて値が0の時とは違うが、書き方によっては同じように扱えることもある)。

861 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 21:58:16.60 ID:nbjDJ9kZa.net]
今C++にあるoptionalだっけ?
あんな感じの有ってもいいな。かなりうざい感じになるから使わんか。

862 名前:デフォルトの名無しさん [2019/06/09(日) 11:06:53.62 ID:42ARNGRn0.net]
インクルードをURLで引っ張ってこれたら面白いのに。

863 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 11:17:01.45 ID:ZHA7gcDF0.net]
一発でウイルス仕込まれそう



864 名前:デフォルトの名無しさん [2019/06/09(日) 11:59:40.15 ID:W83DJxDE0.net]
コスパ最強の副業「動画編集」で稼ぐ方法【生ハム登場】
https://www.youtube.com/watch?v=0ogHVUKoa8k
【最強の副業】動画編集で稼ぎ続ける人の条件【未来予想】
https://www.youtube.com/watch?v=e-IA4ePHzOs
【おすすめ副業・在宅ワーク】「動画編集」は初心者でも時給1,500円狙えます。
https://www.youtube.com/watch?v=8gYAqdSsI98&t=168s
【与沢翼】動画編集素人でも本気でやれば個人で月収1000万も夢ではないですよ。
実は動画ってすぐプロと同じクオリティで作れちゃうし月収20万はすぐですよ
https://www.youtube.com/watch?v=ws55W45OLbE
センスのいい映像を短時間で編集する方法
https://www.youtube.com/watch?v=k0TT4Tbf_Ec

865 名前:デフォルトの名無しさん [2019/06/09(日) 14:38:56.62 ID:zgQq0a060.net]
>>837
/use/include ディレクトリをNFS マウントでもしとけ。

866 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 14:18:29.61 ID:suKt4vmPd.net]
すみません、質問があります。

環境はlinuxです。
ある共有ライブラリlibA.soをロードするプログラムbがあります。
このプログラムbをlibA.so抜きでgccでビルドすることはできるでしょうか?
もちろん実行時にはlibA.soは用意します。

867 名前:デフォルトの名無しさん [2019/06/11(火) 15:09:21.38 ID:UmxJxqMia.net]
>>841
リンクされる関数やグローバル変数が全て揃ってれば誤魔化し効くのではないかな。

868 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 16:20:37.89 ID:X43Szptna.net]
シンボルだけ定義したsoファイルを用意するのが普通ではないかと

869 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 18:35:03.43 ID:z8NS6dzQ0.net]
ダミーファイルを用意とか、かっけえな

870 名前:デフォルトの名無しさん [2019/06/11(火) 20:38:50.54 ID:UmxJxqMia.net]
そ、そうか?

871 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 21:26:50.36 ID:suKt4vmPd.net]
ビルド用のsoファイルを用意する、でいこうと思います。ありがとうございました!

872 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 22:01:48.05 ID:vnr40KfNa.net]
スタブってやつね。
dlopen使うと基本そうなると思う。
もともと自動的なシンボル解決して

873 名前:る場合は無視できたかも。 []
[ここ壊れてます]



874 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 00:00:59.88 ID:82Q6hISi0.net]
>>847
お前は何を言ってるんだ

875 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 02:05:00.40 ID:vWkgJgOw0.net]
たぶん、DLL import, export みたいな定義ファイルさえあれば、コンパイルできるだろ?

876 名前:デフォルトの名無しさん [2019/06/12(水) 09:25:53.48 ID:apqCeTcNa.net]
DLL? Windowsだとそうなの?

877 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 10:40:58.95 ID:QpFBULjO0.net]
a) dll import キーワードつきのヘッダでコンパイル
 DLLを読み込みシンボル解決する .lib をリンク
 実行時には dll 読み込みをやってくれる (無いと文句言う)

b) 自前で DLL読み込んで GetProcAddress で関ポにセットして、
その関ポを呼び出すラップ関数を用意
  自前ロードしてるので、実行時に無い時別の処理の記述が可能になるん

878 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 13:22:19.29 ID:tXoihok+d.net]
大学でc言語を学び始めました
ポインタが意味不明でした
何がわからないのかわからない

879 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 13:54:13.91 ID:wTJRUi3Ix.net]
メモリとアドレスの概念が分かってないからじゃね?

880 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 19:07:04.64 ID:mXxRrk+K0.net]
現実世界にポインタと同じものを説明する概念がないから簡単な説明のしようがないんだよなぁ。住所録とか余計こんがらがるし。
素直に本を沢山読んでプログラムを組んで慣れるしか無い

881 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 19:27:38.29 ID:HQZYLHkVa.net]
本にページ数がない世界?

882 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 20:56:34.51 ID:8abVSTNa0.net]
アドレスは&つけてprintfした時に出てくるやつでしょ?
箱のラベルみたいなのだとかなんとか言われた気がする
メモリは単純に容量?

別関数で計算した値をmain関数に持ってくる時にポインタを使えばreturnがいらないだとかコピーじゃなくて直接数値を変えるから処理が楽だとか書いてあるけど結局普通に代入するのに比べて利点がよくわからない

883 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:10:17.33 ID:mvKDv9Bs0.net]
タワーマンション



884 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:10:41.15 ID:HQZYLHkVa.net]
何かの容量と言ったときの「何か」がメモリです。
利点は基本的にないです。

885 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:22:11.61 ID:0e3y3dPM0.net]
データが存在する場所

886 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:44:19.75 ID:VQ1VjdQ1M.net]
みんな思い思いのモデルで遊んでるから、パパは箱モデル出しちゃうぞ

887 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:45:29.38 ID:vVgcrwZV0.net]
うさみみハリケーンでメモリ覗いてチートしよう!

888 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:52:15.32 ID:o6WQvi940.net]
天使のような微笑みに
時は立ち止まる

889 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 22:05:37.40 ID:mXxRrk+K0.net]
なんか分からない部分のコード示してもらわないと
ここの有能な人たちもどう説明したらいいか分かんないから雑談始まったがw

890 名前:蟻人間 mailto:sage [2019/06/13(木) 22:14:30.76 ID:wtG0GGqp0.net]
1ビットが0か1かの二通りを表せる情報量。
1バイトは0〜255までの256通り(2の8乗)を表せる情報量で8ビットに等しい。
1バイトを複数並べたのがメモリーで、各バイトの位置がアドレス。

891 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 22:16:01.81 ID:dMX2AWSU0.net]
このスレにエスパーいるの?

892 名前:蟻人間 mailto:sage [2019/06/13(木) 22:22:12.70 ID:wtG0GGqp0.net]
アドレスに型情報を加えて、先頭アドレスを起点として配列のようにアクセス可能にしたものがポインタ。
しかし、配列は実体を要求するが、ポインタは実体を要求しない。ヌルポインタは、何も指し示さないポインタ。

893 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 22:29:06.28 ID:o6WQvi940.net]
ポインタ配列ってやると実体のない配列になるのかなw



894 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 00:57:04.32 ID:v+vUDnm40.net]
ポインタ配列

895 名前:

ポインタの配列 *array[]
配列のポインタ (*array)[]
[]
[ここ壊れてます]

896 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 06:12:05.65 ID:hJXFGwRg0.net]
“メモリ”って言葉がフラッシュメモリのような、
ストレージデバイスのイメージになってるのも
説明を難しくしてる要因かもしれないね。

メモリは記憶単位ごとに数字で番地が振られていて…と言っても、
「メモリってディレクトリ構造中のファイルとして記憶するんじゃないの?」
みたいな感じに、互いの言葉の意味がチグハグで。

897 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 06:41:21.97 ID:f7k/n5Cq0.net]
RAMとROMの違いなんて今の時代説明しても分かる人の方が少ない気がする

898 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 07:27:48.00 ID:Q6PAXFreM.net]
>メモリは記憶単位ごとに数字で番地が振られていて

キャッシュメモリ「せやろか?」

899 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 07:30:51.51 ID:0tg6L2nj0.net]
https://i.ytimg.com/vi/paQ3zIsz1-8/maxresdefault.jpg
https://upload.wikimedia.org/wikipedia/commons/d/d2/Pamiec_bebnowa_1.jpg
やっぱりコレを見せれば理解しやすいんでね?

900 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 08:11:51.98 ID:9CL7rguOx.net]
>>872
磁気コアメモリと、右側はRAMACか?

901 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 08:31:34.65 ID:0nKPup2VM.net]
磁気ドラムだよ
ランダムアクセスでさえないのにメインメモリにしたとかいう

902 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 09:02:07.63 ID:vN7LRDhO0.net]
>>856
ポインタ=君と感覚を共有してる全く同性能の影分身だ。
君の価値が100万なら、影分身は1円で作れる。

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

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


これ以上わかりやすい説明はないと思うが、どうよ?w

903 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 09:44:07.68 ID:y8r4DOsw0.net]
例えられても伝わらないとさらに混乱させるのが、ポインタと配列周辺の話



904 名前:デフォルトの名無しさん [2019/06/14(金) 10:03:42.87 ID:+nXqXsIga.net]
>>875
分身と言ってしまうとそっくりな実体がもう一つあるかのように思ってしまうのではないか?
やはり実体を指し示すものを連想させる何かにした方が良いのではないか?道標とか。

905 名前:デフォルトの名無しさん [2019/06/14(金) 10:26:13.82 ID:6se/aPBa0.net]
このように、どうわかりやすく書こうとしてもどっかに不都合が生じるのがポインタの説明
素直にコンピュータの仕組みを勉強するしかないんや・・・

906 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 10:36:21.57 ID:9CL7rguOx.net]
ポインタはWindowsのショートカットみたいなもの。
これでもまだ誤解されそうね。

907 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 11:45:14.96 ID:suWeiIcg0.net]
インデックスレジスタを拡張したもの

908 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 12:26:01.65 ID:2kFHhEHgd.net]
キャッシュとバッファの違いを教えてください

909 名前:蟻人間 mailto:sage [2019/06/14(金) 12:32:55.71 ID:lQGpZUNAd.net]
キャッシュは次回のアクセスを高速化するためにデータを一時的に保存しておくこと。
バッファはデータを受け止めるために、保存場所を確保するためのメモリー領域。

910 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 14:56:26.65 ID:6Rxhp4270.net]
アセンブラやらせてみる。

911 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 15:05:09.54 ID:AQvHkPsD0.net]
>>881
文脈による
汎用機

912 名前:だと二次キャッシュをバッファストレージなんて言ったりすることもあるし []
[ここ壊れてます]

913 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:36:32.38 ID:TPMloxQtM.net]
>>875
本体がパンツ下ろしたら影分身も職場でパンツ下ろすんですね分かります



914 名前:デフォルトの名無しさん [2019/06/14(金) 17:45:59.79 ID:zWOLB0k60.net]
ポインタがよくわからないんだけど、普通にメモリアドレス==ポインタって認識なの?

int i;
int *p=&i;
の時に変数iのポインタであるpっていういい方は正しいですか

915 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:52:24.52 ID:f7k/n5Cq0.net]
メモリアドレスは格納されるけど
メモリアドレス==ポインタっていうのは違う気がする
nullだのvoidだのもあるし

916 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:58:41.54 ID:Soq0+PVxa.net]
iのポインタを格納してるポインタ変数p

値自体を問題にするときはアドレスだが、プログラム中で操作の対象となってる場合はポインタって感じだな。

917 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:21:37.60 ID:Js4PARtC0.net]
>>886
ポインタはメモリアドレスと型もってて
メモリアドレスからのデータをその型として解釈する

918 名前:デフォルトの名無しさん [2019/06/14(金) 18:23:47.92 ID:zWOLB0k60.net]
なるほど、なんとなくわかったありがとう。混乱の原因はポインタっていう言葉がいろんな使われ方してるからだった。

919 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:25:31.19 ID:Kaq8zorwa.net]
こう書くとまた荒れそうだが、ポインターとはアドレスが入った変数である、というのは正しい。
NULLは0番地を特別扱いしてるだけだし、void *もあくまでアドレスだ。

920 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:32:50.01 ID:N06YB3IUM.net]
>>887
nullはまだしもvoidは関係なくね?

921 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:34:58.75 ID:Js4PARtC0.net]
荒れる要素なくない?
メモリアドレスを保持する整数と型を組合せてあるだけだし

void*はアドレス保持するだけの変数って意味じゃないの

922 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:35:21.76 ID:6z9b86iK0.net]
void *p;

p++ を許すのは GCC拡張だっけか

923 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:37:46.52 ID:AQvHkPsD0.net]
>>891
「正しい」とか書くと荒れる元にしかならん
(初心者のうちは)…「という理解でいい」ぐらいにしとき



924 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:39:36.73 ID:BA+tS0rQa.net]
>>891
NULLの件はそれ逆だろう。
実際の0番地を特別扱いにしているのではなく、「どこも指さない特殊なアドレス」を表記するために整数0を使用しているだけで、0番地が特別な訳ではないはず。まあ実際にメモリ割り当てで0番地を割り当てることはしないだろうけど。
void*も、型を指定しないポインタを表すのに使っている型の指定であり、アドレスというのはおかしい。

925 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:45:34.86 ID:Js4PARtC0.net]
>>894
サイズどういう扱いなのそれ

926 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:48:29.67 ID:6z9b86iK0.net]
>>897
確かポインタ演算時は1バイト (char) 扱いだったかな?

927 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:52:58.09 ID:Js4PARtC0.net]
1バイトなんか
まあそりゃそうか

928 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:41:25.35 ID:WbpzR08B0.net]
void*なんていらなくね?char*でいいじゃん
構造のわからないものは「バイト列」って意識でしょ?

929 名前:蟻人間 mailto:sage [2019/06/14(金) 21:47:11.03 ID:Qn7Uv1x90.net]
>>900
void *がないとmemcpyに引数を渡すとき面倒。

930 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:51:26.70 ID:6z9b86iK0.net]
double * には double * だけを許し char * や strucut foo * を渡したらアカンと
要求される型を厳しくチェックしようとすると

「ポインタだったら実体の型は何でもいい」 という指示を char * に含ますわけにはいかない

931 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:52:14.30 ID:sIZagWQx0.net]
汎用ポインタがchar*型になってたらコードレビューは絶対に通さないわ

932 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 22:42:50.69 ID:6se/aPBa0.net]
汎用ポインタというかvoid型という概念そのものが嫌い。
全てを厳密にやれ。言語を作る時点でまず関数に戻り値を強制すべきだったんだ。
ポインタわからん軍の原因はvoid型とかいう曖昧なせいなの

933 名前:ェあるせいなのも一理あろうて。 []
[ここ壊れてます]



934 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 23:06:06.10 ID:sIZagWQx0.net]
>>904
関数型言語に行ってらっしゃい

935 名前:デフォルトの名無しさん [2019/06/15(土) 00:02:16.99 ID:n7CfuAo60.net]
Kotlin もよろしく

936 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 01:25:34.80 ID:RN+u9pJY0.net]
windowsにおいて

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

が成功する環境と失敗する環境があるのですが何が原因かわかりません。。何かご存じの方いらっしゃらないでしょうか?

937 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 09:25:25.61 ID:oZ4xCIwS0.net]
>>904
お前の好き嫌いなんてどうでもいいし、よくわからん時点ならvoid*なんて無視しとけばいいだけ
この手の人は何故か全部を一気に理解しようとするけど今どきの言語仕様でそれやったら終わらんよ

938 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 09:37:31.78 ID:pAE5sudp0.net]
「俺の考える最強に分かりやすいポインタの説明」




・・・無理

939 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 10:05:45.19 ID:QD7Sd0bs0.net]
>>907
OSは?両方ともWindows10?

940 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 10:23:13.60 ID:T0BSudQv0.net]
>>908 void君だろ

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

> enter
> find
> delete
> show_all
> delete_all

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

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

> void show_all(void)

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

マジな話、このソースのレベルの本なら捨てた方がいい。
俺は大学の教材がいいと思うぞ。
(読んでないが)リストならググったら東工大とか出てきた。
www.is.titech.ac.jp/compview/clang/chap11.html

941 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 11:55:35.29 ID:hahimQeS0.net]
懐かしいな、void君

942 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 13:59:23.10 ID:RN+u9pJY0.net]
>>910
コメントありがとうございます。
8と10で成功する端末があることを確認しています。失敗する端末は今のところ10だけです。

そして

SetConsoleOutputCP(65001);

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

調べてみると、結局のところwindowsではsetlocaleで2バイト以上文字は設定できないとのことだったのですが、ではなぜ成功する端末があるのか……

943 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 15:49:06.56 ID:fUxHfD4R0.net]
謎だな



944 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 16:57:06.86 ID:RWV4c9qt0.net]
引数voidって古いシステムの保守でたまに見るな

945 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 16:59:05.33 ID:5ne/m9/q0.net]
と、古いシステムの保守なんかやったことねえやつがぬかすか

946 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:17:17.87 ID:ulIUfSMj0.net]
引数voidは今でも普通に使うけどな

947 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:22:29.22 ID:5ne/m9/q0.net]
void show_all(); なんて書くやつ見かけたらなるべく距離を置く

948 名前: mailto:sage [2019/06/15(土) 18:40:21.75 ID:8bW7ANPO0.net]
>>918
C++ ではそれは当たり前ですが…

949 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:42:04.96 ID:fAAVk5UIM.net]
>>918の場合
C++なら問題ない
C言語だとちょっと不味い

950 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:46:57.27 ID:5ne/m9/q0.net]
おまえからも距離を置きたいぜ
ここをどこだと思っている
C++なら無問題などと言わねばわからぬ者がいるとでも思っているのか

951 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 22:30:32.42 ID:BY4KYcRQ0.net]
とりあえず、シングルステートでも返り値をboolにする俺がやってきましたよ。

952 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 02:14:21.54 ID:wRD2pOBha.net]
ケースバイケースで使い分ける

953 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 08:10:06.75 ID:ORkp7ynDM.net]
>>921
>>918の意図が分かってない者がいるぞ
さあどうする?



954 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 10:35:26.32 ID:jvyHVZd00.net]
>>924
世も末だな
困ったもんだ

955 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 11:22:43.26 ID:RqGVrKm70.net]
大丈夫だよ
ここを見ながらシステム作っている奴はいないから

956 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:20:19.90 ID:X7GbKeYn0.net]
Cはvoid省略すると可変長引数扱いになるんじゃなかったっけ?
C++は省略してもvoidだけど

957 名前: mailto:sage [2019/06/16(日) 13:35:27.88 ID:gDHKfsB60.net]
>>927
無指定でどうこう、というのは確か C89 までの話だったかと
C99 では C++ と同じく省略しても void と記憶しています

958 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:51:25.10 ID:Mp4zqsM90.net]
>>928
破壊的変更が行われた仕様が回避できるなら回避すべきだな

959 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:58:56.49 ID:VBKycPxl0.net]
>>928
記憶違いでしょ。変わってないよ。違うと言うなら出典確認してから来てね。
kikakurui.com/x3/X3010-2003-01.html#93
> ...関数定義の一部でない関数宣言子の識別子並びが
> 空の場合,仮引数の個数及び型の情報がないことを指定する。

960 名前:デフォルトの名無しさん [2019/06/16(日) 15:14:33.98 ID:+bML8jLFa.net]
>>915
新しく作るプログラムでも引数なしならvoidにするよ。
まあこの頃Cで作ることそのものが減ったけどな。

961 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 15:41:14.25 ID:rIa5AgZza.net]
入力がない関数ってのは関数ではないな

962 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 15:51:28.54 ID:eI7bdJXk0.net]
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
こんな汚物が上から目線で何かもの言ってるかと思うと反吐が出る
さっさと消えてほしい

963 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 16:33:52.45 ID:wZzXbGgB0.net]
>>932
なぜ入力がないと思ったんだ?



964 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 16:48:40.62 ID:xMbXVdd30.net]
DCL20-C. 引数を受け付けない関数の場合も必ず void を指定する
ttps://www.jpcert.or.jp/sc-rules/c-dcl20-c.html
を見ると(かなり読み解きにくいんだけど)…

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

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

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

ついでに関数定義の int func() {...} の形式は廃止予定とも出てる。
プロトタイプの方は廃止予定ではない、ってことかな。

965 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 17:08:16.47 ID:jvyHVZd00.net]
そこでjpcertを持ち出すのは興醒めだ
どっかの馬の骨が「こうすべき」と主張してるってだけな話は
現実のマシンの動きとそれ束縛しているiso/iec9899でどうなのかという話とは論点が違う

966 名前:935 mailto:sage [2019/06/16(日) 17:32:48.77 ID:xMbXVdd30.net]
>>936
JPCERTを引用したのは「プロトタイプ宣言と関数定義とで
引数

967 名前:部が空の関数 func() の引数の解釈が違う」って話を
根拠つきで引き出すためでな。 >>927-930 あたりの流れを受けて。
規格の文章が並べて載ってるので都合が良いのだ(読みにくいけど)。

実際のところ、JPCERTのルールっていうか提案には
俺も全面的に賛成してるわけじゃない。むしろ強く反発する部分もあったり。
[]
[ここ壊れてます]

968 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 19:00:02.87 ID:jvyHVZd00.net]
必要ねえじゃん
iso/iec9899の条文を引用して
その箇所がどのように解釈できると
自分の言葉で言えばいいのを
虎の威を借る形でサボる怠慢を
読まされる側は付き合ってらんねー

969 名前:デフォルトの名無しさん [2019/06/16(日) 19:52:17.11 ID:5fyh92Dva.net]
>>932
そうだね。関数ではないね。しかしCだと処理をまとめる方法が関数しかないから仕方がないね。

970 名前:デフォルトの名無しさん [2019/06/16(日) 20:02:46.68 ID:5fyh92Dva.net]
まあしかし getchar() みたいにプログラムとは無関係な所から取ってきた値を返すとか、バッファやstatic変数で外部からアクセスできない変数の内容を返すみたいな処理は必要だから引数なしも必要だ。
グローバル変数やハードウエアの初期化処理だけまとめて書きたいなんて時にも使える。

971 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:22:18.78 ID:6QFVwEqYd.net]
○○Initialize()
的な関数の存在に違和感ないんだが

972 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:26:17.96 ID:rIa5AgZza.net]
クラスのメンバーの操作だとしても、だったらそのクラスのコンテキストを渡すのが正しいだろうとは思うけどね。
現実としてはまあ規模による。

973 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:40:48.32 ID:Mp4zqsM90.net]
プログラムの関数は数学の関数とは微妙に違うから仕方ない
仕方ないと思えない奴らが関数型言語を作った

兎に角Cでは本来の関数に制限するのは事実上不可能



974 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:47:50.76 ID:EhqtZL1+0.net]
functionって関数の他に機能って意味もあるけど、英語圏の人はどちらの意味で使ってるんだろうね?

975 名前: mailto:sage [2019/06/16(日) 21:15:12.39 ID:gDHKfsB60.net]
>>944
多分語義をわざわざ意識していないと思われ

976 名前:デフォルトの名無しさん [2019/06/16(日) 21:19:48.09 ID:paRCIAHRa.net]
>>942
オブジェクト指向言語のクラスだとプロパティでゲッターやセッター作る事があるが、ゲッターは普通は引数なしだな。
で、そういう言語ではだいたいはメソッドの引数なしで ()にしとけばC言語での(void)と同じ意味になる。

977 名前:蟻人間 mailto:sage [2019/06/16(日) 21:39:10.07 ID:KLVL0nwc0.net]
機能という意味で言いたいときは、functionalityという単語もある。

978 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 22:26:00.96 ID:rIa5AgZza.net]
ゲッターセッター自体が、本当にそれ要るのかって思うこと多いよ。
手元にインスタンス持ってるわけだしさ。

979 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:14:47.03 ID:2lhSAUjOM.net]
ゲッターセッターはインスタンス変数を隠蔽化することでインスタンス間の結合強度を下げるのが目的
なんでもなんでもインスタンス内部の構造に直接アクセスするとOOPの意味がない

980 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:22:32.20 ID:rIa5AgZza.net]
いや、ゲッター使うんだったら隠蔽できてないじゃん。

981 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:34:39.49 ID:Fv7+hlk/0.net]
昔ゲッターセッターってスレッドセーフにするための仕組みだと思ってた。
それくらいしか意味が思いつかなかった…

982 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:43:48.77 ID:3o8UCwiCa.net]
そうね、なんか前後に処理を入れるくらいの使い方はある。
でもそもそもその値を使う処理をそのクラスに持たせるのが隠蔽ということだね。

983 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:45:38.60 ID:7nwjMCFt0.net]
今の仕組み上での利点としては
GetterSetter作ることで
インターフェースに適合させれるようになる

Cは知らん



984 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:04:18.25 ID:0K02i6cy0.net]
Cのスレで

985 名前:言っても仕方ないが
オブジェクト指向においてクラス外からフィールドに直接アクセスするのは禁じ手だぞ
[]
[ここ壊れてます]

986 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:10:42.98 ID:seiOMGnS0.net]
getter/setterなんてうざいだけだぜ
メンバ変数直でいいじゃん

987 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:23:14.51 ID:YSrJE9j8a.net]
>>954
そうそう、だからゲッターは駄目なんだよね。
C++でclassとstructのアクセス範囲が異なる理由がわかってない人が多すぎる。

988 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:26:17.86 ID:0K02i6cy0.net]
>>955
お前には一生オブジェクト指向は無理だな

989 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 00:39:11.63 ID:YSrJE9j8a.net]
まあ、ゲッター使うのはバカ。
データとメソッドを集約しないのはオブジェクト指向ではない。
ゲッターとセッターしかないオブジェクトなんて構造体で充分。

990 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 01:11:23.59 ID:J2deS77t0.net]
たしかPythonだとgetterもsetterも推奨されてないんだっけ?

991 名前:デフォルトの名無しさん [2019/06/17(月) 02:13:20.34 ID:BSqpudUb0.net]
文字列クラスで文字数返すやつなんかはゲッターの一種だが、ああいうのは必用だよな。
文字数指定する事が出来るようにする場合もセッター必用だよな。

992 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 06:18:25.03 ID:6C3tyyZH0.net]
データメンバ直でもラッパーを挟めるなら問題なし

993 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 07:27:38.45 ID:yl5KJ/vEM.net]
問題ないというよりも下手な設計をとりあえずカプセル化する時はラッパー被せて誤魔化すしかない



994 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:27:04.42 ID:ikLTlFyV0.net]
ゲッタって仮想関数にする?

995 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:52:31.79 ID:sn1adIo3a.net]
ラッパーって関数に対して被せるもんだろ?
メンバー変数のラッパーってなんだよ

996 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:57:03.61 ID:mR1b1vjg0.net]
「メンバ書き換えたから更新よろしくな関数」の呼び出しで
やっと内部状態が変更するようなしくみ?

997 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 09:09:34.98 ID:8UjaS7YF0.net]
>>960
ゲッターとセッターは使わないのが主流

とくにゲッターとか名前からしておっかねーだろ

998 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 09:34:11.11 ID:sn1adIo3a.net]
真とかエンペラーとかいろいろあるしな

999 名前:デフォルトの名無しさん [2019/06/17(月) 12:37:41.39 ID:WHxj8IY7a.net]
>>966
え?でも値のセットや取得時に何か処理が必要なやつはゲッターやセッターではないの?
名前がそれっぽくなくて普通のメソッドだったとしても機能としてはそうなるよな。

1000 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 12:44:11.30 ID:6pEy3XEna.net]
>>968
だから、何故値を取得する必要があるのかと

1001 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:06:30.69 ID:0K02i6cy0.net]
値を取得する必要ガーとか馬鹿なのか?
主要言語の標準ライブラリにGetterを含まないクラスとかまず無いぞ

1002 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:27:51.70 ID:6pEy3XEna.net]
>>970
引数のvoid見たこともないのによくそんなこと言えるな…

1003 名前:デフォルトの名無しさん [2019/06/17(月) 13:33:44.73 ID:WHxj8IY7a.net]
>>969
例えばファイルデスクリプタのようなものもそのデスクリプタによって識別されるファイルに関する情報の読み書きをするオブジェクトと言えるが、それ使ってファイルのバイト数を取得するとかデータを読み書きするとか、普通にやるよね。



1004 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:42:27.76 ID:qKjcjk6x0.net]
猿でもわかるポインタって本誰か出せよ

1005 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:24:17.06 ID:6pEy3XEna.net]
>>968
そのオブジェクトの中で密接にデータと関連する処理だったらゲッターは使わんでしょう。this->hogeを直接使うだけ。
あとたぶんあなたの場合はセッターゲッターの神髄を知らんと思う。単に構造体のメンバーにアクセスするだけのメソッドをイメージしてもらえれば。

1006 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:25:01.27 ID:6pEy3XEna.net]
974は972あてね

1007 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:25:36.67 ID:FBMbqlks0.net]
>>968
https://dotup.org/uploda/dotup.org1874697.jpg
ゲッターはあぶない

1008 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 14:40:56.45 ID:lfEwbGXOM.net]
同一インスタンス内なら余計なことしなくても直接アクセスできる
セッターゲッターは他のインスタンスの変数にアクセスするための手段
オブジェクト間のメッセージパッシングにセッターやゲッターを利用する

1009 名前:デフォルトの名無しさん [2019/06/17(月) 14:41:55.67 ID:WHxj8IY7a.net]
>>974
あー。それでもリードオンリーにしたい時に言語にその機能がないならゲッターだけ作るよね。
Kotlinの場合はvalで済んじゃってしかも自動でゲッター作られてるけど。

で、真髄って何?

1010 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 15:00:44.76 ID:6pEy3XEna.net]
>>978
リードオンリーとか言わず、読ませなきゃいいじゃん

1011 名前:デフォルトの名無しさん [2019/06/17(月) 15:49:21.53 ID:WHxj8IY7a.net]
>>979
上で書いた文字列クラスの場合の文字数とかファイルのバイト数とか、外部から読めないとまずいものがあると思うんだが。

1012 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 15:57:28.98 ID:6pEy3XEna.net]
>>980
たとえばstd::stringのメソッドでgetってついてるのget_allocatorとgetlineくらいだよね。setなんてないし。
ゲッター感のあるやつ無くない?要らないのでは?

1013 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 16:10:03.98 ID:qeDnhEK2M.net]
メンバー変数はreadonlyなどの属性ではなくてprivateアクセス権限を設定して他オブジェクトから隠蔽するのが一般的



1014 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 17:25:37.86 ID:0K02i6cy0.net]
なんでC++とかいう後付けのオブジェクト指向もどき言語で延々と語ってるんだろうか…

1015 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 17:48:43.23 ID:6pEy3XEna.net]
>>983
そりゃもう、javaについで保守的だから。
他の意識高い感じの言語だとゲッターセッターなんて発想はありえないでしょ。

1016 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 17:52:05.72 ID:0K02i6cy0.net]
>>984
保守的?単なる継ぎ接ぎの欠陥言語だぞ

C#だとプロパティで隠蔽されてるが結局はGetter/Setterだな

1017 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:00:37.93 ID:6pEy3XEna.net]
>>985
つまり、Cの構造体アクセスは実質ゲッターセッターだという主張か?

1018 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:01:53.33 ID:0K02i6cy0.net]
>>986
お前は何を言ってるんだ…

1019 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:11:27.38 ID:6pEy3XEna.net]
>>987
引数void馬鹿を馬鹿にしてんだよ。わからんか?

1020 名前:蟻人間 mailto:sage [2019/06/17(月) 18:13:51.25 ID:Qf1//+vQd.net]
そろそろ次のスレ

1021 名前:デフォルトの名無しさん [2019/06/17(月) 18:24:49.71 ID:3L1/L9kLa.net]
>>981
うーん。C++のクラスで喩えられてもすがわからんなあ。C++この頃全然やってないし。
昔ちょっとC++Builder使ったことあるがDelphiの延長線上の使い方しかしなかったし。

とりあえずJavaで言うとそれは何にあたるんだ?
Kotlinでもいいぞ。

1022 名前:デフォルトの名無しさん [2019/06/17(月) 18:26:16.26 ID:3L1/L9kLa.net]
すが、じゃねえ、すぐだ。
スマホだと間違いが変になるな。

1023 名前:デフォルトの名無しさん [2019/06/17(月) 18:28:01.53 ID:3L1/L9kLa.net]
次スレ

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



1024 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 19:42:03.79 ID:biel+EqR0.net]
>>992
>>2-3 あたりの
「次スレを作るときは…」の説明を書き足さなくて良いのかしら?
自分、その辺の正しい立て方を知らず下手に書き加えられないので指摘だけ。

1025 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 20:01:23.71 ID:vIcnvKOP0.net]
IDを非表示にする場合
!extend:none::1000:512

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

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

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

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

RONIN使えばまた表示を消せるので、強制とは言いがたいが

1026 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 20:16:07.33 ID:/ODDlXVN0.net]
ああワッチョイ消してる奴ってRONIN使ってるのか
知らなかったな

1027 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 20:27:33.84 ID:IK9o4iD50.net]
密結合を避ける

1028 名前: mailto:sage [2019/06/17(月) 20:55:12.93 ID:mDiaA7dQ0.net]
>>995
RONIN 餅ですがワッチョイの消し方がわからないのです、消すつもりもないのですが…

1029 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 21:23:19.93 ID:J2deS77t0.net]
名前欄に!slip:verboseじゃないの?
コテハンとかはどうなるかまでは知らないけど

1030 名前: mailto:sage [2019/06/17(月) 21:26:41.57 ID:mDiaA7dQ0.net]
>>998
どれどれ、試してみましょうか…

1031 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 21:29:58.20 ID:6C3tyyZH0.net]
>>945
そんなことはどうでもいい
C99ではどうたらを早く説明しろ

 逃 げ ん な こ ら !

1032 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 10時間 6分 21秒

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








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

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

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