C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
前
http://mevius.2ch.net/test/read.cgi/tech/1500293207/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 142 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8a6f-bDrV)
2017/08/10(木) 20:21:23.44ID:hEocmkh502デフォルトの名無しさん (ブーイモ MM7f-Da3i)
2017/08/10(木) 20:44:11.22ID:aWUdy/dyM だめ意見にはけなしたり煽るんじゃなくて具体的な反論ができるといいね
3C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ (ラクッペ MM4b-nt8X)
2017/08/10(木) 21:39:10.50ID:Wh1e+mJZM 帰ったらお勉強だぜ!!
4デフォルトの名無しさん (ワッチョイ 4ee3-aEKd)
2017/08/10(木) 21:51:00.72ID:LT6YffV+0 >>1 乙です
5デフォルトの名無しさん (ワッチョイ f34b-C9Js)
2017/08/11(金) 01:27:59.65ID:DcjyhNkl0 乙っ乙
6デフォルトの名無しさん (ワッチョイ 3323-hZ6b)
2017/08/11(金) 03:16:23.49ID:suC9gTdR0 乙
7デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/11(金) 08:28:05.03ID:8TW1by1n0 >>2
煽りコントで笑いをとってたコメディアンのこと?
煽りコントで笑いをとってたコメディアンのこと?
8デフォルトの名無しさん (ワッチョイ 767e-aEKd)
2017/08/11(金) 11:41:11.10ID:JIMcqw5z0 最近はPythonやっとけみたいな意見が多いんですが、
今、Cをやるメリットは何かありますか?
今、Cをやるメリットは何かありますか?
9デフォルトの名無しさん (ワッチョイ 336d-dvNI)
2017/08/11(金) 12:00:57.14ID:Ca8C76qb0 両方やればいい
10デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/11(金) 12:14:58.92ID:8TW1by1n0 ハード・ソフト両利きになるには絶好の近道
11デフォルトの名無しさん (スップ Sdba-pnIq)
2017/08/12(土) 10:34:20.89ID:mpXbTRP+d IYHスレのかほりがするw
12デフォルトの名無しさん (ワッチョイ 3323-aEKd)
2017/08/12(土) 16:57:37.18ID:6AXlD0eu0 >>8
それはあなたが今後何をやりたいかによる。
それはあなたが今後何をやりたいかによる。
13デフォルトの名無しさん (ワッチョイ 336d-gaVt)
2017/08/13(日) 15:57:24.74ID:m4Rk+6os0 >>8
結局のところ C は基本中の基本で、避けて通れない、いずれやらないと仕方ない、という状況に追い込まれる
結局のところ C は基本中の基本で、避けて通れない、いずれやらないと仕方ない、という状況に追い込まれる
14デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/13(日) 16:07:14.55ID:2GAXDCvV0 そういう意味では、あと英語な
マニュアルや規格票といえばまず英語
日本語版はないか、あっても10年遅れとか
そればかりか自分のコードのマニュアルやコメントも
英語で書けとだいたい言われる
マニュアルや規格票といえばまず英語
日本語版はないか、あっても10年遅れとか
そればかりか自分のコードのマニュアルやコメントも
英語で書けとだいたい言われる
15デフォルトの名無しさん (ワッチョイ 3323-aEKd)
2017/08/13(日) 17:01:50.43ID:aXXBQeA80 え?そんな所あるの?外資系とか?
まあ最初から英語できることを前提に雇っているならわかるけど、そうでない会社で
それやったらネイティブが忍耐をもってしても解読困難な英語モドキの文書の山に
なってしまうのではないか?
まあ最初から英語できることを前提に雇っているならわかるけど、そうでない会社で
それやったらネイティブが忍耐をもってしても解読困難な英語モドキの文書の山に
なってしまうのではないか?
16デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/13(日) 17:33:10.24ID:2GAXDCvV0 解読困難な英語モドキすっげええ、うんざりするほどあるよ
ずーずー弁しぇからしかこんだらず、なんて次元じゃねえ訛り方
・・・まあ恥ずかしながら日本人の訛り方はトップグループなんだが
ずーずー弁しぇからしかこんだらず、なんて次元じゃねえ訛り方
・・・まあ恥ずかしながら日本人の訛り方はトップグループなんだが
17デフォルトの名無しさん (ワッチョイ 3323-aEKd)
2017/08/13(日) 17:59:59.41ID:aXXBQeA80 omg
18デフォルトの名無しさん (ワッチョイ baef-9OS8)
2017/08/13(日) 18:13:02.46ID:WSSr83j3019デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/13(日) 18:29:50.42ID:2GAXDCvV0 技術英語を憶えるのに一般英語は邪魔
技術英語独特のボキャ貧はマニュアルや論文でしか学べない
技術英語独特のボキャ貧はマニュアルや論文でしか学べない
20デフォルトの名無しさん (ワッチョイ 336f-+HCT)
2017/08/13(日) 18:34:17.87ID:8MgVlazH0 brother と sister は習っても、sibling を学校で習った覚えは無いな
21デフォルトの名無しさん (ワッチョイ ba89-MZKP)
2017/08/13(日) 18:39:03.83ID:o1ygPh5l0 >>18
自分がある程度詳しい分野のちゃんとした英語のドキュメントを読んでると、ここはこういう意味か、こんな時はこんな表現するのか、と言うのがある程度身についてくると思う。
自分がある程度詳しい分野のちゃんとした英語のドキュメントを読んでると、ここはこういう意味か、こんな時はこんな表現するのか、と言うのがある程度身についてくると思う。
22デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/13(日) 18:54:33.40ID:2GAXDCvV023デフォルトの名無しさん (ワッチョイ de32-BuCI)
2017/08/14(月) 00:49:40.57ID:FXoIQaW20 RFC読んだ後は、プログラム関係の文書だけは、英語でも何となくわかるようになったなぁ
人の和訳みながらよんだだけだけど
人の和訳みながらよんだだけだけど
24デフォルトの名無しさん (ワッチョイ dfdb-tL1o)
2017/08/14(月) 23:14:42.24ID:G751meAI0 苦手意識がなくなるだけでもかなりの前進かと
25デフォルトの名無しさん (スッップ Sdba-RVSI)
2017/08/16(水) 03:13:15.44ID:J8ft/v5zd C言語の勉強をするためのおすすめのIDEを教えてください
26デフォルトの名無しさん (スプッッ Sdba-fB3e)
2017/08/16(水) 06:06:58.39ID:g+tkU2cqd Visual Studio
27デフォルトの名無しさん (ワッチョイ f34b-C9Js)
2017/08/16(水) 08:20:25.87ID:0Vt0rye20 Vim Emacs
28デフォルトの名無しさん (ワッチョイ 336f-+HCT)
2017/08/16(水) 09:23:43.88ID:zAUipZYH0 猫こそ至高
29デフォルトの名無しさん (ワッチョイ f66f-YnGe)
2017/08/16(水) 10:15:56.42ID:xWmu06fM0 VisualStudioに一票
30デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/16(水) 11:07:32.90ID:J2krMHFz0 エディタで充分
IDEいらね
IDEいらね
31デフォルトの名無しさん (ガックシ 06b6-C9Js)
2017/08/16(水) 11:12:04.39ID:79/XacN36 Cの文法だけ知りたいんならIDEで身につくと思うけど、CのUNIX的な使い方とかMakefileの作り方まで含むならやっぱりターミナルでVimかEmacsが一番身につくと思うな
32デフォルトの名無しさん (ワッチョイ 5b0d-KsLg)
2017/08/16(水) 11:17:42.10ID:Xm1ENLXg033デフォルトの名無しさん (アウアウカー Sac3-wqWI)
2017/08/16(水) 11:42:34.56ID:CBEVrlMza 覚えるだけとか編集するにはPlumaで良かった
34デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/16(水) 12:30:21.85ID:J2krMHFz0 IDEであろうがなかろうが
複数の環境を使ったほうがいい
1つの環境だけ使っていると
間違った知識をたっぷり吹き込まれる
その環境が悪いわけじゃなく
Cには処理系定義だの未規定だのがたくさんあるからだ
複数の環境を使ったほうがいい
1つの環境だけ使っていると
間違った知識をたっぷり吹き込まれる
その環境が悪いわけじゃなく
Cには処理系定義だの未規定だのがたくさんあるからだ
35デフォルトの名無しさん (ワンミングク MM8a-+HCT)
2017/08/16(水) 12:58:54.66ID:MtMWIb12M 汎用機でトライグラフとワードアドレッシングな奴をやっておけば完璧だね
36デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/16(水) 17:14:38.09ID:J2krMHFz0 関数を呼び出すたびごとにいちいちGETMAINするのかと思ったら違った
37デフォルトの名無しさん (ワッチョイ a3b6-z+qv)
2017/08/16(水) 18:42:31.13ID:eXMOwWIc0 実際のところトライグラフの環境ってあるのかね
汎用機のEBCDIC(英字)も記号は一通りあるよね
汎用機のEBCDIC(英字)も記号は一通りあるよね
38デフォルトの名無しさん (ワッチョイ 0e1c-Jp9e)
2017/08/16(水) 21:24:11.17ID:J2krMHFz0 カード穿孔機くらいかな
トライグラフの必要性を感じたデバイスは
トライグラフの必要性を感じたデバイスは
39デフォルトの名無しさん (ワッチョイ 616f-dsaK)
2017/08/17(木) 00:56:17.97ID:ugZ0fkzt0 NEC MSコンピューターとかかな
シリーズで言うと MS120,MS140,MS190
シリーズで言うと MS120,MS140,MS190
40デフォルトの名無しさん (ワッチョイ 5389-SBNh)
2017/08/17(木) 06:39:42.32ID:3FDT79Ua0 ヨーロッパとかで英語以外の国で、C言語で使う記号のところに別の文字が割り当てられてるケースとか。文字コードまたはキーボードのキーとして。
41デフォルトの名無しさん (フリッテル MM6b-9CIE)
2017/08/17(木) 06:59:39.42ID:qA/UZuuOM どうでもいいことばかりだな
42デフォルトの名無しさん (ワッチョイ 810d-qqF0)
2017/08/17(木) 07:30:42.82ID:5FUl5JPE0 バックスラッシュがあるべき文字コードの場所が
現地の通貨記号に置き換わってる環境でトライグラフ使わね?
現地の通貨記号に置き換わってる環境でトライグラフ使わね?
43デフォルトの名無しさん (ワッチョイ 9311-x4Vn)
2017/08/17(木) 07:50:53.84ID:wL10pSGX0 >>42
そもそもそんな環境で開発なんてしたことないし
そもそもそんな環境で開発なんてしたことないし
44デフォルトの名無しさん (ワッチョイ 5100-kTqj)
2017/08/17(木) 08:03:54.42ID:zzoRHhsR045デフォルトの名無しさん (ワッチョイ 110d-JJVS)
2017/08/17(木) 08:26:01.37ID:NamoDwZf0 ノーマークでトライグラフになっちまってたことは過去に何度か・・・
(s)printf 中の format 文字列で
(s)printf 中の format 文字列で
46デフォルトの名無しさん (ドコグロ MMa3-VxEm)
2017/08/17(木) 09:31:58.57ID:3IL/r6zdM >>42
半角の¥は廃止すべき
半角の¥は廃止すべき
47デフォルトの名無しさん (ワッチョイ 616f-dsaK)
2017/08/17(木) 10:45:25.58ID:ugZ0fkzt0 >>45
MJD?
MJD?
48デフォルトの名無しさん (ワッチョイ 110d-JJVS)
2017/08/17(木) 10:55:11.53ID:NamoDwZf0 >>47
最近のコンパイラはデフォでトライグラフを抑制してくれてるようだけど
古いコンパイラは、そんな気がきいてないから
警告文 "warning??!" ってやって実際の出力が warning| で なんじゃこりゃ?と
最近のコンパイラはデフォでトライグラフを抑制してくれてるようだけど
古いコンパイラは、そんな気がきいてないから
警告文 "warning??!" ってやって実際の出力が warning| で なんじゃこりゃ?と
49デフォルトの名無しさん (ワッチョイ 110d-JJVS)
2017/08/17(木) 10:59:46.51ID:NamoDwZf0 それでも ??/ → \ で
次の文字をエスケープして大事故にというのは無かったかな
次の文字をエスケープして大事故にというのは無かったかな
50デフォルトの名無しさん (ドコグロ MMb3-x4Vn)
2017/08/17(木) 11:00:52.21ID:OslnP8rdM51デフォルトの名無しさん (ワッチョイ 6139-uL9b)
2017/08/17(木) 12:36:35.61ID:kQ6hfaFr0 CとC++は馬鹿には使えない
惨事が起きるから
使わせてはいけないと聞いた
惨事が起きるから
使わせてはいけないと聞いた
52デフォルトの名無しさん (ワッチョイ 936f-pVc9)
2017/08/17(木) 13:57:01.69ID:ylZytAyh0 いくつかのコンパイラはトライグラフがデフォルトで無効になっていたと思う
53デフォルトの名無しさん (ワッチョイ f932-Jcyw)
2017/08/17(木) 16:57:48.81ID:ZvDESEOS0 clとclangとgccはデフォルトで無効だし、今じゃ有効な環境のほうが珍しいんじゃないの
54デフォルトの名無しさん (エーイモ SEf3-Ufa9)
2017/08/17(木) 21:30:33.60ID:2RZZpZadE char s[3] = "abc";
printf("%s %lu", s, strlen(s));
これの出力がabc 3にならず
abc 9abc 9とか
abcea 9abcea 9みたいに毎回不定で文字列が出力されるんですけど何でですか?
printf("%s %lu", s, strlen(s));
これの出力がabc 3にならず
abc 9abc 9とか
abcea 9abcea 9みたいに毎回不定で文字列が出力されるんですけど何でですか?
56片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-hsX1)
2017/08/17(木) 21:39:34.19ID:XnqHf7Mqd s[4]か、サイズ未指定のs[]にする。
\nを追加する。
\nを追加する。
57片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-hsX1)
2017/08/17(木) 21:40:55.02ID:XnqHf7Mqd strlenの返却値はsize_tだから、%luは間違い。
58デフォルトの名無しさん (ワッチョイ 5100-kTqj)
2017/08/17(木) 23:15:30.23ID:zzoRHhsR0 >>57
正解は?
正解は?
59片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-hsX1)
2017/08/17(木) 23:27:33.59ID:XnqHf7Mqd60デフォルトの名無しさん (ワッチョイ 5100-kTqj)
2017/08/17(木) 23:35:38.09ID:zzoRHhsR0 組み込みのショボいライブラリじゃ使えなかったりするから
unsigned intにキャストして%u
でいいや
unsigned intにキャストして%u
でいいや
61デフォルトの名無しさん (ブーイモ MMc5-gUFl)
2017/08/18(金) 03:59:52.12ID:URLOh4DLM キャスト毛嫌いしてたんだけど、size_t や int*_t シリーズを printf 書式で使う時のベストプラクティスだと気付いてしまったよ。
62片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-hsX1)
2017/08/18(金) 04:18:35.01ID:sjvn+N2bd サイズの変わる型キャストは、(通常無視できる程度の)少しだけコストがかかることに言及しておこう。
63片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-hsX1)
2017/08/18(金) 04:20:02.39ID:sjvn+N2bd わずかに時間と計算量がかかるという意味のコストね。
64デフォルトの名無しさん (ワッチョイ 5389-SBNh)
2017/08/18(金) 07:04:19.91ID:R7MrN97k0 printf使ってるときなら、無視できるレベルだな
65デフォルトの名無しさん (フリッテル MM6b-MHwE)
2017/08/18(金) 07:10:44.43ID:RGoxPD09M 大抵の場合、暗黙でintに変換されるので%dで問題ない
66デフォルトの名無しさん (ワッチョイ 5100-kTqj)
2017/08/18(金) 07:50:44.76ID:cQGhZEXD0 >>63
64ビットで渡すより32ビットで渡す方が普通は速い
64ビットで渡すより32ビットで渡す方が普通は速い
67デフォルトの名無しさん (ワッチョイ 5100-kTqj)
2017/08/18(金) 07:51:44.71ID:cQGhZEXD0 >>65
intより大きいサイズはintに変換されない
intより大きいサイズはintに変換されない
68デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/18(金) 09:48:31.67ID:+zi/zXZ3069デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/18(金) 10:03:06.56ID:+zi/zXZ30 脇道に逸れるが整数のサイズってどいつもこいつもイマイチだね
char 8
short 16
int 32
long 64
long long 128
と、せっかく5階級あるのを無駄なく使えるようになってない
char 8
short 16
int 32
long 64
long long 128
と、せっかく5階級あるのを無駄なく使えるようになってない
70デフォルトの名無しさん (ワッチョイ 5100-kTqj)
2017/08/18(金) 11:07:14.63ID:cQGhZEXD0 どこの環境だよ
71デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/18(金) 11:55:29.20ID:+zi/zXZ30 いや、そういう環境があったらなあと
72デフォルトの名無しさん (スプッッ Sda3-VxEm)
2017/08/18(金) 12:41:24.28ID:8ZqVNhGud そんなに細かく分ける意味あんのかね。
64bitだけでいいだろ。
64bitだけでいいだろ。
73デフォルトの名無しさん (ワッチョイ 4b6c-oL0b)
2017/08/18(金) 12:46:10.63ID:K+PXWISB0 Makefileの書き方なんだけど
makeが実行されているときに 今何を実行してるか表示されるけど
「なんでこれが実行されているんか」の理由も表示したい
依存関係の hoge: fuga を表示したい
.c.o:
@echo $@:$^
$(CC) $(CFLAGS) -c $<
みたいに書いたりしてんだけど、全部に書くのもダサい気がするし
良い方法はないでしょうか
makeが実行されているときに 今何を実行してるか表示されるけど
「なんでこれが実行されているんか」の理由も表示したい
依存関係の hoge: fuga を表示したい
.c.o:
@echo $@:$^
$(CC) $(CFLAGS) -c $<
みたいに書いたりしてんだけど、全部に書くのもダサい気がするし
良い方法はないでしょうか
74デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/18(金) 15:25:50.71ID:+zi/zXZ30 >>72
128が標準にあれば使い途いろいろあるぞ
128が標準にあれば使い途いろいろあるぞ
75デフォルトの名無しさん (ワッチョイ 81b6-Jcyw)
2017/08/18(金) 15:40:25.23ID:RRX5RBja076デフォルトの名無しさん (ワッチョイ 9311-x4Vn)
2017/08/18(金) 16:57:07.47ID:UodSk1FQ077デフォルトの名無しさん (ワッチョイ f932-Jcyw)
2017/08/18(金) 18:57:47.45ID:aoGOUUu+0 C関係ないんだから、別スレでやれよ
78デフォルトの名無しさん (ワッチョイ 61b6-qPuT)
2017/08/18(金) 20:41:27.26ID:2qfgYUHL0 すみません初歩的なことですが・・
前置インクリメントa++
後置インクリメント++a
がありますが、a=a+1は後置になりますよね?
前置インクリメントa++
後置インクリメント++a
がありますが、a=a+1は後置になりますよね?
79デフォルトの名無しさん (ドコグロ MMa3-VxEm)
2017/08/18(金) 20:44:00.68ID:m74Y+4jlM b=a++ と b= a= a+1 は違う気がする。
80片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-hsX1)
2017/08/18(金) 20:47:26.76ID:sjvn+N2bd どちらでもない。
81デフォルトの名無しさん (ワッチョイ c111-JJVS)
2017/08/18(金) 20:49:13.42ID:5LpMFucB0 加算と代入
82デフォルトの名無しさん (ワッチョイ 61b6-qPuT)
2017/08/18(金) 20:51:16.52ID:2qfgYUHL083デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/18(金) 23:11:42.85ID:+zi/zXZ30 違う! 前置だ
b = (a = a + 1);
b = (a = a + 1);
84デフォルトの名無しさん (ワッチョイ c111-JJVS)
2017/08/18(金) 23:21:22.94ID:5LpMFucB0 a[i++] = i; は悪魔召還だけど
インクリメント演算子なしのこれ
a[i =i+1] = i;
も鼻から悪魔になるのかな
インクリメント演算子なしのこれ
a[i =i+1] = i;
も鼻から悪魔になるのかな
85デフォルトの名無しさん (ワッチョイ db6f-2g+Y)
2017/08/18(金) 23:57:54.41ID:nSj4GkNd0 >>78
>前置インクリメントa++
>後置インクリメント++a
考え方が逆
変数を基準に考えるのではなく演算子を基準に考える
前置インクリメント++a : 演算子を’前’置した場合、変数(式)の評価’前’に演算子が適用される
後置インクリメントa++ : 演算子を’後’置した場合、変数(式)の評価’後’に演算子が適用される
>前置インクリメントa++
>後置インクリメント++a
考え方が逆
変数を基準に考えるのではなく演算子を基準に考える
前置インクリメント++a : 演算子を’前’置した場合、変数(式)の評価’前’に演算子が適用される
後置インクリメントa++ : 演算子を’後’置した場合、変数(式)の評価’後’に演算子が適用される
86デフォルトの名無しさん (ワッチョイ f932-Jcyw)
2017/08/19(土) 00:03:09.07ID:0xgPi4RO087デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/19(土) 09:44:47.22ID:CpINIl4e0 i = i + 1;
の、iの変更と最後のiの評価の間の順序性は?
の、iの変更と最後のiの評価の間の順序性は?
88C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ (ラクッペ MMed-UZV0)
2017/08/19(土) 09:54:20.36ID:6ANTyB1VM >>87
i+1のiは変更前のiでしょ
i+1のiは変更前のiでしょ
89デフォルトの名無しさん (スプッッ Sdf3-l88/)
2017/08/19(土) 10:03:42.32ID:cD3Bg7W9d >>30
デバッグしないのか?
デバッグしないのか?
90デフォルトの名無しさん (ワッチョイ 931e-VxEm)
2017/08/19(土) 10:37:04.42ID:opyN89fo0 デバッガはデバッガで起動すればいいし、printf があるし。
91デフォルトの名無しさん (ワッチョイ f932-Jcyw)
2017/08/19(土) 11:26:43.49ID:0xgPi4RO0 >>87
6.5.16 Assignment operators
「The side effect of updating the stored value of the left operand is sequenced after the value computations of the left and right operands. The evaluations of the operands are unsequenced.」
左オペランドの変更は、左右オペランドの評価の後
6.5.16 Assignment operators
「The side effect of updating the stored value of the left operand is sequenced after the value computations of the left and right operands. The evaluations of the operands are unsequenced.」
左オペランドの変更は、左右オペランドの評価の後
92デフォルトの名無しさん (ワッチョイ 2baa-PF2c)
2017/08/19(土) 12:19:31.20ID:9KU7ntuJ093デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/19(土) 15:28:05.17ID:CpINIl4e094デフォルトの名無しさん (ワッチョイ 81b6-Jcyw)
2017/08/19(土) 23:53:05.68ID:HeBiuDVT0 >>92
バグが入りやすい書き方ってだけでバグるわけじゃない
バグが入りやすい書き方ってだけでバグるわけじゃない
95デフォルトの名無しさん (ワッチョイ 931e-VxEm)
2017/08/20(日) 00:16:58.16ID:856Qy56L0 a[i++]= b; は問題ないしな。
96デフォルトの名無しさん (ワッチョイ 6123-WxsM)
2017/08/20(日) 03:47:32.99ID:+c5k6kJk0 右辺の結果を出してから左辺の計算やってるようだな。
https://paiza.io/projects/G_durt7YVnR55npMvUcKwg
https://paiza.io/projects/G_durt7YVnR55npMvUcKwg
97デフォルトの名無しさん (ワッチョイ 936f-2g+Y)
2017/08/20(日) 06:41:37.88ID:6XW1JaY/098デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/20(日) 09:25:38.38ID:sGdhnhOm0 事実上どうなっているという話ではなく
理屈の上でどうなのかという話
ちゃんと断り書きがあったからめでたしだが
そうでなかったら大変だった
理屈の上でどうなのかという話
ちゃんと断り書きがあったからめでたしだが
そうでなかったら大変だった
99デフォルトの名無しさん (ラクッペ MMed-3Zg8)
2017/08/20(日) 09:58:54.27ID:SbUj3AhWM100デフォルトの名無しさん (ワッチョイ 096f-jLVh)
2017/08/22(火) 11:22:32.57ID:chgkyZKA0 defineした定数を文字列定数にいれるにはどうしたらいいの?
#define EOL 0x0d
const char version_message[] = "Version 1.0\x0d"
↑この文字列の改行コードに定数EOLを展開した値を入れたいです。
#define EOL 0x0d
const char version_message[] = "Version 1.0\x0d"
↑この文字列の改行コードに定数EOLを展開した値を入れたいです。
101デフォルトの名無しさん (ワッチョイ 110d-JJVS)
2017/08/22(火) 11:44:36.20ID:xXPB4eWM0102デフォルトの名無しさん (エーイモ SEf3-Ufa9)
2017/08/22(火) 11:47:40.32ID:przmPyd7E typedef struct hoge {
int a;
int b;
} hoge;
hoge h = {1, 2};
構造体に含まれるメンバ名と値を全て出力する方法を教えてください
上の構造体なら
a,1
b,2
と出力したいです
int a;
int b;
} hoge;
hoge h = {1, 2};
構造体に含まれるメンバ名と値を全て出力する方法を教えてください
上の構造体なら
a,1
b,2
と出力したいです
103デフォルトの名無しさん (ワッチョイ 596f-MAnB)
2017/08/22(火) 11:59:42.09ID:GCxyf0Da0104デフォルトの名無しさん (JP 0H5d-C/ZS)
2017/08/22(火) 12:08:53.86ID:R9ds2cCvH105デフォルトの名無しさん (ワッチョイ 110d-JJVS)
2017/08/22(火) 12:11:18.37ID:xXPB4eWM0106デフォルトの名無しさん (ワッチョイ 596f-MAnB)
2017/08/22(火) 12:14:35.93ID:GCxyf0Da0 >>102
変数名はあくまで人間が扱いやすいように何らかの領域(一般的にメモリアドレス)に付けるあだ名であって
プログラム(コンピュータ)的にはメモリアドレスのほうが扱いやすいのであだ名は不要(アドレスのほうはプログラム的に出せる)
なのであだ名のほうが欲しいなら以下のように直書きするしかない
printf("%s,%d\n", "a", h.a);
変数名はあくまで人間が扱いやすいように何らかの領域(一般的にメモリアドレス)に付けるあだ名であって
プログラム(コンピュータ)的にはメモリアドレスのほうが扱いやすいのであだ名は不要(アドレスのほうはプログラム的に出せる)
なのであだ名のほうが欲しいなら以下のように直書きするしかない
printf("%s,%d\n", "a", h.a);
107デフォルトの名無しさん (エーイモ SEf3-Ufa9)
2017/08/22(火) 12:52:42.46ID:przmPyd7E108デフォルトの名無しさん (JP 0H5d-3KK3)
2017/08/22(火) 13:00:37.52ID:u9fcDp43H デバッグ目的ならデバッガで
109デフォルトの名無しさん (ワッチョイ 096f-jLVh)
2017/08/22(火) 13:20:20.96ID:chgkyZKA0 >>101,104、ありがとうございます、
PCとUSBシリアルで通信する組み込み機器のドライバをメンテしていて
受信したテキストの終端検出にEOLはキャラクタで扱っているし
送信する固定テキストは改行含めてリテラルにしたく
プリプロセッサの#か##で連結でなんとかできないか悩んでました。
PCとUSBシリアルで通信する組み込み機器のドライバをメンテしていて
受信したテキストの終端検出にEOLはキャラクタで扱っているし
送信する固定テキストは改行含めてリテラルにしたく
プリプロセッサの#か##で連結でなんとかできないか悩んでました。
110デフォルトの名無しさん (ワッチョイ d3d7-vbeK)
2017/08/22(火) 13:21:07.96ID:bF0tRsYk0 コンパイルしたらメンバー名と型の情報は消える
111C言語ますたー《ますたー軍団(常時募集)の長》 ◆Cmaster.sY (ラクッペ MMed-UZV0)
2017/08/22(火) 15:44:32.04ID:tfXVsICTM メモリアドレスを出力させればいいんじゃない?
%pで&aを表示できるはず
%pで&aを表示できるはず
112デフォルトの名無しさん (ワッチョイ 110d-JJVS)
2017/08/22(火) 16:43:27.00ID:xXPB4eWM0 与えられた変数から、メンバ名とその値を再帰的に列挙して欲しいんだろうけど
そんな都合の良い言語じゃないから自分で並べるしかない
必要に応じて毎回並べるか
並べて出力したものを関数化しといてそれを呼び出すか
そんな都合の良い言語じゃないから自分で並べるしかない
必要に応じて毎回並べるか
並べて出力したものを関数化しといてそれを呼び出すか
113デフォルトの名無しさん (ワッチョイ ab1c-Pf/K)
2017/08/22(火) 17:44:12.68ID:NIldwpVs0 再帰的に列挙は自動だととんでもない情報量になったりするからな
そこから欲しい情報をどうやって抜き出すかが頭の使いどころ
そこから欲しい情報をどうやって抜き出すかが頭の使いどころ
114デフォルトの名無しさん (ワッチョイ 936f-jLVh)
2017/08/22(火) 22:53:39.27ID:YwU2BQ/U0 >>100
#include <stdio.h>
#define EOL x0a
#define _STRING(s) # s
#define STRING(s) _STRING(s)
#define _VALUE(s) 0 ## s
#define VALUE(s) _VALUE(s)
char a[] = "Hello" STRING(\EOL);
void main(void) {
int n;
n = VALUE(EOL);
printf("%02x [%s] \n", n, a);
}
#include <stdio.h>
#define EOL x0a
#define _STRING(s) # s
#define STRING(s) _STRING(s)
#define _VALUE(s) 0 ## s
#define VALUE(s) _VALUE(s)
char a[] = "Hello" STRING(\EOL);
void main(void) {
int n;
n = VALUE(EOL);
printf("%02x [%s] \n", n, a);
}
115デフォルトの名無しさん (ワッチョイ 6123-oL0b)
2017/08/22(火) 22:53:45.07ID:hpqXPKX70116デフォルトの名無しさん (ワッチョイ 6123-oL0b)
2017/08/22(火) 22:56:32.37ID:hpqXPKX70 あ。もうちょっとできたので今修正した。
117デフォルトの名無しさん (ワッチョイ d3d7-vbeK)
2017/08/22(火) 23:26:16.15ID:bF0tRsYk0 >>115
これってさ、メンバ名をconst char*にするんだよね?
これってさ、メンバ名をconst char*にするんだよね?
118デフォルトの名無しさん (ワッチョイ 8123-jLVh)
2017/08/22(火) 23:41:21.22ID:D8nSL4rC0119デフォルトの名無しさん (ワッチョイ 6123-oL0b)
2017/08/23(水) 00:06:55.83ID:b0JJUPNx0120デフォルトの名無しさん (ブーイモ MMb3-3KK3)
2017/08/23(水) 00:14:59.00ID:PJzK0CC4M 構造体のメンバ名がほしいとかデバッグ以外に何があるの
121デフォルトの名無しさん (ワッチョイ 8123-jLVh)
2017/08/23(水) 00:22:23.00ID:CuDbJhab0 >>120
有名どころはGUIのバインディング。
例えばWPFは自動的にリクレクションを使ってこれをやってくれる。詳細は以下参照。
http://www.atmarkit.co.jp/ait/articles/1010/08/news123.html
ただ、Cのアプリでこれは要らんし、今時生CでGUIもないよな?
有名どころはGUIのバインディング。
例えばWPFは自動的にリクレクションを使ってこれをやってくれる。詳細は以下参照。
http://www.atmarkit.co.jp/ait/articles/1010/08/news123.html
ただ、Cのアプリでこれは要らんし、今時生CでGUIもないよな?
122デフォルトの名無しさん (ワッチョイ c111-JJVS)
2017/08/23(水) 06:05:17.73ID:x0fRL5lg0 テキストベースで構造体の値のファイルへの保存と読み込みをしたいのかな
123デフォルトの名無しさん (ワッチョイ 09e4-xjvb)
2017/08/25(金) 05:26:20.30ID:vC6ff47f0 マクロでどうにかできるかとも考えたが壊れる対処のし様がない
#define pr(a,b) printf(pr_##a(b))
#define pr_test_t(b) "#b{i:%d,s:%s}", (b).i, (b).s
typedef strct{int i; char *s;}test_t;
pr((test_t){.i=999; .s="abc"});
#define pr(a,b) printf(pr_##a(b))
#define pr_test_t(b) "#b{i:%d,s:%s}", (b).i, (b).s
typedef strct{int i; char *s;}test_t;
pr((test_t){.i=999; .s="abc"});
124デフォルトの名無しさん (ワッチョイ e96f-oKtA)
2017/08/25(金) 05:30:42.91ID:hNG5yKqv0 Cはウンコ言語なのでリフレクションはありませんの一言で終わる質問
125デフォルトの名無しさん (ワッチョイ d623-0bAf)
2017/08/25(金) 08:26:26.12ID:degYWVoy0 C言語はもう 気ままにリフレクション
126デフォルトの名無しさん (スップ Sdca-wqH8)
2017/08/25(金) 08:28:37.56ID:+VfvF6y6d >>124
うんこじゃない言語もコンパイラはうんこ言語(お前に言わせるとC言語)でつくられてるけどな
うんこじゃない言語もコンパイラはうんこ言語(お前に言わせるとC言語)でつくられてるけどな
127デフォルトの名無しさん (スップ Sdca-vlGO)
2017/08/25(金) 08:31:15.05ID:mWX/padLd 本当にうんこならとっくの昔に消えてるよ
128デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/25(金) 15:42:32.73ID:RGmsOxnq0 Cはうんことかほざくやつ
まさかLinuxなんか使ってねえだろな
まさかLinuxなんか使ってねえだろな
129デフォルトの名無しさん (スップ Sdca-vlGO)
2017/08/25(金) 17:02:40.42ID:mWX/padLd linuxはうんこ
130デフォルトの名無しさん (ワッチョイ b500-2x4P)
2017/08/25(金) 17:44:02.80ID:GY4pXB3S0 Cがウンコとか言ってる奴に限ってRubyでしか書けないとかいうオチだったら笑えるんだけどな
131デフォルトの名無しさん (ワッチョイ 41db-4xUk)
2017/08/25(金) 21:36:12.81ID:BZOsNf+t0 高級アセンブラ最高じゃん
132デフォルトの名無しさん (スップ Sdca-wqH8)
2017/08/25(金) 22:36:16.04ID:+VfvF6y6d >>131
ほんそれ
ほんそれ
133デフォルトの名無しさん (ワッチョイ caea-6Dzw)
2017/08/25(金) 22:45:39.22ID:IHFV3+gX0 むしろ Ruby で自由にコードを書ける人を尊敬する今日この頃。
最近やってるんだけど、どうしても馴染めない。普通には組めるけど、違和感が残るというか抵抗があるというか。
最近やってるんだけど、どうしても馴染めない。普通には組めるけど、違和感が残るというか抵抗があるというか。
134デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/26(土) 00:06:54.39ID:F7j6CSPU0 リフレクションを使う気がなければリフレクション自体がウンコだよ。
・ソースコードがだだ漏れ
・実行体が無駄に膨らむ(ソースコード情報を含むため)
・リクレクションが必要な用途なら、動的言語でついでに型無しの方が断然楽
GUIとかね。
ウンコと言われ続けたJavaScriptを誰も殺せず、
ついにはElectronとか言い出してデスクトップ側にも進出してきてるだろ。
やれば分かるがGUIに関しては動的型無しHTML(=JavaScript)は最強。
C言語はC言語が目指した範囲での仕様は美しいよ。
ただそこには今後ともリクレクションは必要ないね。
唯一引っかかるのは>>122か。
>>133
どの辺が?
俺はRuby使いではないが、それよりも酷いとされるJavaScriptには馴染んでしまったから、
ある程度は答えられるかも。
・ソースコードがだだ漏れ
・実行体が無駄に膨らむ(ソースコード情報を含むため)
・リクレクションが必要な用途なら、動的言語でついでに型無しの方が断然楽
GUIとかね。
ウンコと言われ続けたJavaScriptを誰も殺せず、
ついにはElectronとか言い出してデスクトップ側にも進出してきてるだろ。
やれば分かるがGUIに関しては動的型無しHTML(=JavaScript)は最強。
C言語はC言語が目指した範囲での仕様は美しいよ。
ただそこには今後ともリクレクションは必要ないね。
唯一引っかかるのは>>122か。
>>133
どの辺が?
俺はRuby使いではないが、それよりも酷いとされるJavaScriptには馴染んでしまったから、
ある程度は答えられるかも。
135デフォルトの名無しさん (ワッチョイ 09e4-xjvb)
2017/08/26(土) 00:48:52.34ID:acOQPPj10 lua等の組込み言語とやり取りする container生成用補助構文群が有ってもいい
関数では前方宣言とか scopeが邪魔して対処しきれないだろうから
うまくすれば文字列操作表示も標準libraryから追い出せる
関数では前方宣言とか scopeが邪魔して対処しきれないだろうから
うまくすれば文字列操作表示も標準libraryから追い出せる
136デフォルトの名無しさん (ワッチョイ 09e4-xjvb)
2017/08/26(土) 00:52:27.30ID:acOQPPj10 pr(test_t, (test_t){.i=999; .s="abc";});
137デフォルトの名無しさん (ワッチョイ b632-+Jgu)
2017/08/26(土) 14:20:33.57ID:rkE5GYva0138デフォルトの名無しさん (ワッチョイ 6aab-M74o)
2017/08/29(火) 00:26:03.40ID:+Y8D6iZy0 >>134
規模が大きい場合は型があって静的に検査できるほうが便利だねというのが世間の流れだと思うが
TypeScriptとかFlowとか
速度を稼ぐ目的でwasmも今後主流になっていくだろう
巨大ストレージ、OSSが主流な時代にメタデータのサイズやソース隠蔽は気にしなくなったし
規模が大きい場合は型があって静的に検査できるほうが便利だねというのが世間の流れだと思うが
TypeScriptとかFlowとか
速度を稼ぐ目的でwasmも今後主流になっていくだろう
巨大ストレージ、OSSが主流な時代にメタデータのサイズやソース隠蔽は気にしなくなったし
139デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/29(火) 02:58:14.41ID:Uz0lh6nE0 >>138
> 規模が大きい場合は型があって静的に検査できるほうが便利だねというのが世間の流れだと思うが
違うね。今の流れは「選べる」だ。つまり、
・型無し言語に型情報を付加し、恩恵を受ける---TypeScript
・型あり言語に型推論やジェネリックを追加し、型情報を記述する煩わしさを回避---C#/C++/Java
どっちも出来ることはほぼ同じ。ほぼ全ての言語がここを目指してるでしょ。(Cを除く)
要するにいいとこ取りを目指しているわけで、自然な流れだ。
型があった方が助かるのなら書け、煩わしいだけなら書かなくて済む、という方向に進化しつつある。
なお、GUIに関しては型無しでも大して苦労しない。バグっているかどうかは見れば分かるから。
> 速度を稼ぐ目的でwasmも今後主流になっていくだろう
ならんと思うし、C使いにとってはなったとしてもああそうですか、でしかないと思うが。
> 巨大ストレージ、OSSが主流な時代にメタデータのサイズやソース隠蔽は気にしなくなったし
OSSについては歪んでいて、本来は選べるべきだよ。
JavaScriptのようにソース曝露必須というのは問題ではある。
富豪どころか大富豪プログラミングを自由に出来る時代ではあるが、
何だかんだで速度=バッテリの持ち/快適さなので、実際は、「気にしなくていい環境も増えた」だよ。
とはいえCレベルでのチューニングが必要なこともそうないが。
> 規模が大きい場合は型があって静的に検査できるほうが便利だねというのが世間の流れだと思うが
違うね。今の流れは「選べる」だ。つまり、
・型無し言語に型情報を付加し、恩恵を受ける---TypeScript
・型あり言語に型推論やジェネリックを追加し、型情報を記述する煩わしさを回避---C#/C++/Java
どっちも出来ることはほぼ同じ。ほぼ全ての言語がここを目指してるでしょ。(Cを除く)
要するにいいとこ取りを目指しているわけで、自然な流れだ。
型があった方が助かるのなら書け、煩わしいだけなら書かなくて済む、という方向に進化しつつある。
なお、GUIに関しては型無しでも大して苦労しない。バグっているかどうかは見れば分かるから。
> 速度を稼ぐ目的でwasmも今後主流になっていくだろう
ならんと思うし、C使いにとってはなったとしてもああそうですか、でしかないと思うが。
> 巨大ストレージ、OSSが主流な時代にメタデータのサイズやソース隠蔽は気にしなくなったし
OSSについては歪んでいて、本来は選べるべきだよ。
JavaScriptのようにソース曝露必須というのは問題ではある。
富豪どころか大富豪プログラミングを自由に出来る時代ではあるが、
何だかんだで速度=バッテリの持ち/快適さなので、実際は、「気にしなくていい環境も増えた」だよ。
とはいえCレベルでのチューニングが必要なこともそうないが。
140デフォルトの名無しさん (ワッチョイ ad7f-vgeI)
2017/08/29(火) 07:49:01.20ID:pPJ906sN0 >・型無し言語に型情報を付加し、恩恵を受ける---TypeScript
>・型あり言語に型推論やジェネリックを追加し、型情報を記述する煩わしさを回避---C#/C++/Java
後者は型を明示的に書かなくてもいというだけで最初からすべて型検査してるぞ。
型検査について言えば、動的型付け言語に静的な型検査を導入する流れはあるが逆はない。
>・型あり言語に型推論やジェネリックを追加し、型情報を記述する煩わしさを回避---C#/C++/Java
後者は型を明示的に書かなくてもいというだけで最初からすべて型検査してるぞ。
型検査について言えば、動的型付け言語に静的な型検査を導入する流れはあるが逆はない。
141デフォルトの名無しさん (ワッチョイ d623-0bAf)
2017/08/29(火) 08:29:00.57ID:E7mhir0G0 動かす前にバグが見つかる仕掛けがちゃんとあるなら
動的型付けでも構わんよ
動的型付けでも構わんよ
142デフォルトの名無しさん (ワッチョイ 41db-4xUk)
2017/08/29(火) 14:42:19.23ID:/UmWkn6m0 無理ゲーっぽくね?
143デフォルトの名無しさん (ワッチョイ 41db-4xUk)
2017/08/29(火) 14:47:49.09ID:/UmWkn6m0 んなことはないみたいだぬ
144デフォルトの名無しさん (ドコグロ MM72-+ULf)
2017/08/29(火) 18:55:09.32ID:qEt/+AkhM 100%は無理
そこそこなら行ける
そこそこなら行ける
145デフォルトの名無しさん (ワッチョイ 2aef-vgeI)
2017/08/29(火) 20:04:11.09ID://zGX0GI0 option explicit +中間言語コンパイル,なら使えそうだ
146デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/29(火) 22:43:29.12ID:Uz0lh6nE0 >>140
> 型検査について言えば、動的型付け言語に静的な型検査を導入する流れはあるが逆はない。
これは事実としてはその通りだが、理由はこれが型あり言語の正義だからであって、
現実は型検査がウザイだけの時も多いだろ。
C++のtemplateとか、varで書いたら勝手にtemplate化してくれ、という場合も多い。
込み入ったことをやるとコンパイルを通すだけの為に苦労したりするが、
あんなのは完全に時間と手間の無駄だ。
また、他でもよく言われているが、確かに関数ポインタを常用し始めた場合、
型あり『しか出来ない』言語は壮絶にウザイ。どうでもいい型が氾濫するだけだし。
言語として出来る/出来ないではなく、
ユーザーがやりたい時には出来る/やりたくない時には切れる、が正解なんだよ。
型無し言語はこれを認めていて、欠点を修正し始めてる。
型あり言語はこれを認められず、まだ自分たちの正義(型検査は必須)を押し売りしてるだけ。
C(と言うかC++)ではconstがこの状況に近いのではないかな?
通説ではconstは付けるべき、となっているが、俺は付けてない。理由は、
・そもそも俺はconstで苦労したことがない(必要性を感じない)
・中途半端に付けてると余計に面倒になるだけ
・const_castとか、ただの馬鹿としか思えない
なんだが、同様の意見の奴もある程度はいるだろ。
過剰な型検査ってのはあるんだよ。それが人によって異なるってだけで。
やればいいって物ではない。
> 型検査について言えば、動的型付け言語に静的な型検査を導入する流れはあるが逆はない。
これは事実としてはその通りだが、理由はこれが型あり言語の正義だからであって、
現実は型検査がウザイだけの時も多いだろ。
C++のtemplateとか、varで書いたら勝手にtemplate化してくれ、という場合も多い。
込み入ったことをやるとコンパイルを通すだけの為に苦労したりするが、
あんなのは完全に時間と手間の無駄だ。
また、他でもよく言われているが、確かに関数ポインタを常用し始めた場合、
型あり『しか出来ない』言語は壮絶にウザイ。どうでもいい型が氾濫するだけだし。
言語として出来る/出来ないではなく、
ユーザーがやりたい時には出来る/やりたくない時には切れる、が正解なんだよ。
型無し言語はこれを認めていて、欠点を修正し始めてる。
型あり言語はこれを認められず、まだ自分たちの正義(型検査は必須)を押し売りしてるだけ。
C(と言うかC++)ではconstがこの状況に近いのではないかな?
通説ではconstは付けるべき、となっているが、俺は付けてない。理由は、
・そもそも俺はconstで苦労したことがない(必要性を感じない)
・中途半端に付けてると余計に面倒になるだけ
・const_castとか、ただの馬鹿としか思えない
なんだが、同様の意見の奴もある程度はいるだろ。
過剰な型検査ってのはあるんだよ。それが人によって異なるってだけで。
やればいいって物ではない。
147デフォルトの名無しさん (ワッチョイ ad7f-vgeI)
2017/08/29(火) 22:56:30.74ID:pPJ906sN0 なんだ?>>139の「違うね」ってのは現状認識が違うって話じゃなくてあんたの理想と違うってことか?
そりゃ正解はあんたにしかわからんわ。
そりゃ正解はあんたにしかわからんわ。
148デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/29(火) 23:14:00.57ID:Uz0lh6nE0149デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/29(火) 23:17:01.52ID:/SLQJmZn0 > コンパイルを通すだけの為に苦労したりするが、
> あんなのは完全に時間と手間の無駄だ。
そうだねえ
自分の考えがはっきりしてなくて筋が通らないのを
コンパイラに突っ込まれ、そのたびに右往左往じゃ
下手の考え休むに似・・いや如かずってやつ
> あんなのは完全に時間と手間の無駄だ。
そうだねえ
自分の考えがはっきりしてなくて筋が通らないのを
コンパイラに突っ込まれ、そのたびに右往左往じゃ
下手の考え休むに似・・いや如かずってやつ
150デフォルトの名無しさん (ワッチョイ ad7f-vgeI)
2017/08/29(火) 23:31:56.37ID:pPJ906sN0 「今の流れってこうだよね」
「俺の欲しいものは違う」
会話にならねぇ。
「俺の欲しいものは違う」
会話にならねぇ。
151デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/29(火) 23:53:00.65ID:Uz0lh6nE0 >>150
そうとしか取れないのは君が未熟だからだね。
「流れ」ってのは原因ではなく、大多数が希望した「結果」なんだよ。
君は初心者だから、毎日コード書いている連中が何を求めているのか分からない。
それだけだね。
そうとしか取れないのは君が未熟だからだね。
「流れ」ってのは原因ではなく、大多数が希望した「結果」なんだよ。
君は初心者だから、毎日コード書いている連中が何を求めているのか分からない。
それだけだね。
152デフォルトの名無しさん (ワッチョイ 6aab-M74o)
2017/08/29(火) 23:57:29.58ID:+Y8D6iZy0 >>139,146
>GUIに関しては型無しでも大して苦労しない。バグっているかどうかは見れば分かるから。
見てわかる程度の規模の場合は型無しでもよいだろうね
>型検査がウザイだけの時も多いだろ
どんな時?C#には動的に型解決するdynamicがあるけどほとんど使わないな
COM除けばJSONやXMLの処理で楽するときぐらい?それでも本番用ならちゃんと書くなぁ
>どうでもいい型が氾濫
ジェネリックで型指定するだけだから氾濫しなくね?
あと、constはプログラマーがミスを防ぐためのものであると同時にコンパイラーへのヒントでもある
const修飾されていれば大胆な最適化が可能な場合も多い
>GUIに関しては型無しでも大して苦労しない。バグっているかどうかは見れば分かるから。
見てわかる程度の規模の場合は型無しでもよいだろうね
>型検査がウザイだけの時も多いだろ
どんな時?C#には動的に型解決するdynamicがあるけどほとんど使わないな
COM除けばJSONやXMLの処理で楽するときぐらい?それでも本番用ならちゃんと書くなぁ
>どうでもいい型が氾濫
ジェネリックで型指定するだけだから氾濫しなくね?
あと、constはプログラマーがミスを防ぐためのものであると同時にコンパイラーへのヒントでもある
const修飾されていれば大胆な最適化が可能な場合も多い
153デフォルトの名無しさん (ワッチョイ 2a89-GW8T)
2017/08/30(水) 00:01:54.97ID:3iEZIBUv0154デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/30(水) 00:53:26.35ID:F1WQhw000 >>152
> >GUIに関しては型無しでも大して苦労しない。バグっているかどうかは見れば分かるから。
> 見てわかる程度の規模の場合は型無しでもよいだろうね
規模にかかわらず、見ずにチェックするGUIなんて無いだろ。
> どんな時?C#には動的に型解決するdynamicがあるけどほとんど使わないな
おー、C#はやはり進んでいるというか、痒いところに手が届いているね。
要するに楽をさせてくれでしかないのだが、ぱっと思いつく遭遇したケースは、
・callbackでdelegateの型チェックがウザイ。グダグダ言わずにcallbackしてこい。
・リフレクション時がかなり最悪。(C#なら問題ないが、
VC++2008とかだと、MSDNで型を調べながら型を書くという本末転倒の事態になる)
以下にはJSONガーとか書いてあるけど、JSONをC++で受けたことはないので実感はない。
http://ufcpp.net/study/csharp/sp4_dynamic.html#what
後は型無しだとデタラメなパッチが可能だというのもあるし、俺は常用してるけど、
これ自体はあまり推奨されることではないね。
俺はJavaScriptで型をかかないことに慣れてしまったので、
再びVC++で型を書く時にウザくて仕方ない。
(ただしこれはVC++しかやってない時には全く感じなかった)
要するに型情報は具ではなく、ただのチェック用付加情報でしかないんだよ。
例えれば、当たり前に読める漢字にもいちいち全部ルビを付けている感じか?二度手間がウザイ。
ただし二重チェックをしたい部分もあるので、そういうところは書かせろ、とも思うが。
コンパイラにプログラマが合わせるのではなくて、プログラマにコンパイラが合わせるべき。
> ジェネリックで型指定するだけだから氾濫しなくね?
C#は多分そうだね。C#では解決済みかも。
> const修飾されていれば大胆な最適化が可能な場合も多い
この説はよく聞くが、具体的にどういうケースよ?
> >GUIに関しては型無しでも大して苦労しない。バグっているかどうかは見れば分かるから。
> 見てわかる程度の規模の場合は型無しでもよいだろうね
規模にかかわらず、見ずにチェックするGUIなんて無いだろ。
> どんな時?C#には動的に型解決するdynamicがあるけどほとんど使わないな
おー、C#はやはり進んでいるというか、痒いところに手が届いているね。
要するに楽をさせてくれでしかないのだが、ぱっと思いつく遭遇したケースは、
・callbackでdelegateの型チェックがウザイ。グダグダ言わずにcallbackしてこい。
・リフレクション時がかなり最悪。(C#なら問題ないが、
VC++2008とかだと、MSDNで型を調べながら型を書くという本末転倒の事態になる)
以下にはJSONガーとか書いてあるけど、JSONをC++で受けたことはないので実感はない。
http://ufcpp.net/study/csharp/sp4_dynamic.html#what
後は型無しだとデタラメなパッチが可能だというのもあるし、俺は常用してるけど、
これ自体はあまり推奨されることではないね。
俺はJavaScriptで型をかかないことに慣れてしまったので、
再びVC++で型を書く時にウザくて仕方ない。
(ただしこれはVC++しかやってない時には全く感じなかった)
要するに型情報は具ではなく、ただのチェック用付加情報でしかないんだよ。
例えれば、当たり前に読める漢字にもいちいち全部ルビを付けている感じか?二度手間がウザイ。
ただし二重チェックをしたい部分もあるので、そういうところは書かせろ、とも思うが。
コンパイラにプログラマが合わせるのではなくて、プログラマにコンパイラが合わせるべき。
> ジェネリックで型指定するだけだから氾濫しなくね?
C#は多分そうだね。C#では解決済みかも。
> const修飾されていれば大胆な最適化が可能な場合も多い
この説はよく聞くが、具体的にどういうケースよ?
155デフォルトの名無しさん (ワッチョイ 5923-pgRk)
2017/08/30(水) 00:58:09.18ID:ry+Kms2n0156デフォルトの名無しさん (ワッチョイ 5923-pgRk)
2017/08/30(水) 01:17:46.58ID:ry+Kms2n0 型どうこうで考えるべきは依存関係なんだが
静的型言語はすぐに依存関係ができる
そのためにやれ継承だのインタフェースだのデザパタだのとごちゃごちゃ考えなきゃならん
しかもデザパタで実現できる疎結合は完全じゃないからね
静的型言語はすぐに依存関係ができる
そのためにやれ継承だのインタフェースだのデザパタだのとごちゃごちゃ考えなきゃならん
しかもデザパタで実現できる疎結合は完全じゃないからね
157デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/30(水) 01:56:29.11ID:F1WQhw000 >>156
それは型ではなくてラムダの利点だと思うが。
ただ、ラムダを積極活用すると型が邪魔だってのはあるし、
結果的に関数型が型無しor型推論に突き進んだのはこれが理由だと思うが。
しかもデザパタって使い物にならんだろ。
というか元々Javaという関数ポインタもラムダもない言語で(キリッされても、
他の言語ならもっとマシに出来るんじゃね?ってのが多いというか、
なんで縛りプレイに付き合わないといけないの?っていうか、
だいたい説明自体もイミフなのが多いし。
それは型ではなくてラムダの利点だと思うが。
ただ、ラムダを積極活用すると型が邪魔だってのはあるし、
結果的に関数型が型無しor型推論に突き進んだのはこれが理由だと思うが。
しかもデザパタって使い物にならんだろ。
というか元々Javaという関数ポインタもラムダもない言語で(キリッされても、
他の言語ならもっとマシに出来るんじゃね?ってのが多いというか、
なんで縛りプレイに付き合わないといけないの?っていうか、
だいたい説明自体もイミフなのが多いし。
158デフォルトの名無しさん (ワッチョイ 6aab-M74o)
2017/08/30(水) 02:00:40.60ID:vF4qFgfn0 >>154
コンポーネントとかイベントの引数の型を間違えたり変更時に修正漏れが出たりはよくあるでしょ
>callbackでdelegateの型チェックがウザイ
async/awaitがある言語だとコールバックを使うことはあまりないしなぁ
どういうのを望んでるのかよくわからんが、型安全と最適化を投げ捨ててまでやることには見えん
コールバックの処理が適切なことはテストとかで保証するとか考えるとそっちが面倒そうに見えるが
>リフレクション時がかなり最悪
VC++でリフレクションって、どの話だ
>チェック用付加情報・二度手間がウザイ
どうせドキュメントとかテストに書いてくんだから二度手間は避けられん
定義が面倒な分、静的型言語では戻り値の型やメンバーが即座に確実に補完されるので非常に快適
全参照を書き換えるリファクタとかもできるし
新しい言語はそこら辺かなり解決されてる
コンポーネントとかイベントの引数の型を間違えたり変更時に修正漏れが出たりはよくあるでしょ
>callbackでdelegateの型チェックがウザイ
async/awaitがある言語だとコールバックを使うことはあまりないしなぁ
どういうのを望んでるのかよくわからんが、型安全と最適化を投げ捨ててまでやることには見えん
コールバックの処理が適切なことはテストとかで保証するとか考えるとそっちが面倒そうに見えるが
>リフレクション時がかなり最悪
VC++でリフレクションって、どの話だ
>チェック用付加情報・二度手間がウザイ
どうせドキュメントとかテストに書いてくんだから二度手間は避けられん
定義が面倒な分、静的型言語では戻り値の型やメンバーが即座に確実に補完されるので非常に快適
全参照を書き換えるリファクタとかもできるし
新しい言語はそこら辺かなり解決されてる
159デフォルトの名無しさん (ワッチョイ 5923-pgRk)
2017/08/30(水) 02:07:48.34ID:ry+Kms2n0160デフォルトの名無しさん (ワッチョイ 6aab-M74o)
2017/08/30(水) 02:25:01.52ID:vF4qFgfn0 >>154
constはどちらかというと、x + y = zみたいな変な呼び出しを禁じたいからつけてるから、最適化についてはパッとでは極端な例しか思いつかんな・・・
hoge(&a,&b);
c = a + b
でhogeの引数がconstなら処理を無視してa+bを静的に確定できるとか
根本的にC++は「型安全とバイナリの性能>>>楽をしたい」という発想の言語だから静的な型の確定を妨害するような機能は理念に反するでしょ
javascriptにポインタが欲しいぐらいの不自然さ
constはどちらかというと、x + y = zみたいな変な呼び出しを禁じたいからつけてるから、最適化についてはパッとでは極端な例しか思いつかんな・・・
hoge(&a,&b);
c = a + b
でhogeの引数がconstなら処理を無視してa+bを静的に確定できるとか
根本的にC++は「型安全とバイナリの性能>>>楽をしたい」という発想の言語だから静的な型の確定を妨害するような機能は理念に反するでしょ
javascriptにポインタが欲しいぐらいの不自然さ
161デフォルトの名無しさん (ワッチョイ e96f-oKtA)
2017/08/30(水) 06:22:36.60ID:dAnuHQ8p0 早く夏休み終わらないかな…
162デフォルトの名無しさん (ワッチョイ b500-2x4P)
2017/08/30(水) 07:01:40.06ID:AqkMSzAW0 いや終わらなくていいよ
電車混むし
電車混むし
163デフォルトの名無しさん (スップ Sdca-CsPo)
2017/08/30(水) 08:10:07.81ID:Li+Lo8rKd 大学生のは未だ続くで
164デフォルトの名無しさん (エーイモ SEb2-dmBu)
2017/08/30(水) 13:51:14.27ID:AB0hyKA3E すいません
Windowsでvirtualboxとかcygwinとかmsysみたいな名前のをインストールする予定はないんですが
WindowsでCを書く場合はVC++を使うのが定番なのでしょうか?
gccとclangを使うのはあんまりおすすめしないですか?
Windowsでvirtualboxとかcygwinとかmsysみたいな名前のをインストールする予定はないんですが
WindowsでCを書く場合はVC++を使うのが定番なのでしょうか?
gccとclangを使うのはあんまりおすすめしないですか?
165デフォルトの名無しさん (アウアウカー Sa85-HImR)
2017/08/30(水) 13:58:51.95ID:1qHN72hha GUIないならgccでも問題ない
166デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/30(水) 14:33:39.82ID:BJd10UjW0 GUIあってもgcc使えるぞ
gcc your_program.c -luser32 -mwindows
-luser32ってのがインポートライブラリuser32.libを使う指定な
他に色々kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.libなんかがいるんで適宜追加しる
gcc your_program.c -luser32 -mwindows
-luser32ってのがインポートライブラリuser32.libを使う指定な
他に色々kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.libなんかがいるんで適宜追加しる
167デフォルトの名無しさん (ドコグロ MM45-62g8)
2017/08/30(水) 18:06:52.31ID:S+MvNVsbM Windows版のgccある?
168デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/30(水) 18:24:32.41ID:BJd10UjW0169デフォルトの名無しさん (ドコグロ MM45-62g8)
2017/08/30(水) 18:31:00.76ID:S+MvNVsbM mingw 入ってない環境だとバイナリ使えないよね。
コンパイルして実行したいだけなのに。
コンパイルして実行したいだけなのに。
170デフォルトの名無しさん (ワッチョイ cd11-oKtA)
2017/08/30(水) 18:43:05.43ID:LRl1+/WB0 実行ファイルの配布の意図?
mingwでコンパイルできれば、実行もできる環境が整ってるんじゃないの?
mingwでコンパイルできれば、実行もできる環境が整ってるんじゃないの?
171デフォルトの名無しさん (ワッチョイ 096f-pmc4)
2017/08/30(水) 19:17:06.22ID:58Rp2mqQ0172デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/30(水) 19:17:51.85ID:BJd10UjW0 あのなー・・・
cygwinがそういう批判を受けていたのを踏まえて
「本当のミニマリスト」を目指したのがmingwなんだよ
それすらいやなら、あとはM$純正のbashくらいだぞ
cygwinがそういう批判を受けていたのを踏まえて
「本当のミニマリスト」を目指したのがmingwなんだよ
それすらいやなら、あとはM$純正のbashくらいだぞ
173デフォルトの名無しさん (ワッチョイ 0951-TBjh)
2017/08/30(水) 19:21:14.37ID:qx/wlZ6S0174デフォルトの名無しさん (ワッチョイ 86e3-2x4P)
2017/08/30(水) 20:36:36.61ID:ViOUv0iA0175デフォルトの名無しさん (ワッチョイ c61c-9BKz)
2017/08/30(水) 20:41:41.90ID:BJd10UjW0 >>168だって本当に最小限のmingwが黙って入るから意識せずに使えるぞ
で最小限じゃないmingwが欲しくなったらmsys2とか入れるんだよ
で最小限じゃないmingwが欲しくなったらmsys2とか入れるんだよ
176デフォルトの名無しさん (ワッチョイ 1932-RHs9)
2017/08/30(水) 20:52:42.57ID:t1uAI5x90 こういう枝葉でゴチャゴチャやるぐらいなら、さっさとVC入れたほうが良い
windowsで開発するなら、VCさえあれば十分
windowsで開発するなら、VCさえあれば十分
177デフォルトの名無しさん (ワッチョイ ca1e-62g8)
2017/08/30(水) 21:46:54.45ID:1xtdX2a20 コンソールアプリくらいならgccでコンパイルできても良さそうなもんだけどな。
関係ないけど .NET に JS コンパイラが入ってるの知らなかった。
関係ないけど .NET に JS コンパイラが入ってるの知らなかった。
178デフォルトの名無しさん (ドコグロ MM72-62g8)
2017/08/30(水) 22:05:25.61ID:AIW55pOFM179デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/30(水) 23:02:07.68ID:F1WQhw000 >>158
> 引数の型を間違えたり変更時に修正漏れが出たり
ねえよ。正確に言うと、『これが型検査で都合よく引っかかるのは』ねえよ。
型があってコンパイル時に落とせるのは明確なtypoだけで、それ以外は期待出来ない。
xxxx2とxxxx3とかを間違えた場合、通常、型は同じでしょ。
ただそれ以前にJavaScriptだと修正漏れ自体がないっつうか、修正しなくていいというか。
型検査は基本的にソース全体で辻褄が合っているかを検査する。
だから例えば機能追加で関数の引数が増えた場合、コンパイラは修正漏れを全て検出し、修正を促してくる。
ところがJavaScriptにはそういう機能はないから、漏れてしまう、というのがそちらの意見だと思うが、
そもそも漏れても動作するように作られてるから問題ない、というのがJavaScriptの思想。
具体的には、
・同じ関数が引数の数が違っても呼べるから、エラーにはならない。(引数の型/個数はシグニチャに入らない)
・足りてない引数は、undefind(falsy)になっているから、if (addedParameter) で簡単に対応出来る。
だから修正するパス(その機能が追加される動作パス)の部分だけ修正して、後は放置で問題ない。
もちろんこれだとソース内で引数の数の一致なんて無くなってしまう。
これでいいのか?とも思うが、俺が試した範囲では特に問題はなかった。
C#はIDEがいいから、全ソースをリファクタとかも簡単に出来るようだ。これはこれで一つの完成形だ。
そうではなく、手修正だと漏れる、だからコンパイラがそれを検出する、というのも一つの手だが、(C++)
漏れる漏れない以前に、関係ないところは修正の必要がそもそも無い、というのも一つの手だよ。(JavaScript)
ちまちま全修正するのが面倒だし危険だから、
受け側で引数違い毎にラップ(オーバーロード)してたらなんだかなぁ(俺的C++)、
みたいなのとは発想が逆だった。
> 引数の型を間違えたり変更時に修正漏れが出たり
ねえよ。正確に言うと、『これが型検査で都合よく引っかかるのは』ねえよ。
型があってコンパイル時に落とせるのは明確なtypoだけで、それ以外は期待出来ない。
xxxx2とxxxx3とかを間違えた場合、通常、型は同じでしょ。
ただそれ以前にJavaScriptだと修正漏れ自体がないっつうか、修正しなくていいというか。
型検査は基本的にソース全体で辻褄が合っているかを検査する。
だから例えば機能追加で関数の引数が増えた場合、コンパイラは修正漏れを全て検出し、修正を促してくる。
ところがJavaScriptにはそういう機能はないから、漏れてしまう、というのがそちらの意見だと思うが、
そもそも漏れても動作するように作られてるから問題ない、というのがJavaScriptの思想。
具体的には、
・同じ関数が引数の数が違っても呼べるから、エラーにはならない。(引数の型/個数はシグニチャに入らない)
・足りてない引数は、undefind(falsy)になっているから、if (addedParameter) で簡単に対応出来る。
だから修正するパス(その機能が追加される動作パス)の部分だけ修正して、後は放置で問題ない。
もちろんこれだとソース内で引数の数の一致なんて無くなってしまう。
これでいいのか?とも思うが、俺が試した範囲では特に問題はなかった。
C#はIDEがいいから、全ソースをリファクタとかも簡単に出来るようだ。これはこれで一つの完成形だ。
そうではなく、手修正だと漏れる、だからコンパイラがそれを検出する、というのも一つの手だが、(C++)
漏れる漏れない以前に、関係ないところは修正の必要がそもそも無い、というのも一つの手だよ。(JavaScript)
ちまちま全修正するのが面倒だし危険だから、
受け側で引数違い毎にラップ(オーバーロード)してたらなんだかなぁ(俺的C++)、
みたいなのとは発想が逆だった。
180デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/30(水) 23:03:09.90ID:F1WQhw000 async/awaitはJavaScriptにもあるが、あれはC#とかで必要なのであって、JavaScriptでは要らないね。
理由は、
・外側関数(上位階層)の変数は全部クロージャになっていて読み出せる。
・関数はどこにでも書ける。
から。C的に関数毎に変数が完全に分離している時にはasync/awaitでないと変数が共有出来ないけど、
JavaScriptの文法だとcallbackでも変数共有出来るから、要らん。具体的には、文法は適当だが、
function someTask {
var x = xxx;
var a = await funcA(x);
var b = await funcB(a,x);
}
みたいなのを、
function someTask {
var x = xxx;
var a, b; // 共有変数は上位で宣言しておく。これでクロージャから捕捉出来る。;
function funcA(){}
funcA(funcB); // funcBはcallback、funcA内でxは使える、aにも書ける
function funcB(){} // funcB内でa,xは使える、bにも書ける
}
だからawait毎にぶった切ってcallbackしても、上から順に実行するだけの単純ソースにしかならない。
JavaScriptなら、どっちでもいいや位でしかないんだよ。
C#ではこれができないから、async/awaitが必要だってだけで。
ただ俺もcallbackと言ったがこれは間違いだった。VC++では非同期のcallbackはやってないわ。
ウザイと思ったのは関数ポインタを差し込む時に型チェックがあることだった。
上記の通り、JavaScriptでは関数ポインタでさえあれば引数の型と個数は関係なく呼んでくるので、
関数ポインタを差し込む時にいちいち考える必要がないんだよ。
そして機能追加は追加パスだけの変更で済む。
C++の型チェックだと変更がソース全体に及ぶしこれを断れない。
引数の型とか個数を間違えた場合、普通は根本的に動かないなら、テストでは当てさえすれば検出出来る。
そんな簡単なエラーチェックの為にコンパイルを通すだけの為にいちいち型を合わせたり、
変更がソース全体に波及するのが危険でウザイって事。
理由は、
・外側関数(上位階層)の変数は全部クロージャになっていて読み出せる。
・関数はどこにでも書ける。
から。C的に関数毎に変数が完全に分離している時にはasync/awaitでないと変数が共有出来ないけど、
JavaScriptの文法だとcallbackでも変数共有出来るから、要らん。具体的には、文法は適当だが、
function someTask {
var x = xxx;
var a = await funcA(x);
var b = await funcB(a,x);
}
みたいなのを、
function someTask {
var x = xxx;
var a, b; // 共有変数は上位で宣言しておく。これでクロージャから捕捉出来る。;
function funcA(){}
funcA(funcB); // funcBはcallback、funcA内でxは使える、aにも書ける
function funcB(){} // funcB内でa,xは使える、bにも書ける
}
だからawait毎にぶった切ってcallbackしても、上から順に実行するだけの単純ソースにしかならない。
JavaScriptなら、どっちでもいいや位でしかないんだよ。
C#ではこれができないから、async/awaitが必要だってだけで。
ただ俺もcallbackと言ったがこれは間違いだった。VC++では非同期のcallbackはやってないわ。
ウザイと思ったのは関数ポインタを差し込む時に型チェックがあることだった。
上記の通り、JavaScriptでは関数ポインタでさえあれば引数の型と個数は関係なく呼んでくるので、
関数ポインタを差し込む時にいちいち考える必要がないんだよ。
そして機能追加は追加パスだけの変更で済む。
C++の型チェックだと変更がソース全体に及ぶしこれを断れない。
引数の型とか個数を間違えた場合、普通は根本的に動かないなら、テストでは当てさえすれば検出出来る。
そんな簡単なエラーチェックの為にコンパイルを通すだけの為にいちいち型を合わせたり、
変更がソース全体に波及するのが危険でウザイって事。
181デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/30(水) 23:04:03.99ID:F1WQhw000 > コールバックの処理が適切なことはテストとかで保証するとか考えると
どのみちテストはやらんと駄目でしょ。と言うか、逆に、
「コールバックの処理が適切なことは『型検査』で保証する」ってのは無理でしょ。
Haskellのキチガイ共はそういう思想らしいが。
「型安全」ってのはバグの一つの形「インタフェース(接続部)の間違い」を検出するだけであって、
処理の中身が間違っている場合は全く検出出来ない。つまりテストは省略出来ない。
それで「型安全」にするために払うコストと、それによって受ける恩恵を考えた場合、
俺にとっては「無いよりマシ」程度で、「投げ捨ててまで」って程の価値はないね。
とはいえtypoを検出する機能だけは欲しいんだが、逆に言えばそれだけで十分だ。
>>160
多分、constで最適化ガーってのはやっぱり無いんだよ。
想定されるケースはそちらの挙げたとおりで、
void someFunc(){
// (A)
hoge(&a, &b); // (B)
// (C)
}
で、(B)で変更されないことを保証されれば、
(A)時点の&a, &bのキャッシュ(というかローカル変数に取ったもの)が
(C)でも有効です、ってだけだが、そもそもこのケースがないだろ。
自関数内で変更してるかどうかはコンパイラには明確に分かるんだから、
考えられるのはこのように他関数をまたいだケースなんだけど、
それなら最初から(A)(C)(B)の順に処理しろ、でしかないし。
((B)で変更されるから(C)は(B)の後ろなのであって)
どのみちテストはやらんと駄目でしょ。と言うか、逆に、
「コールバックの処理が適切なことは『型検査』で保証する」ってのは無理でしょ。
Haskellのキチガイ共はそういう思想らしいが。
「型安全」ってのはバグの一つの形「インタフェース(接続部)の間違い」を検出するだけであって、
処理の中身が間違っている場合は全く検出出来ない。つまりテストは省略出来ない。
それで「型安全」にするために払うコストと、それによって受ける恩恵を考えた場合、
俺にとっては「無いよりマシ」程度で、「投げ捨ててまで」って程の価値はないね。
とはいえtypoを検出する機能だけは欲しいんだが、逆に言えばそれだけで十分だ。
>>160
多分、constで最適化ガーってのはやっぱり無いんだよ。
想定されるケースはそちらの挙げたとおりで、
void someFunc(){
// (A)
hoge(&a, &b); // (B)
// (C)
}
で、(B)で変更されないことを保証されれば、
(A)時点の&a, &bのキャッシュ(というかローカル変数に取ったもの)が
(C)でも有効です、ってだけだが、そもそもこのケースがないだろ。
自関数内で変更してるかどうかはコンパイラには明確に分かるんだから、
考えられるのはこのように他関数をまたいだケースなんだけど、
それなら最初から(A)(C)(B)の順に処理しろ、でしかないし。
((B)で変更されるから(C)は(B)の後ろなのであって)
182デフォルトの名無しさん (ワッチョイ 096f-pmc4)
2017/08/30(水) 23:14:59.21ID:58Rp2mqQ0 ただmsvcrtを使うということはvcがサポートするC規格に引きずられるのを留意しておくこと
最新のmsvcrtでもたしかC99止まりでinttypes.hをインクルードしてもPRId64とか使えない
C11の機能が欲しければ素直にlinux+gcc|clangの環境をオススメする
最新のmsvcrtでもたしかC99止まりでinttypes.hをインクルードしてもPRId64とか使えない
C11の機能が欲しければ素直にlinux+gcc|clangの環境をオススメする
183デフォルトの名無しさん (スフッ Sdea-NYHg)
2017/08/30(水) 23:55:33.72ID:FdjUx67gd 最適化かけないと通るけど、最適化かけるとセグフォ
プリントデバッグしたらプリント文置いたり減らしたりするだけで最後に表示されるものが変わる
なんだこれ
プリントデバッグしたらプリント文置いたり減らしたりするだけで最後に表示されるものが変わる
なんだこれ
184デフォルトの名無しさん (アウアウカー Sa07-6oPJ)
2017/08/31(木) 00:01:55.43ID:B2+zi4Baa 最後に¥0を付けてないとか
185デフォルトの名無しさん (ワッチョイ a34b-hEpb)
2017/08/31(木) 00:06:31.32ID:M/UQy7Jt0 >>183
malloc/free使ってる?
malloc/free使ってる?
186デフォルトの名無しさん (スフッ Sd1f-hbUo)
2017/08/31(木) 00:15:15.17ID:AFctto/wd187デフォルトの名無しさん (ワッチョイ cfe3-X0kF)
2017/08/31(木) 00:22:21.25ID:Mr6ZzHeH0 配列サイズを越えて代入しているとか
188デフォルトの名無しさん (ワッチョイ b36f-r+mQ)
2017/08/31(木) 00:28:32.21ID:K0ByhO+S0 つかソース晒せないの?
189デフォルトの名無しさん (スフッ Sd1f-hbUo)
2017/08/31(木) 00:28:58.33ID:AFctto/wd 配列の代入とは関係ないところで死んでるっぽいこともあるんだけど、それでも配列の範囲外アクセスとかあるものかなあ……
190デフォルトの名無しさん (スフッ Sd1f-hbUo)
2017/08/31(木) 00:31:52.88ID:AFctto/wd >>188
そこそこ依存ファイルあるし、一応研究室の研究で書いているので、失礼ながらソースは上げられないです
そこそこ依存ファイルあるし、一応研究室の研究で書いているので、失礼ながらソースは上げられないです
191デフォルトの名無しさん (スフッ Sd1f-hbUo)
2017/08/31(木) 00:32:55.14ID:AFctto/wd よく考えたらそんな状態で相談することが間違いか
やっぱり撤回します。スレ汚しすいませんでした
やっぱり撤回します。スレ汚しすいませんでした
192デフォルトの名無しさん (ワッチョイ a34b-hEpb)
2017/08/31(木) 00:34:49.91ID:M/UQy7Jt0 >>190
メモリリークをチェックしてみたら
メモリリークをチェックしてみたら
193デフォルトの名無しさん (ワッチョイ a323-X0kF)
2017/08/31(木) 02:33:47.40ID:KfXpPD/x0 最適化の有無で変わった事と言うと、この前こんなことがあった。
(以下の A, B は typedef された構造体)
A *p = NULL;
B *q = NULL;
if (...) {
A x;
/* x の初期化などをする。 */
p = &x;
}
if (...) {
B y;
/* y の初期化などをする。 */
q = &y;
}
この後で p が NULL でなければ p の指す先を使おうとして死亡。
まあ、ブロック(というかスコープ)から外れた所で使ってるんだから当然と言えば当然ではあるが、
最適化しない場合は x, y はその他のブロック外の自動変数と同じようにスタックに領域が取られ
ていて変化する事がなかった。そのため内容は保たれた。
しかし最適化したら A の領域は A のあるブロックから外に出たら破棄されたと解釈され、そして
B のあるブロックの B の領域として上の A の領域を使用するようになっていた。そのため x と y
の指す先は union のように重なってしまっておかしくなったと。
(以下の A, B は typedef された構造体)
A *p = NULL;
B *q = NULL;
if (...) {
A x;
/* x の初期化などをする。 */
p = &x;
}
if (...) {
B y;
/* y の初期化などをする。 */
q = &y;
}
この後で p が NULL でなければ p の指す先を使おうとして死亡。
まあ、ブロック(というかスコープ)から外れた所で使ってるんだから当然と言えば当然ではあるが、
最適化しない場合は x, y はその他のブロック外の自動変数と同じようにスタックに領域が取られ
ていて変化する事がなかった。そのため内容は保たれた。
しかし最適化したら A の領域は A のあるブロックから外に出たら破棄されたと解釈され、そして
B のあるブロックの B の領域として上の A の領域を使用するようになっていた。そのため x と y
の指す先は union のように重なってしまっておかしくなったと。
194デフォルトの名無しさん (ワッチョイ 7f2b-gSHU)
2017/08/31(木) 03:22:36.47ID:IR3nOS0l0 >>179
いや、もっと単純に、APIの仕様変更で取得できる情報や型が変化したけど、エラー処理とか偶然うまく見える場合とかは目視では見落としがあるよねということ
テストを書く前に簡単に修正箇所がわかれば便利みたいな話だけど、まぁ、やり方やライブラリによって違うのかもね
少なくともAngularとかはTypeScript採用だし、型あったほうが便利派は少なからずいるよとだけ
いや、もっと単純に、APIの仕様変更で取得できる情報や型が変化したけど、エラー処理とか偶然うまく見える場合とかは目視では見落としがあるよねということ
テストを書く前に簡単に修正箇所がわかれば便利みたいな話だけど、まぁ、やり方やライブラリによって違うのかもね
少なくともAngularとかはTypeScript採用だし、型あったほうが便利派は少なからずいるよとだけ
195デフォルトの名無しさん (ワッチョイ 7f2b-gSHU)
2017/08/31(木) 03:58:43.17ID:IR3nOS0l0 >>180,181
C#でも同じようにラムダ式やローカル関数で変数をキャプチャできるぞ
というかC++でもできるはず
コールバックは階層が増えたりエラーや例外処理、分岐などが生じるとどんどん複雑になって単純には行かなくなる
それを解決するのがPromiseで、それを更に単純に記述するのがasync/await
新しいライブラリとかはPromiseで返すのが当たり前になって来てるし、今後の言語もasyncに舵をきるんじゃないかな
>関数ポインタを差し込む時にいちいち考える必要がない
C++でどうやって実現すんの?
char *を受け取る関数ポインタにとconst char*で受ける関数ポインタを入れてエラーにしなかったらややこしくて危険なだけでしょ
コンパイルエラーじゃなくてテストで保証するとになればなおさら変
C#でも同じようにラムダ式やローカル関数で変数をキャプチャできるぞ
というかC++でもできるはず
コールバックは階層が増えたりエラーや例外処理、分岐などが生じるとどんどん複雑になって単純には行かなくなる
それを解決するのがPromiseで、それを更に単純に記述するのがasync/await
新しいライブラリとかはPromiseで返すのが当たり前になって来てるし、今後の言語もasyncに舵をきるんじゃないかな
>関数ポインタを差し込む時にいちいち考える必要がない
C++でどうやって実現すんの?
char *を受け取る関数ポインタにとconst char*で受ける関数ポインタを入れてエラーにしなかったらややこしくて危険なだけでしょ
コンパイルエラーじゃなくてテストで保証するとになればなおさら変
196デフォルトの名無しさん (ワッチョイ 7f2b-gSHU)
2017/08/31(木) 04:15:22.77ID:IR3nOS0l0 >>181
>最初から(A)(C)(B)の順に処理しろ
何言ってんだBとかCに副作用があるなら入れ替えちいかんだろ
コードは適当だけど、
void test(a,b)
{
hoge(&a,&b);
piyo(a+b);
}
test(1,2)
みたいに静的に確定するなら、piyoの引数をコンパイル時に計算してpiyo(3)みたいなコードをはいてくれたりもする
>最初から(A)(C)(B)の順に処理しろ
何言ってんだBとかCに副作用があるなら入れ替えちいかんだろ
コードは適当だけど、
void test(a,b)
{
hoge(&a,&b);
piyo(a+b);
}
test(1,2)
みたいに静的に確定するなら、piyoの引数をコンパイル時に計算してpiyo(3)みたいなコードをはいてくれたりもする
197デフォルトの名無しさん (ブーイモ MMa7-yL/R)
2017/08/31(木) 05:12:55.38ID:egwbmqN8M スタックフレームの破壊は明白なんだから関数内で宣言してる配列全部の
範囲チェック入れてみな
範囲チェック入れてみな
198デフォルトの名無しさん (ワッチョイ 430d-b8Mh)
2017/08/31(木) 11:26:29.57ID:e5ym4hpC0 やりそうなこと
□ 要素数 n=10 の配列 int array[10];
アクセス可能なのは array[0] 〜 array[n-1] まで
なのに array[n] を利用してる
□ 文字列による配列の初期化で 終端記号(\0)含んだ分の領域を用意してない
× char text[3] = "123"; // 終端記号含めると 4要素の空間が必要なのに 3要素にしてる
○ char text[] = "123"; // コンパイラにおまかせで
□ 要素数を求めるのに sizeof(a) / sizeof(a[0]) を使ってるけど
そもそも論で a が配列ではなくポインタだった為
処理したい要素数が渡っていない
□ 要素数 n=10 の配列 int array[10];
アクセス可能なのは array[0] 〜 array[n-1] まで
なのに array[n] を利用してる
□ 文字列による配列の初期化で 終端記号(\0)含んだ分の領域を用意してない
× char text[3] = "123"; // 終端記号含めると 4要素の空間が必要なのに 3要素にしてる
○ char text[] = "123"; // コンパイラにおまかせで
□ 要素数を求めるのに sizeof(a) / sizeof(a[0]) を使ってるけど
そもそも論で a が配列ではなくポインタだった為
処理したい要素数が渡っていない
199デフォルトの名無しさん (ワッチョイ fff0-6h2J)
2017/08/31(木) 13:55:57.05ID:wUqC2S3T0 >>183
研究室から出せない秘伝のソース、
なら特殊なハードウェアで、実はvolatileが欠かせない、とかじゃねえの
ソースの向こうのハードウェアが実は核分裂制御装置でした!……とかでももう驚かねえよ
研究室から出せない秘伝のソース、
なら特殊なハードウェアで、実はvolatileが欠かせない、とかじゃねえの
ソースの向こうのハードウェアが実は核分裂制御装置でした!……とかでももう驚かねえよ
200デフォルトの名無しさん (スプッッ Sddf-b5LN)
2017/08/31(木) 16:11:13.20ID:aZ9Rj489d 創業当時から継ぎ足した秘伝のソース
201デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/08/31(木) 16:17:00.98ID:JYM1pg890 半分使って、半分継ぎ足しを繰り返すと79回目あたりで
アボガドロ定数の逆数くらいに薄まるよね
アボガドロ定数の逆数くらいに薄まるよね
202デフォルトの名無しさん (スプッッ Sddf-b5LN)
2017/08/31(木) 16:47:29.73ID:aZ9Rj489d 何か、酵母とか菌糸とか入ってて熟成されるんよ。ただ混ざるだけじゃないんよ。
203デフォルトの名無しさん (ワッチョイ 6323-6h2J)
2017/08/31(木) 22:53:34.07ID:F9uWTtxD0 >>194
> 型あったほうが便利派
半分くらいはインテリセンス目当てだと思うぞ。
そして俺自身も型を否定はしないが、C++の型検査も過剰気味だと感じている。
だからconstは使ってないし、関数ポインタの型検査もウザイ。
つーか、型を間違えること自体がほぼ無いだろ?
引数の順番を間違えたりした場合に型検査で引っかかるってだけで。
> 型あったほうが便利派
半分くらいはインテリセンス目当てだと思うぞ。
そして俺自身も型を否定はしないが、C++の型検査も過剰気味だと感じている。
だからconstは使ってないし、関数ポインタの型検査もウザイ。
つーか、型を間違えること自体がほぼ無いだろ?
引数の順番を間違えたりした場合に型検査で引っかかるってだけで。
204デフォルトの名無しさん (ワッチョイ 6323-6h2J)
2017/08/31(木) 22:54:02.64ID:F9uWTtxD0 >>195
> ローカル関数で変数をキャプチャできるぞ
ローカル変数しかできんだろ。しかも明示しなければならない。(全指定も出来るが)
JavaScriptの場合は上位関数の変数をどこまでも辿れるので、(レキシカルスコープ)
入れ子になっていても破綻せずに分解して展開出来るんだよ。
C++方式の場合はawait内にawaitが入れ子になっていると、展開出来ないだろ。
> コールバックは階層が増えたりエラーや例外処理、分岐などが生じるとどんどん複雑になって単純には行かなくなる
> それを解決するのがPromiseで、それを更に単純に記述するのがasync/await
これは通説だが、俺はこれが嘘だと思ってるんだよね。
JavaScriptで言われているcallback地獄ってのは、非同期処理をその場で入れ子で書いている。
それよりawaitの方が見やすいってのは、上から順に読める形式だから。
でも>>180に書いたとおり、JavaScriptの文法ではcallbackを常に展開して書けるので、
その気になればawaitと同じ順で処理を書けるんだよ。(非同期がネストしない)
つまり、レキシカルスコープ+クロージャなら、awaitが無くてもawaitと同じ順で処理を書けるわけ。
C#やC++はレキシカルスコープがないからawaitが必要なだけ。
だからここら辺は実は文法との相性もあるんだよ。
C++はそんなのお構いなしに何でもかんでも入れてる感じだが。
(とはいえ、選択肢が増えること自体は悪いことではない)
> char *を受け取る関数ポインタにとconst char*で受ける関数ポインタを入れてエラーにしなかったらややこしくて危険なだけでしょ
そりゃconstの有無をテストで落とすのは無理だろうさ。
まあ、俺はconst自体が意味無い(無駄な手間が増えるだけ)という認識だが。
(ただし本当の意味でのconst(「定数」)の場合は使う。Cならマクロで与えていたケースとか)
そもそも君はどこまでconstを使っているんだ?
C++のconstは「定数」ではなく「再代入禁止」だ。
現実的には無駄に再代入することもないので、ローカル変数の大半にconstを付けられるはず。
これをやっているのか?
やっていないのなら、君自身も「過剰な型検査」が存在することを認めていることになるが。
> ローカル関数で変数をキャプチャできるぞ
ローカル変数しかできんだろ。しかも明示しなければならない。(全指定も出来るが)
JavaScriptの場合は上位関数の変数をどこまでも辿れるので、(レキシカルスコープ)
入れ子になっていても破綻せずに分解して展開出来るんだよ。
C++方式の場合はawait内にawaitが入れ子になっていると、展開出来ないだろ。
> コールバックは階層が増えたりエラーや例外処理、分岐などが生じるとどんどん複雑になって単純には行かなくなる
> それを解決するのがPromiseで、それを更に単純に記述するのがasync/await
これは通説だが、俺はこれが嘘だと思ってるんだよね。
JavaScriptで言われているcallback地獄ってのは、非同期処理をその場で入れ子で書いている。
それよりawaitの方が見やすいってのは、上から順に読める形式だから。
でも>>180に書いたとおり、JavaScriptの文法ではcallbackを常に展開して書けるので、
その気になればawaitと同じ順で処理を書けるんだよ。(非同期がネストしない)
つまり、レキシカルスコープ+クロージャなら、awaitが無くてもawaitと同じ順で処理を書けるわけ。
C#やC++はレキシカルスコープがないからawaitが必要なだけ。
だからここら辺は実は文法との相性もあるんだよ。
C++はそんなのお構いなしに何でもかんでも入れてる感じだが。
(とはいえ、選択肢が増えること自体は悪いことではない)
> char *を受け取る関数ポインタにとconst char*で受ける関数ポインタを入れてエラーにしなかったらややこしくて危険なだけでしょ
そりゃconstの有無をテストで落とすのは無理だろうさ。
まあ、俺はconst自体が意味無い(無駄な手間が増えるだけ)という認識だが。
(ただし本当の意味でのconst(「定数」)の場合は使う。Cならマクロで与えていたケースとか)
そもそも君はどこまでconstを使っているんだ?
C++のconstは「定数」ではなく「再代入禁止」だ。
現実的には無駄に再代入することもないので、ローカル変数の大半にconstを付けられるはず。
これをやっているのか?
やっていないのなら、君自身も「過剰な型検査」が存在することを認めていることになるが。
205デフォルトの名無しさん (ワッチョイ 6323-6h2J)
2017/08/31(木) 22:54:22.15ID:F9uWTtxD0 >>196
コードを流用するとね、
void test(a,b)
{
// (A)
hoge(&a,&b); // (B)
piyo(a+b); // (C)
}
で、(B)をconst指定にした時のみ(C)で大胆な最適化を行えるケースは、
・(B)が(C)に影響する副作用を持っていないと「const指定した時のみ」分かる
場合だけだが、これはconst指定ではどうにもならんだろ。
これはプログラマが上位の仕様(test関数の仕様)として規定するものであって。
例えば構造体配列で、(B)は[i]への書き込み、(C)は[j]からの読み出しで、i!=jが上位で保証されているとか。
この場合は、プログラマが最初から(A)(C)(B)の順に書けるんだよ。
そうではなくて、(B)が(C)に対しての副作用を持つ可能性がある場合、つまりi!=jが保証されていない場合、
当然(B)(C)の順にする必要があるけど、
これをconst指定で最適化(=(B)が(C)に対しての副作用を持たないことを保証)することは出来ないでしょ。
コードを流用するとね、
void test(a,b)
{
// (A)
hoge(&a,&b); // (B)
piyo(a+b); // (C)
}
で、(B)をconst指定にした時のみ(C)で大胆な最適化を行えるケースは、
・(B)が(C)に影響する副作用を持っていないと「const指定した時のみ」分かる
場合だけだが、これはconst指定ではどうにもならんだろ。
これはプログラマが上位の仕様(test関数の仕様)として規定するものであって。
例えば構造体配列で、(B)は[i]への書き込み、(C)は[j]からの読み出しで、i!=jが上位で保証されているとか。
この場合は、プログラマが最初から(A)(C)(B)の順に書けるんだよ。
そうではなくて、(B)が(C)に対しての副作用を持つ可能性がある場合、つまりi!=jが保証されていない場合、
当然(B)(C)の順にする必要があるけど、
これをconst指定で最適化(=(B)が(C)に対しての副作用を持たないことを保証)することは出来ないでしょ。
206デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/09/01(金) 02:04:57.35ID:2msaHTP30 >>204
ん、C++のconstは、Cのconstよりも「定数」だぞ
int const a = 1;
switch(1) [
case a: ; //valid in C++, invalid in C
}
ん、C++のconstは、Cのconstよりも「定数」だぞ
int const a = 1;
switch(1) [
case a: ; //valid in C++, invalid in C
}
207デフォルトの名無しさん (スップ Sd1f-wHLy)
2017/09/01(金) 08:48:03.58ID:5GGRc0nid >>206
すまん、そのコードの意味がわからん
すまん、そのコードの意味がわからん
208デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/09/01(金) 09:06:42.83ID:2msaHTP30 typoしとるな
[は{
[は{
209デフォルトの名無しさん (ワッチョイ 430d-b8Mh)
2017/09/01(金) 09:55:02.84ID:kxCoop1y0 case ラベルに const な変数の変数名
C++ ならばリテラルと等価となりセーフ
C は変数のままの扱いでアウト
C++ ならばリテラルと等価となりセーフ
C は変数のままの扱いでアウト
210デフォルトの名無しさん (ワッチョイ 53db-aQR2)
2017/09/01(金) 11:36:56.59ID:IGPoCkp90 Cのconstは変更不可なオブジェクトだからな
211デフォルトの名無しさん (ドコグロ MMdf-6Nl5)
2017/09/01(金) 13:20:08.84ID:JSZHio/AM C++は使える範囲を広くしただけでconstの意味はCといっしょ
constによる最適化の話には関係しない
constによる最適化の話には関係しない
212デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/09/01(金) 15:37:25.51ID:2msaHTP30 違う
constはもともとC++発祥のもので、
Cでパクるにあたり微妙に改変した
constは最適化に関係するが
今この流れでは最適化とは全く無関係の話をしている
constはもともとC++発祥のもので、
Cでパクるにあたり微妙に改変した
constは最適化に関係するが
今この流れでは最適化とは全く無関係の話をしている
213デフォルトの名無しさん (ワッチョイ c300-X0kF)
2017/09/01(金) 16:51:03.36ID:dkwAUCjz0 volatileについてもkwsk
214デフォルトの名無しさん (ワッチョイ fff0-6h2J)
2017/09/01(金) 17:40:42.98ID:XJwe5Q/Z0 ttps://regmedia.co.uk/2011/02/18/dennis-richie-and-brian-kernighan-pdp-11.jpg
こういう時代の揮発性のメモリ
揮発しないメモリもあるんですよ
こういう時代の揮発性のメモリ
揮発しないメモリもあるんですよ
215デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/09/01(金) 18:43:10.50ID:2msaHTP30 ビットフェードとvolatileは関係ないぞ
216デフォルトの名無しさん (ワッチョイ e311-b8Mh)
2017/09/01(金) 18:59:13.16ID:dXFBhBz10 コード中の文意では変わってなくても、他の要因で変わる可能性あるような
割り込みやマルチスレッド等で共有してる変数とか
割り込みやマルチスレッド等で共有してる変数とか
217デフォルトの名無しさん (ワッチョイ cf23-Gmm8)
2017/09/03(日) 03:14:53.65ID:GCfgdhr+0 > C++のconstは「定数」ではなく「再代入禁止」だ
代入と初期化を混同してませんか
代入と初期化を混同してませんか
218デフォルトの名無しさん (ワッチョイ c300-X0kF)
2017/09/03(日) 08:56:24.33ID:72Px+h1e0 staticについてもkwsk
219デフォルトの名無しさん (ワッチョイ a323-wVzx)
2017/09/03(日) 11:44:42.91ID:jl0cf3RS0 性的な
220デフォルトの名無しさん (ワッチョイ e311-b8Mh)
2017/09/03(日) 12:14:41.26ID:9dM4T0NO0 外からは見えないように、そして、なくさないようにするエロ本
221デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/09/03(日) 17:40:32.30ID:jXGwZqzU0 一口にstaticと言っても、そのキーワードは用法で意味が変わるからなあ
222デフォルトの名無しさん (ワッチョイ 7fef-6h2J)
2017/09/03(日) 17:45:54.60ID:5WRYI1ZX0 static に背負わせすぎな気がする
関数内変数の static
関数スコープ外の static
C++ ならばクラスメソッドのstatic
クラス変数の static もあったかな‥多すぎだ‥
関数内変数の static
関数スコープ外の static
C++ ならばクラスメソッドのstatic
クラス変数の static もあったかな‥多すぎだ‥
223デフォルトの名無しさん (ワッチョイ a34b-hbUo)
2017/09/03(日) 18:29:43.87ID:fyDk5FSQ0 予約語を減らす涙ぐましい努力
224デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/09/03(日) 18:47:29.02ID:jXGwZqzU0 C99以後、仮引数のstaticもあるしな
225デフォルトの名無しさん (ワッチョイ ffea-pNuo)
2017/09/04(月) 00:43:28.93ID:QxIkVb9z0 ポインタ関連で*と&の記号を使っているのも
初心者を遠ざけているよな
素直にpointerとかrefとかの予約語作ればよかったのに
初心者を遠ざけているよな
素直にpointerとかrefとかの予約語作ればよかったのに
226デフォルトの名無しさん (ワッチョイ 7f89-eV1K)
2017/09/04(月) 01:05:35.63ID:IeE+YITL0 >>225
もともと高級アセンブラとして生まれた経緯を考えたら、ポインタ関連の基本的な記述のためにはくどいキーワードではなく最もシンプルな演算子が割り当てられるのは自然なことだと思う。
もともと高級アセンブラとして生まれた経緯を考えたら、ポインタ関連の基本的な記述のためにはくどいキーワードではなく最もシンプルな演算子が割り当てられるのは自然なことだと思う。
>>225
C# の ref 宣言のように,宣言だけでなく呼び出し側でも ref が必要だという文法はあってもよかったかな
C# の ref 宣言のように,宣言だけでなく呼び出し側でも ref が必要だという文法はあってもよかったかな
228デフォルトの名無しさん (ワッチョイ a323-X0kF)
2017/09/04(月) 02:45:48.86ID:tVodzhFi0 >>224
え?そんなのあった?
え?そんなのあった?
229デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
2017/09/04(月) 08:55:10.34ID:pd3pCmCq0 >>228
ISO/IEC9899:1999
6.7.5.3 Function declarators (including prototypes)
21 EXAMPLE 5
void f(double a[restrict static 3][5]);
ISO/IEC9899:1999
6.7.5.3 Function declarators (including prototypes)
21 EXAMPLE 5
void f(double a[restrict static 3][5]);
230デフォルトの名無しさん (ワッチョイ a323-wVzx)
2017/09/05(火) 00:59:51.51ID:2RdPD3ce0 >>229
ああ。そういう使い方か。
ああ。そういう使い方か。
231デフォルトの名無しさん (アウアウウー Sa47-ktFK)
2017/09/07(木) 15:42:36.42ID:zsD50ajta 以下の三つの操作に違いはありますか
NはMと比べて十分大きいとします
char s[M];
wchar_t ws[N];
mbstate_t state = {0};
// 1
scanf("%s", s);
wbsrtowcs(ws, &s, N, &state);
// 2
scanf("%ls", ws);
// 3
wscanf(L"%ls", ws);
NはMと比べて十分大きいとします
char s[M];
wchar_t ws[N];
mbstate_t state = {0};
// 1
scanf("%s", s);
wbsrtowcs(ws, &s, N, &state);
// 2
scanf("%ls", ws);
// 3
wscanf(L"%ls", ws);
232デフォルトの名無しさん (ワッチョイ b323-QlH+)
2017/09/08(金) 04:19:51.29ID:LlnxN/9E0 >>231
1のscanf()はchar型で文字列を受け取ろうとするのでエンコードによっては複数バイト文字が全て読めない可能性がある。
例えば2バイトづつのUnicodeの0xff以下のコードがそのまま来た場合、ビッグエンディアンならすぐに0x00が1バイト目に来てしまう。
1のscanf()はchar型で文字列を受け取ろうとするのでエンコードによっては複数バイト文字が全て読めない可能性がある。
例えば2バイトづつのUnicodeの0xff以下のコードがそのまま来た場合、ビッグエンディアンならすぐに0x00が1バイト目に来てしまう。
233デフォルトの名無しさん (エーイモ SE5a-w7pF)
2017/09/08(金) 22:13:19.23ID:Hco6il2OE 兄貴すいません
アロー演算子の使い方を学びたいのですがどこを直せば動くのか教えてください
#include <stdio.h>
struct User {
char name[5];
int age;
};
int main()
{
struct User *u = { "hoge", 10 };
if (u->hoge != NULL) {
printf("%d\n", 1);
} else {
printf("%d\n", 0);
}
return 0;
}
アロー演算子の使い方を学びたいのですがどこを直せば動くのか教えてください
#include <stdio.h>
struct User {
char name[5];
int age;
};
int main()
{
struct User *u = { "hoge", 10 };
if (u->hoge != NULL) {
printf("%d\n", 1);
} else {
printf("%d\n", 0);
}
return 0;
}
234デフォルトの名無しさん (ワッチョイ 3e6c-xkdj)
2017/09/08(金) 22:41:39.10ID:R6JsR04N0235デフォルトの名無しさん (ワッチョイ 8311-QyhX)
2017/09/09(土) 01:43:06.63ID:DK1wXlQ90 struct User {
char *name;
int age;
};
int main()
{
struct User st = { "hoge", 10 };
struct User *u = &st;
if (u->name != NULL) {
......
char *name;
int age;
};
int main()
{
struct User st = { "hoge", 10 };
struct User *u = &st;
if (u->name != NULL) {
......
236デフォルトの名無しさん (ワッチョイ 1af0-x/0H)
2017/09/09(土) 12:01:06.79ID:KEHxH6tI0 >>233
mallocして中身を詰める
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char name[5];
int age;
}User;
User* new_user(const char* const name, const int age){
User* u = (User*)malloc(sizeof(User));
strcpy(u->name, name);
u->age = age;
return u;
}
int main(){
User* u = new_user("hoge", 10);
if (u->name != NULL) {
printf("%d\n", 1);
} else {
printf("%d\n", 0);
}
return 0;
}
mallocして中身を詰める
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char name[5];
int age;
}User;
User* new_user(const char* const name, const int age){
User* u = (User*)malloc(sizeof(User));
strcpy(u->name, name);
u->age = age;
return u;
}
int main(){
User* u = new_user("hoge", 10);
if (u->name != NULL) {
printf("%d\n", 1);
} else {
printf("%d\n", 0);
}
return 0;
}
237デフォルトの名無しさん (アウアウウー Sa47-ktFK)
2017/09/09(土) 12:54:39.58ID:Ii5yjdZLa238デフォルトの名無しさん (ワッチョイ b7e4-hwHx)
2017/09/09(土) 16:17:54.34ID:qJRB74Th0 >233
int main(){
return !printf("%d\n",strlen( (&(struct User){.[0]name=0, .age=10, .name={'h','o','g','e'}})->name) 1: 0), 0;
}
char[5] nameとNULLの比較じゃ意味ねーと思うんだわ
int main(){
return !printf("%d\n",strlen( (&(struct User){.[0]name=0, .age=10, .name={'h','o','g','e'}})->name) 1: 0), 0;
}
char[5] nameとNULLの比較じゃ意味ねーと思うんだわ
239デフォルトの名無しさん (ワッチョイ b323-xkdj)
2017/09/10(日) 04:20:42.87ID:3lFSiHDa0 >>237
大丈夫だと思う。
大丈夫だと思う。
240デフォルトの名無しさん (アウアウカー Sa43-OnxZ)
2017/09/10(日) 09:19:13.64ID:bduAIVLIa >>238
なんか色々間違ってねーか?
なんか色々間違ってねーか?
241デフォルトの名無しさん (ワッチョイ ba89-l0Z7)
2017/09/10(日) 10:12:13.09ID:3KJHgwTr0242デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 11:46:48.72ID:uI7cAZFMa 暇すぎたので昨日からC言語の勉強始めましたプログラミング初心者です。
これって趣味にできる?
これって趣味にできる?
243デフォルトの名無しさん (スププ Sdba-uTHE)
2017/09/10(日) 11:52:24.67ID:igLJE8zId できる
244デフォルトの名無しさん (ワッチョイ b323-xkdj)
2017/09/10(日) 13:39:43.37ID:3lFSiHDa0 そして趣味が高じて仕事にw
245デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 13:42:12.95ID:uI7cAZFMa 今本屋なんだけどどの本で学ぶのがいい?
てかphytonとか他の言語の方が良かったりする?
てかphytonとか他の言語の方が良かったりする?
246デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 13:45:14.25ID:uI7cAZFMa ちなみに本職は監査法人の公認会計士で監査してるんだけど仕事に役立つならそれに越したことはない
247デフォルトの名無しさん (ワッチョイ b339-xWDE)
2017/09/10(日) 13:50:00.90ID:SyCSejr00 幅広くエロエロやると上達早いで
もしノイマン型コンピュータの基本知識が
無いのならどこかで学習する必要がある
メモリ、アキュムレーター、インデックスレジスタ…etc
もしノイマン型コンピュータの基本知識が
無いのならどこかで学習する必要がある
メモリ、アキュムレーター、インデックスレジスタ…etc
248デフォルトの名無しさん (ワッチョイ baef-/PUN)
2017/09/10(日) 13:53:38.31ID:rGvjr77j0 >>246
公認会計士の仕事にはなかなか結びつかないだろうけれども…ガンバレ
C/C++ はどちらかというと原始的
python AI/機械学習で今はやり
ゴルフでもなんでも最初は大変だから一定の覚悟が必要
公認会計士の仕事にはなかなか結びつかないだろうけれども…ガンバレ
C/C++ はどちらかというと原始的
python AI/機械学習で今はやり
ゴルフでもなんでも最初は大変だから一定の覚悟が必要
249デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 13:56:43.80ID:uI7cAZFMa あんま知識は無い。
じゃあC言語とphytonを並行して学ぼうかしら。
じゃあC言語とphytonを並行して学ぼうかしら。
250デフォルトの名無しさん (ワッチョイ b323-QlH+)
2017/09/10(日) 14:35:30.74ID:3lFSiHDa0 会計ねえ。Excelとかの本のほうがいいかも知れんな。その方が仕事に結び付けられる事が多くて覚えは早いのではないかと思う。
マクロも一応プログラムだしな。Excelにくっついた形のものではあるが結構色々な事ができる。
で、それがある程度できるようになったらプログラムというものがだいたいどういうものかわかるようになってるだろうから次はVBのように似ているものをやる。
似ているのでこれの習得はかなり早いと思う。それから他の言語を色々やって幅を広げる。
マクロも一応プログラムだしな。Excelにくっついた形のものではあるが結構色々な事ができる。
で、それがある程度できるようになったらプログラムというものがだいたいどういうものかわかるようになってるだろうから次はVBのように似ているものをやる。
似ているのでこれの習得はかなり早いと思う。それから他の言語を色々やって幅を広げる。
251デフォルトの名無しさん (ワッチョイ b339-xWDE)
2017/09/10(日) 14:52:01.58ID:SyCSejr00 Excelマクロ…
組むと疲れる、悪い癖が付く等良い所が無い言語
組むと疲れる、悪い癖が付く等良い所が無い言語
252デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 15:07:37.65ID:uI7cAZFMa まあ別に趣味だから仕事に役立たなくてもいいぞ
253デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 15:12:20.15ID:uI7cAZFMa 苦しんで覚えるC言語っての買った
254デフォルトの名無しさん (ガックシ 06b6-uTHE)
2017/09/10(日) 15:23:52.77ID:GVNmgcdo6 苦しめ
255デフォルトの名無しさん (ワッチョイ 23b6-6X04)
2017/09/10(日) 15:29:50.37ID:7And7Hgf0 俺なら楽しんで覚えるけどね
256デフォルトの名無しさん (ワッチョイ 3b00-xkdj)
2017/09/10(日) 16:30:29.97ID:TxU3QtzA0 苦Cは買わなくてもネットで読めるのに・・・
257デフォルトの名無しさん (ワッチョイ ba89-l0Z7)
2017/09/10(日) 16:52:57.48ID:3KJHgwTr0 見易さではいまだ紙媒体の方が上だと思うし、惜しむほどの額でもないだろう
258デフォルトの名無しさん (ワッチョイ 1af0-x/0H)
2017/09/10(日) 17:48:30.86ID:eDTlLPEV0 神聖言語COBOL
259デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 17:58:39.08ID:Z8XrRGDBa 受信したメールの中身を理解して必要なメールと不必要なメールを分け、必要なメールの情報を分かりやすい文章に要約して表示するプログラムC言語で作れる?
ついでに簡単な返信なら自動でしてくれたらありがたいんだが。
ついでに簡単な返信なら自動でしてくれたらありがたいんだが。
260デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 18:04:27.57ID:Z8XrRGDBa 返信が必要なメールと判断した場合は、返信メール本文の例を1万種類ぐらい自動で作成して、その中からより最適なものを3種類ぐらい提示してきてこっちはそれを選ぶだけで良いという機能も欲しいぞ
261デフォルトの名無しさん (フリッテル MM06-Aa8k)
2017/09/10(日) 18:16:25.18ID:/r+wfg1UM レス乞食
262デフォルトの名無しさん (ワッチョイ 3b00-xkdj)
2017/09/10(日) 18:24:18.77ID:TxU3QtzA0263デフォルトの名無しさん (ワッチョイ 4ee3-xkdj)
2017/09/10(日) 18:26:26.80ID:VNZjd7Zj0 りんなとやり取りするプログラム作って、りんなに判断してもらえ。返信内容も一緒に
264片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-k5VX)
2017/09/10(日) 18:40:04.78ID:m2l+DHFcd SMTP, POP3などのメールプロトコルで、メールサーバとソケット通信。
メールを分類するなら、自然言語処理とベイズ推定が必要。
メールを分類するなら、自然言語処理とベイズ推定が必要。
265片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-k5VX)
2017/09/10(日) 18:57:20.96ID:m2l+DHFcd 単純な分類なら、振り分けルールが使えるメーラーを使えば簡単。
266デフォルトの名無しさん (ワッチョイ 8311-QyhX)
2017/09/10(日) 19:00:07.53ID:Fa46oRS50 ヘッダーに書いてあるエンコードが嘘いってて中身は別コードを
なんとか帳尻合わして可視化する部分が厄介 (nkf で大分楽にはなるらしいけど)
なんとか帳尻合わして可視化する部分が厄介 (nkf で大分楽にはなるらしいけど)
267デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/10(日) 19:00:48.08ID:BxaTac1G0 >>259
「必要なメール」とそれ以外の境界を
おまえさんが明確化できるか否かにかかっている
何言語を使おうが同じことだ
Cは推論エンジンそのものを作れる言語で
通信アプリやドライバを作れる言語でもあるので
諦めねばならないアイディアはまずないはず
「必要なメール」とそれ以外の境界を
おまえさんが明確化できるか否かにかかっている
何言語を使おうが同じことだ
Cは推論エンジンそのものを作れる言語で
通信アプリやドライバを作れる言語でもあるので
諦めねばならないアイディアはまずないはず
268デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 19:38:42.01ID:Z8XrRGDBa >>267
「必要なメール」とそれ以外の境界線はこれまで私自身が行ってきたメールへの対応を見てプログラム自ら学習して欲しい。
また分類や要約は高度な文脈、ニュアンス判断も伴うレベルで行わせたい。
それも様々な小説や文献を通してコンピュータ自ら学習して欲しい。
ちなみにこれ外注したらいくらぐらい?
10万円ぐらいするかな?
「必要なメール」とそれ以外の境界線はこれまで私自身が行ってきたメールへの対応を見てプログラム自ら学習して欲しい。
また分類や要約は高度な文脈、ニュアンス判断も伴うレベルで行わせたい。
それも様々な小説や文献を通してコンピュータ自ら学習して欲しい。
ちなみにこれ外注したらいくらぐらい?
10万円ぐらいするかな?
269デフォルトの名無しさん (ワッチョイ e732-6X04)
2017/09/10(日) 19:44:06.14ID:jwBfW/fF0 10倍ぐらい出せば良いんじゃねーの
270デフォルトの名無しさん (アウアウカー Sa43-F2FU)
2017/09/10(日) 19:46:11.33ID:+BHhCGE8a linuxでpop/smtpサーバー立てればよくね
スクリプトで特定のワードが見つかったら処理すればいいし
送信はmailコマンドがあるし
スクリプトで特定のワードが見つかったら処理すればいいし
送信はmailコマンドがあるし
271片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-k5VX)
2017/09/10(日) 19:47:08.66ID:m2l+DHFcd >>268
自ら学習するにしても、教師なしでは低品質になる。効率よく学習するためには、コンピュータとの対話(ダイアログ)が必要になる。
自ら学習するにしても、教師なしでは低品質になる。効率よく学習するためには、コンピュータとの対話(ダイアログ)が必要になる。
272片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-k5VX)
2017/09/10(日) 19:52:13.40ID:m2l+DHFcd 深層学習させるにしても、タグ付けの作業が必要になる。
273デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/10(日) 20:10:47.20ID:BxaTac1G0 >>268
267だが、Cは推論エンジンを作れると言ったはず
おまえさん自身はそこから学習しなかったのか?
10万ねえ
支那の国家プロジェクトがどうなっているか知っているか?
支那からのSPAMに「天安門」と書いて返信すると我々にとって
ありがたい動作をしてくれるというアレだ
国家ではないが大企業のAIが共産党は無能とか言い出して
ひと騒ぎにもなったよなあ
おまえさんの10万円のソフトはおまえさんを無能とか
言い出さないか?
267だが、Cは推論エンジンを作れると言ったはず
おまえさん自身はそこから学習しなかったのか?
10万ねえ
支那の国家プロジェクトがどうなっているか知っているか?
支那からのSPAMに「天安門」と書いて返信すると我々にとって
ありがたい動作をしてくれるというアレだ
国家ではないが大企業のAIが共産党は無能とか言い出して
ひと騒ぎにもなったよなあ
おまえさんの10万円のソフトはおまえさんを無能とか
言い出さないか?
274デフォルトの名無しさん (アウアウカー Sa43-+qdT)
2017/09/10(日) 20:26:02.78ID:Z8XrRGDBa あとC言語でタイムマシン作れる?
といっても未来のインターネット閲覧できる程度でいいんだが。
作れる人いたら10万円までなら出すぜ。
といっても未来のインターネット閲覧できる程度でいいんだが。
作れる人いたら10万円までなら出すぜ。
275片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-k5VX)
2017/09/10(日) 20:32:37.81ID:m2l+DHFcd >>274
予測・予想が届く範囲でないと、予知はできない。できたとしても、競馬の予想や天気予報くらいだ。物理法則を超えることはできない。
予測・予想が届く範囲でないと、予知はできない。できたとしても、競馬の予想や天気予報くらいだ。物理法則を超えることはできない。
276デフォルトの名無しさん (ワッチョイ 237f-x/0H)
2017/09/10(日) 20:39:00.76ID:rIACWFTk0 アホなことを書いてしまったと気付いて、ネタだったことにしてごまかそうとしている?
277デフォルトの名無しさん (ワッチョイ 576c-+qdT)
2017/09/10(日) 20:42:41.68ID:I7ZEh6pU0 物理法則なんて人間が考えたものに過ぎないからどうせ間違いだらけでしょ?
278片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-k5VX)
2017/09/10(日) 20:50:00.29ID:m2l+DHFcd 深層学習で美少女の画像を大量に生成するという技術はある。未来の人が書きそうな絵を生成することはできる。
279デフォルトの名無しさん (ワッチョイ 3b97-oRRO)
2017/09/10(日) 21:11:06.17ID:n6o1Bnrv0 物理は、むずかしい
280片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-k5VX)
2017/09/10(日) 21:39:16.69ID:m2l+DHFcd へ へ
の の
も
へ
の の
も
へ
281デフォルトの名無しさん (フリッテル MM06-NkDA)
2017/09/11(月) 03:08:03.91ID:byfRWwJtM div B = 0
rot E = -(∂B/∂t)
div D = ρ
rot H = ∂D/∂t + j
rot E = -(∂B/∂t)
div D = ρ
rot H = ∂D/∂t + j
282デフォルトの名無しさん (ワッチョイ 7af7-PSjD)
2017/09/12(火) 18:24:02.20ID:zVhRA/dD0 C言語覚えればCIAのパソコン
ハッキングできたりするの?
ハッキングできたりするの?
283デフォルトの名無しさん (フリッテル MM06-iDwu)
2017/09/12(火) 19:21:49.41ID:8ybhBsXfM なんでこんなアホがプログラム板にいるんだ?
284デフォルトの名無しさん (スップ Sd5a-xWDE)
2017/09/12(火) 19:35:17.20ID:8gurLWtqd だって、コーダーって大概馬鹿じゃん
285デフォルトの名無しさん (ワッチョイ 3b00-xkdj)
2017/09/12(火) 19:59:12.99ID:C09YrKwT0 夏休みはもう終わったぞ
286デフォルトの名無しさん (ドコグロ MMcb-Qch9)
2017/09/12(火) 20:22:37.24ID:E3lbzyXMM ずっと休みの奴が張り付いてるんじゃね?
287デフォルトの名無しさん (ワッチョイ 4ee3-xkdj)
2017/09/12(火) 20:40:18.98ID:oYtiliiD0 printf("Hello, work!");
288デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/12(火) 22:47:32.51ID:CGKPtYms0289デフォルトの名無しさん (ワッチョイ ba89-l0Z7)
2017/09/13(水) 00:05:26.05ID:iyeBQ3Kc0 コーダーだから馬鹿だとは思わないが、>>288みたいなレスをするのは馬鹿だなと思いました。
290デフォルトの名無しさん (アウアウウー Sa47-ktFK)
2017/09/13(水) 10:49:46.10ID:gIW5dRYoa >>239
ありがとうございました
ありがとうございました
291デフォルトの名無しさん (ワッチョイ db0d-QyhX)
2017/09/13(水) 10:57:10.59ID:E2QlRAh70 >>287
puts("Hell 'o work?");
puts("Hell 'o work?");
292デフォルトの名無しさん (ワッチョイ 1af4-QyhX)
2017/09/13(水) 11:29:24.17ID:tSE5B5Al0 printf("HALO world!");
293デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/13(水) 12:41:46.69ID:cFJcbLHs0294デフォルトの名無しさん (ワッチョイ b3a3-v0Ju)
2017/09/13(水) 13:17:09.64ID:z6o40qKf0 >>293
安価に取り替えがきくので、低く見られるのはしょうがないと諦めろ
安価に取り替えがきくので、低く見られるのはしょうがないと諦めろ
295デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/13(水) 13:33:05.82ID:cFJcbLHs0 人件費のダンピングは国が国民を保護する義務の対象だが
真面目にやってくれなくて我々はその被害を受けているのだ
本来、能力に応じた収入があるべきという感覚そのものを
捨てちまったブタはいいねえ悩みがなくて
真面目にやってくれなくて我々はその被害を受けているのだ
本来、能力に応じた収入があるべきという感覚そのものを
捨てちまったブタはいいねえ悩みがなくて
296デフォルトの名無しさん (ワッチョイ b3be-v0Ju)
2017/09/13(水) 14:36:38.24ID:GgkwnlJN0 >>295
本来能力に応じた報酬を受け取るべきと考えて、それが受け取れない事に不満を持った連中はとっくに逃げ出してる
残ってるお前らは不満を持ちながら逃げ出す事さえ出来ないゴミ
下に見られてもしょうがない
本来能力に応じた報酬を受け取るべきと考えて、それが受け取れない事に不満を持った連中はとっくに逃げ出してる
残ってるお前らは不満を持ちながら逃げ出す事さえ出来ないゴミ
下に見られてもしょうがない
297デフォルトの名無しさん (アウアウカー Sa43-OnxZ)
2017/09/13(水) 14:42:45.38ID:yshNp3B/a 確かに馬鹿な奴もいるけどレベルの高い奴もいる。コーダーに限った話じゃないだろ。
日本に馬鹿が多いんだよ。たぶん。
日本に馬鹿が多いんだよ。たぶん。
298デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/13(水) 15:31:18.76ID:cFJcbLHs0299デフォルトの名無しさん (ワッチョイ 47c2-x/0H)
2017/09/13(水) 15:43:10.20ID:lgdTeqni0 3桁ってことか
300デフォルトの名無しさん (スフッ Sdba-ALM6)
2017/09/13(水) 16:11:37.47ID:PJsF5JPod 時給だろ。
301デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/13(水) 16:18:46.88ID:cFJcbLHs0 妻子持ちがどのくら金いるか
童貞にはわからんようだな
童貞にはわからんようだな
302デフォルトの名無しさん (ワッチョイ 1a1b-ajxu)
2017/09/13(水) 16:31:08.86ID:J/ZU3q6K0 板違いが分からないよりマシ
303デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/13(水) 16:42:40.48ID:cFJcbLHs0 284にぬかせボケ
304デフォルトの名無しさん (ワッチョイ 3b00-xkdj)
2017/09/13(水) 17:15:26.17ID:7kZqRPKj0 クソスレ過ぎ笑う
305デフォルトの名無しさん (ワッチョイ 5f6f-v0Ju)
2017/09/13(水) 19:04:55.78ID:FmzSjQYZ0306デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/13(水) 19:25:13.27ID:cFJcbLHs0307デフォルトの名無しさん (スププ Sdba-uTHE)
2017/09/13(水) 19:29:03.36ID:E/jL69iKd 複雑な立場だなww
308デフォルトの名無しさん (ワッチョイ 5f6f-v0Ju)
2017/09/13(水) 19:36:56.55ID:FmzSjQYZ0 >>306
僕のお父さんは奴隷のリーダーですってか?
僕のお父さんは奴隷のリーダーですってか?
309デフォルトの名無しさん (ワッチョイ 17e3-x/0H)
2017/09/13(水) 20:24:58.56ID:ruF3Cq7F0 実際のところそれでも結構なもんだ
310デフォルトの名無しさん (フリッテル MM06-bZ49)
2017/09/13(水) 21:33:37.15ID:qtzqYGs4M 馬鹿な奴隷に指示、管理する者の気苦労が分からんのか
311デフォルトの名無しさん (ドコグロ MM92-Qch9)
2017/09/13(水) 21:35:35.97ID:PcFMQESFM312デフォルトの名無しさん (ワッチョイ 17e3-x/0H)
2017/09/13(水) 21:50:53.77ID:ruF3Cq7F0 金持ちしか子供作らせないのは国策
やつらに恥などない
怒れ
やつらに恥などない
怒れ
313デフォルトの名無しさん (ワッチョイ 9a6f-vOdE)
2017/09/13(水) 21:56:29.09ID:dVC5ajCT0 マ板でやれ
314デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
2017/09/13(水) 22:36:54.70ID:cFJcbLHs0 >>312
俺は金持ちじゃねえ
単年度で8桁いっても次年以後で気を抜けばボコボコだ
一生遊んで暮らせる金があるやつにしか子供を作らせないなんて国策はねえ
童貞がイソップの葡萄こいてろ、こちとら稼いでみせると必死こいてんだ
俺は金持ちじゃねえ
単年度で8桁いっても次年以後で気を抜けばボコボコだ
一生遊んで暮らせる金があるやつにしか子供を作らせないなんて国策はねえ
童貞がイソップの葡萄こいてろ、こちとら稼いでみせると必死こいてんだ
315デフォルトの名無しさん (ワッチョイ 17e3-x/0H)
2017/09/13(水) 23:29:23.30ID:ruF3Cq7F0 ポッキリと折れて周囲に生暖かい目で見られるところまで見えた
316デフォルトの名無しさん (ワッチョイ d3f7-sU5l)
2017/09/14(木) 17:55:25.19ID:r9C1TnUx0 まんこ
317デフォルトの名無しさん (ワッチョイ 6123-pAdv)
2017/09/14(木) 21:35:54.73ID:Ng+6QcSm0 >>299
3桁って、10進数だと999円が限界だぞ
3桁って、10進数だと999円が限界だぞ
318デフォルトの名無しさん (ワッチョイ 5100-+ReX)
2017/09/14(木) 22:14:40.48ID:vjSz//mI0319デフォルトの名無しさん (ワッチョイ 016f-Yr6p)
2017/09/14(木) 23:45:34.67ID:lhu0Z/PJ0 ジンバブエドルで3桁か?
320デフォルトの名無しさん (ワッチョイ 39c2-o7xi)
2017/09/15(金) 11:30:59.37ID:EItFo4370 >>317
頭いいなおまえ
頭いいなおまえ
321デフォルトの名無しさん (ササクッテロリ Sp4d-Kd6g)
2017/09/19(火) 16:22:54.12ID:SXimL5kTp 昔"c言語をダイエットさせる本"みたいなタイトルの本読んだと思うんだが分かるやついる?
見つからなくて探してる
見つからなくて探してる
322デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
2017/09/21(木) 20:42:10.28ID:x8dEnzes0 for(;~scanf("%d",&a);)とかwhile(~scanf("%d", &a))とかで~がないだけで永遠に入力ループするんだけど
~ってなにを宣言してるんだ教えてくれ
~ってなにを宣言してるんだ教えてくれ
323デフォルトの名無しさん (ワッチョイ 8300-Dc1X)
2017/09/21(木) 20:48:43.32ID:BDILGhdI0 ~はビット単位のNOT演算子じゃないの?
324デフォルトの名無しさん (ワッチョイ 9f2c-9/67)
2017/09/21(木) 21:03:53.86ID:N1EOCCyb0 ~なしでよくね?
325デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
2017/09/21(木) 21:23:35.16ID:kYTPFpbC0 本来なら 変数a に格納されるまでループしたい意図だろうけど・・・・・
scanf の戻り値は 代入操作できた変数の数で
0 だと入力のフォーマットに合致しなかったわけなんだが (ここまでは素直)
一旦 その状態になると、次に正しく入力しても拾ってくれない scanf 独特の挙動があって
正しく入力しようが 0 のままというkuso
件の場合
最初の入力で数値ではない o を与えると (%d で受けれないので失敗)
次のループの入力で 1 を与えても やはり変数に格納ざれずに失敗したまま
これがあるので scanf は使うな、と良く言われてる所以
scanf の戻り値は 代入操作できた変数の数で
0 だと入力のフォーマットに合致しなかったわけなんだが (ここまでは素直)
一旦 その状態になると、次に正しく入力しても拾ってくれない scanf 独特の挙動があって
正しく入力しようが 0 のままというkuso
件の場合
最初の入力で数値ではない o を与えると (%d で受けれないので失敗)
次のループの入力で 1 を与えても やはり変数に格納ざれずに失敗したまま
これがあるので scanf は使うな、と良く言われてる所以
326デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
2017/09/21(木) 21:54:22.20ID:x8dEnzes0 一行読み込みで同じ処理を数値なくなるまでしたいんだけどどう読み込んだ方がいい?
327デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
2017/09/21(木) 22:19:34.61ID:kYTPFpbC0 fgets で行単位で読み込み
その行バッファに対して sscanf で変数に拾い上げするなり、11文字ずずつ字句解析するなり
char buf[512];
int a;
while (fgets(buf, 512, stdin)) {
/* 1行読んだよ */
if (sscanf(buf, "%d", &a) != 1) {
/* 数値じゃないのが来たのは無視する */
continue;
}
/* a に値が格納されたよ */
:
}
その行バッファに対して sscanf で変数に拾い上げするなり、11文字ずずつ字句解析するなり
char buf[512];
int a;
while (fgets(buf, 512, stdin)) {
/* 1行読んだよ */
if (sscanf(buf, "%d", &a) != 1) {
/* 数値じゃないのが来たのは無視する */
continue;
}
/* a に値が格納されたよ */
:
}
328デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
2017/09/21(木) 22:26:26.69ID:kYTPFpbC0 日本語でおけ
× 11文字ずずつ字句解析するなり
○ 1文字づつ字句解析するなり
× 11文字ずずつ字句解析するなり
○ 1文字づつ字句解析するなり
329デフォルトの名無しさん (ワッチョイ 2e32-toYf)
2017/09/21(木) 23:44:09.55ID:Xpxn9Za50 >>327
strtolとかstrspn?系つかったほうがよくね?
strtolとかstrspn?系つかったほうがよくね?
330デフォルトの名無しさん (ワッチョイ 9f2c-9/67)
2017/09/22(金) 00:16:23.70ID:zbqUBjYs0331デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
2017/09/22(金) 01:03:58.95ID:IvB4cJv30332デフォルトの名無しさん (ワッチョイ eb6f-9dtB)
2017/09/22(金) 01:11:24.08ID:exEqzPdX0333デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
2017/09/22(金) 01:39:40.49ID:BRiVyzo00 forの継続条件がどう動いてるのかわからないな読み込めた時はループして読み込めなかったときはループ抜けるってのがどう判定されてるのか見えないな
334デフォルトの名無しさん (ワッチョイ eb6f-9dtB)
2017/09/22(金) 02:12:21.25ID:exEqzPdX0335デフォルトの名無しさん (ワッチョイ 1ee3-Dc1X)
2017/09/22(金) 02:35:57.85ID:dUE2o1PV0 もっとシンプルに使える入力関数を
誰かが作ってくれれば良いのに
誰かが作ってくれれば良いのに
336デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
2017/09/22(金) 03:10:18.60ID:IvB4cJv30 >>335
簡単なので多分もう世界中に山ほどあると思うが、標準化されてないだけだろうな。
簡単なので多分もう世界中に山ほどあると思うが、標準化されてないだけだろうな。
337デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
2017/09/22(金) 05:10:39.06ID:BRiVyzo00 while((a=Console.ReadLine())!=null)こうゆうので入力がなかったら終了するって簡単にできればC言語も楽なんだけどな
338デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/22(金) 14:57:26.19ID:8MJCwgYc0 int *get_int(int *dst, jmp_buf err)
{
if (scanf("%d", dst) != 1)
{
if (err) longjmp(err, 1);
else return NULL;
}
return dst;
}
こんなしょーもないのでいいのに標準化委員会は斜め上なことばかり・・・
{
if (scanf("%d", dst) != 1)
{
if (err) longjmp(err, 1);
else return NULL;
}
return dst;
}
こんなしょーもないのでいいのに標準化委員会は斜め上なことばかり・・・
339デフォルトの名無しさん (ワッチョイ 06aa-73Ld)
2017/09/22(金) 20:47:03.45ID:dtN6vQMf0 >>334
でもscanfの前に~あるだけで入力なくっても無限ループしないで抜けるのはNOTと戻り値がNOTでtureだから抜けるの?
でもscanfの前に~あるだけで入力なくっても無限ループしないで抜けるのはNOTと戻り値がNOTでtureだから抜けるの?
340デフォルトの名無しさん (ワッチョイ 3b23-Iax1)
2017/09/22(金) 22:06:16.56ID:IvB4cJv30 チルダ付けたのは失敗した時に-1が返されると思ったからかな?
てか、チルダ付けた場合はそれ以外で0にならんよな。
まあでもこれも整数値の内部表現の違う特殊な環境だったりしたらダメかも知れないが。
てか、チルダ付けた場合はそれ以外で0にならんよな。
まあでもこれも整数値の内部表現の違う特殊な環境だったりしたらダメかも知れないが。
341デフォルトの名無しさん (ワッチョイ 8300-Dc1X)
2017/09/22(金) 22:16:43.87ID:JX9ZYj2p0 組込み以外で~使ってんの初めて見た
342デフォルトの名無しさん (ワッチョイ 8300-pgy8)
2017/09/22(金) 22:21:06.44ID:FtjqsiSd0 普通にビット処理だと使うよね
ビット処理なんかしないって?
ビット処理なんかしないって?
343334 (ワッチョイ eb6f-9dtB)
2017/09/22(金) 22:25:08.34ID:exEqzPdX0 ごめんウソ書いたわ
一つも変換されないで入力エラーになったらscanf()は0ではなくEOFを返すらしい
>>339
よって多くの環境ではEOF==-1(0xFFFFFFFF)だからその反転で0になってループ抜けるということだね
一つも変換されないで入力エラーになったらscanf()は0ではなくEOFを返すらしい
>>339
よって多くの環境ではEOF==-1(0xFFFFFFFF)だからその反転で0になってループ抜けるということだね
345デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
2017/09/23(土) 07:38:02.97ID:9QRg4G5c0346デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
2017/09/23(土) 11:43:39.39ID:8bsZ0VcP0347デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 14:50:28.05ID:IblrvTVf0 Win32環境なのですが
_beginthread関数で、thread1, thread2を回し
グローバル変数g_nをthread1の中で変更しても
thread2から正しい値が参照できません。参照できないというよりthread2が機能しなくなるように見えます。変数表示がカットされる。
VisualC++でプログラムしてるのですがデバッグモードだと普通に動いて
リリースモードだと動かなくなります。グローバル変数にvolatileをつけてみてもダメでした。
何が原因でしょうか?
_beginthread関数で、thread1, thread2を回し
グローバル変数g_nをthread1の中で変更しても
thread2から正しい値が参照できません。参照できないというよりthread2が機能しなくなるように見えます。変数表示がカットされる。
VisualC++でプログラムしてるのですがデバッグモードだと普通に動いて
リリースモードだと動かなくなります。グローバル変数にvolatileをつけてみてもダメでした。
何が原因でしょうか?
348デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/23(土) 15:16:24.27ID:PasvkTo90 具体的なコードもなく原因を聞かれても、どうしようもないと思うぞ
VCの拡張機能で相応の機能が追加されてたような気もするが
本来volatileにスレッド間での排他やメモリバリアの機能はないからな
VCの拡張機能で相応の機能が追加されてたような気もするが
本来volatileにスレッド間での排他やメモリバリアの機能はないからな
349片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-UlYp)
2017/09/23(土) 15:34:39.04ID:oO/4QkxId >>347
デバッガ側で例外をキャッチして、呼び出し履歴を調べると何かわかるかもしれない。おそらくゼロ除算かアクセス違反かスタックオーバーフロー。
デバッガ側で例外をキャッチして、呼び出し履歴を調べると何かわかるかもしれない。おそらくゼロ除算かアクセス違反かスタックオーバーフロー。
350デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 16:05:08.45ID:IblrvTVf0 >>348-349
thread2の中身を以下みたいにtry〜catchで囲むと何故か直りました…
でもcatchの中は実行されてないです… 少しcatchの中身を書き足すとまたダメ…
どういうことだろう…
void thread2(void*)
{
try{
…
} catch (...) {
…
}
}
thread2の中身を以下みたいにtry〜catchで囲むと何故か直りました…
でもcatchの中は実行されてないです… 少しcatchの中身を書き足すとまたダメ…
どういうことだろう…
void thread2(void*)
{
try{
…
} catch (...) {
…
}
}
351片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-UlYp)
2017/09/23(土) 16:06:48.32ID:oO/4QkxId スタックを破壊してる可能性
352片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-UlYp)
2017/09/23(土) 16:07:30.45ID:oO/4QkxId 呼び出し規約が間違い
353デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 16:14:51.44ID:IblrvTVf0354片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-UlYp)
2017/09/23(土) 16:23:43.62ID:oO/4QkxId https://msdn.microsoft.com/ja-jp/library/kdzttdcb.aspx
_beginthreadexの場合は、__stdcallを関数名の前につける。_beginthreadの場合は、__cdeclを。
__cdeclはデフォルトでは省略可能だから、間違ってはいない。
ということは、ポインターかなんかでスタック破壊している可能性が高い。
_beginthreadexの場合は、__stdcallを関数名の前につける。_beginthreadの場合は、__cdeclを。
__cdeclはデフォルトでは省略可能だから、間違ってはいない。
ということは、ポインターかなんかでスタック破壊している可能性が高い。
355片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-UlYp)
2017/09/23(土) 16:28:26.72ID:oO/4QkxId 配列の添字がオーバーしてないか?
356片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-UlYp)
2017/09/23(土) 16:50:48.86ID:oO/4QkxId ideone.com に貼れ
357デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 19:47:03.99ID:IblrvTVf0 >>356
もう少し深く調べてみます!ありがとうございます!
もう少し深く調べてみます!ありがとうございます!
358デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 21:54:35.77ID:IblrvTVf0 >>356
たぶん原因が分かりました。
現在は標準関数をやめてWINAPIのCreateThreadを使ってますが標準関数と原因は同じです。
CreateThreadでThread1,Thread2を作成して監視してるとあるタイミングでThread2が消失してたのですが
どうやらThread1で変更があった他のグローバル変数の値がThread2で上手く読めずに終了判定されて消えてたようです。
ようするに他のグローバル変数の書き換えが原因でした。
ロック処理をしたりしたのですが上手く行かずグローバル変数すべてにvolatileをつけると上手く動いてるようです。
でもこの回避作で良いんでしょうか?CriticalSectionを使ったりして処理してもうまく他スレッドでグローバル変数が
参照出来なかったのでvolatileをつけてみたら完璧に動作するようにはなったんですが……
たぶん原因が分かりました。
現在は標準関数をやめてWINAPIのCreateThreadを使ってますが標準関数と原因は同じです。
CreateThreadでThread1,Thread2を作成して監視してるとあるタイミングでThread2が消失してたのですが
どうやらThread1で変更があった他のグローバル変数の値がThread2で上手く読めずに終了判定されて消えてたようです。
ようするに他のグローバル変数の書き換えが原因でした。
ロック処理をしたりしたのですが上手く行かずグローバル変数すべてにvolatileをつけると上手く動いてるようです。
でもこの回避作で良いんでしょうか?CriticalSectionを使ったりして処理してもうまく他スレッドでグローバル変数が
参照出来なかったのでvolatileをつけてみたら完璧に動作するようにはなったんですが……
359デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
2017/09/23(土) 22:09:28.20ID:9QRg4G5c0 排他制御の問題ではなく
最適化の作業で、変数を不変値と判断し、変数参照を追い出した翻訳をしたパターン
int a; // グローバル変数
void foo() { a = 1; while (a) { /* */ } }
a は文意から不変の定数として扱えるので
while (1) { /* */ }
に翻訳しちゃえるわけさ
最適化の作業で、変数を不変値と判断し、変数参照を追い出した翻訳をしたパターン
int a; // グローバル変数
void foo() { a = 1; while (a) { /* */ } }
a は文意から不変の定数として扱えるので
while (1) { /* */ }
に翻訳しちゃえるわけさ
360デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 22:20:31.54ID:IblrvTVf0361デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
2017/09/23(土) 22:28:00.05ID:9QRg4G5c0 volatile つけるのは1つの手ではあるが 100% 回避してくれるかは、コンパイラ次第
スレッドで共有するフラグ関係はOS側が用意してる機構を使うほうが良いんだけどねー
スレッドで共有するフラグ関係はOS側が用意してる機構を使うほうが良いんだけどねー
362デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 22:50:44.07ID:IblrvTVf0363デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/23(土) 22:58:35.90ID:PasvkTo90 何の変数を使ってるか知らんが、排他取ってねーんだから書き換え途中の変数を読み取ってバグることもあるだろ
最近のVCはvolatileだけでマルチプロセッサ対応のメモリバリアになるらしいから、古いVCでビルドしてもアウトだな
まあ滅多に起らないからローカルでそれっぽく動けばいいのなら、十分じゃねーの
最近のVCはvolatileだけでマルチプロセッサ対応のメモリバリアになるらしいから、古いVCでビルドしてもアウトだな
まあ滅多に起らないからローカルでそれっぽく動けばいいのなら、十分じゃねーの
364デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
2017/09/23(土) 23:10:54.21ID:Z1NsXN0c0 >>358
いや、359ではなくて、363の言うとおり、
> ロック処理をしたりしたのですが上手く行かずグローバル変数すべてにvolatileをつけると上手く動いてるようです。
これが問題だと思うぞ。つか、ロックしろよ。
volatileの意味分かってるか?
それ多分他スレッドから書き換えられたときに自スレッドのその値が更新されておらず、バグるのだと思うぞ。
ただしこの場合は、
> 最近のVCはvolatileだけでマルチプロセッサ対応のメモリバリアになるらしい (>>363) ←コマ?
が正しいのならvolatileでも確かに治りそうな気はするが。で、これってマジなん?
つかね、マルチスレッドでグローバル変数を使いまくること自体がだね、、、
いや、359ではなくて、363の言うとおり、
> ロック処理をしたりしたのですが上手く行かずグローバル変数すべてにvolatileをつけると上手く動いてるようです。
これが問題だと思うぞ。つか、ロックしろよ。
volatileの意味分かってるか?
それ多分他スレッドから書き換えられたときに自スレッドのその値が更新されておらず、バグるのだと思うぞ。
ただしこの場合は、
> 最近のVCはvolatileだけでマルチプロセッサ対応のメモリバリアになるらしい (>>363) ←コマ?
が正しいのならvolatileでも確かに治りそうな気はするが。で、これってマジなん?
つかね、マルチスレッドでグローバル変数を使いまくること自体がだね、、、
365デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
2017/09/23(土) 23:20:05.48ID:Z1NsXN0c0 >>363
調べてみたんだが、これか?
> Microsoft 固有の仕様 → /volatile:ms の項目
> ・volatile オブジェクトへの書き込み (volatile 書き込み) は、解放セマンティクスを持っています。
> つまり、命令シーケンスで volatile オブジェクトへの書き込み前に発生するグローバル オブジェクトまたは静的オブジェクトへの参照は、
> コンパイルされたバイナリでの volatile 書き込みの前に発生します。
> ・volatile オブジェクトの読み取り (volatile 読み取り) は、取得セマンティクスを持っています。
> つまり、命令シーケンスで volatile メモリの読み取り後に発生するグローバル オブジェクトまたは静的オブジェクトへの参照は、
> コンパイルされたバイナリでの volatile 読み取りの後に発生します。
https://msdn.microsoft.com/ja-jp/library/12a04hfd.aspx
これならロックではなくフェンスだね。volatileでは直らないはず。
調べてみたんだが、これか?
> Microsoft 固有の仕様 → /volatile:ms の項目
> ・volatile オブジェクトへの書き込み (volatile 書き込み) は、解放セマンティクスを持っています。
> つまり、命令シーケンスで volatile オブジェクトへの書き込み前に発生するグローバル オブジェクトまたは静的オブジェクトへの参照は、
> コンパイルされたバイナリでの volatile 書き込みの前に発生します。
> ・volatile オブジェクトの読み取り (volatile 読み取り) は、取得セマンティクスを持っています。
> つまり、命令シーケンスで volatile メモリの読み取り後に発生するグローバル オブジェクトまたは静的オブジェクトへの参照は、
> コンパイルされたバイナリでの volatile 読み取りの後に発生します。
https://msdn.microsoft.com/ja-jp/library/12a04hfd.aspx
これならロックではなくフェンスだね。volatileでは直らないはず。
366デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/23(土) 23:22:23.90ID:PasvkTo90367デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 23:26:59.26ID:IblrvTVf0 >>361-365
CriticalSectionつかってグローバル変数の書き込み時にはロックをするのも試してみたんですが
やっぱりthread2が途中で死んで(内部のループで終了判定になってしまって)、ダメだったんですよね。
それがグローバルにvolatileをつけると普通に動作するようになってるんです……
CriticalSectionつかってグローバル変数の書き込み時にはロックをするのも試してみたんですが
やっぱりthread2が途中で死んで(内部のループで終了判定になってしまって)、ダメだったんですよね。
それがグローバルにvolatileをつけると普通に動作するようになってるんです……
368デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 23:29:48.18ID:IblrvTVf0 こういう事ですか?
CriticalSectionによるロックもやる必要がある。理由はロックしてない時固有の問題もあるから。
今回の不具合はコンパイラの最適化が原因だったのでvolatileで回避できただけ。
ロック処理もvolatileも両方やる必要がある。ということですか?
CriticalSectionによるロックもやる必要がある。理由はロックしてない時固有の問題もあるから。
今回の不具合はコンパイラの最適化が原因だったのでvolatileで回避できただけ。
ロック処理もvolatileも両方やる必要がある。ということですか?
369デフォルトの名無しさん (ワッチョイ 8b11-hoCt)
2017/09/23(土) 23:33:50.34ID:9QRg4G5c0 書き込み時だけロックして 読み込み側のほうはロックせずに読み込んでる
片手落ちのように受けとれる文章だけど・・・ 排他制御をちゃんとやってたうえでの話?
片手落ちのように受けとれる文章だけど・・・ 排他制御をちゃんとやってたうえでの話?
370デフォルトの名無しさん (ワッチョイ 3b23-Iax1)
2017/09/23(土) 23:49:15.83ID:8bsZ0VcP0 volatileにしてロックして読み書きするのが普通では?
371デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/23(土) 23:55:28.48ID:IblrvTVf0 >>369-370
volatileにして読み書きロックして厳密にやります!
volatileにして読み書きロックして厳密にやります!
372デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
2017/09/23(土) 23:57:26.40ID:Z1NsXN0c0 >>368
× > 今回の不具合はコンパイラの最適化が原因だったのでvolatileで回避できただけ。
○ コンパイラの不具合ではなく、君のコードの問題で、
volatileで動いているように見えるのはバグに当たる確率が低くなっただけで、直ってはいない。
ただ、366の通り、全部ロック+フェンスすれば直りそうな気はする。
つか、そもそもフェンスが大量に要るような使い方でマルチスレッドするのが問題なんだが。
× > 今回の不具合はコンパイラの最適化が原因だったのでvolatileで回避できただけ。
○ コンパイラの不具合ではなく、君のコードの問題で、
volatileで動いているように見えるのはバグに当たる確率が低くなっただけで、直ってはいない。
ただ、366の通り、全部ロック+フェンスすれば直りそうな気はする。
つか、そもそもフェンスが大量に要るような使い方でマルチスレッドするのが問題なんだが。
373デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/24(日) 00:00:33.14ID:jg2xx4vD0 posixだとロックAPIにメモリ同期の効果があるから、普通はvolatileいらんけどな
CriticalSectionも共有リソースへのアクセス制御用の関数なんだから、同じはずだと思うけども
CriticalSectionも共有リソースへのアクセス制御用の関数なんだから、同じはずだと思うけども
374デフォルトの名無しさん (スププ Sdaa-iJNy)
2017/09/24(日) 00:22:34.33ID:AOwUcJWDd375デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
2017/09/24(日) 01:04:50.76ID:R8lp94JX0 >>374
> どうやらThread1で変更があった他のグローバル変数の値がThread2で上手く読めずに終了判定されて消えてたようです。(>>358)
この場合はvolatileをつけないと話にならない。(ただし本来の使い方ではない)
コンパイラのバグではなく、多分デバッグビルド時には毎回読み出しだっただけ。(最適化なし、なおフェンスもなし)
データ同期する気がなければフェンスは本来は要らない。
ロックはしないと書きかけの値を掴んだりしてバグる。
ここら辺分かってなくてグローバルで同期ってのはマルチスレッド初心者なのだろうけど、
バグったらsync入れまくってデバッグはセオリーではあるし、まあがんばれ、と。
ただ、おそらく同期の仕方を根本的に間違ってるから、知ってる人に見てもらったほうがいいとは思うが、
コード内のグローバルは常に「最新」を期待しているのであれば、ロック+volatile+フェンスで動くはずでもある。
> どうやらThread1で変更があった他のグローバル変数の値がThread2で上手く読めずに終了判定されて消えてたようです。(>>358)
この場合はvolatileをつけないと話にならない。(ただし本来の使い方ではない)
コンパイラのバグではなく、多分デバッグビルド時には毎回読み出しだっただけ。(最適化なし、なおフェンスもなし)
データ同期する気がなければフェンスは本来は要らない。
ロックはしないと書きかけの値を掴んだりしてバグる。
ここら辺分かってなくてグローバルで同期ってのはマルチスレッド初心者なのだろうけど、
バグったらsync入れまくってデバッグはセオリーではあるし、まあがんばれ、と。
ただ、おそらく同期の仕方を根本的に間違ってるから、知ってる人に見てもらったほうがいいとは思うが、
コード内のグローバルは常に「最新」を期待しているのであれば、ロック+volatile+フェンスで動くはずでもある。
376デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/24(日) 05:58:29.08ID:jg2xx4vD0 ロック中の読み出しが最適化で消えるなら、それはロックとコンパイラが腐ってる
377デフォルトの名無しさん (ドコグロ MMc2-gXon)
2017/09/24(日) 08:32:31.64ID:LX+6AD0qM378デフォルトの名無しさん (ドコグロ MMc2-gXon)
2017/09/24(日) 08:36:33.73ID:LX+6AD0qM379デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/24(日) 10:21:22.00ID:jg2xx4vD0 はあ、そうですか
共有リソースの排他アクセスのためのAPIなのに、ロック対象がわからないからロック無視して最適化しますと
それが真実ならWinAPIとVCが腐ってるんじゃないですか
共有リソースの排他アクセスのためのAPIなのに、ロック対象がわからないからロック無視して最適化しますと
それが真実ならWinAPIとVCが腐ってるんじゃないですか
380デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 10:22:36.14ID:gFeQddMX0 バカには使えないだけ
381デフォルトの名無しさん (ワッチョイ aaef-hoCt)
2017/09/24(日) 11:32:55.30ID:070pAcfa0 test
382デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
2017/09/24(日) 13:57:54.86ID:c233uqnI0 腐っているのでしょう
383デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/24(日) 14:40:58.49ID:jg2xx4vD0 メモリバリアを跨いでオブジェクトへのアクセス命令を最適化するとか
そんな頓珍漢なことを言う腐った奴がいるとは思わなかったわ
volatileを何だと思ってんだか
そんな頓珍漢なことを言う腐った奴がいるとは思わなかったわ
volatileを何だと思ってんだか
384デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 15:53:44.93ID:gFeQddMX0 CreateSection の使い方ぐらい調べてから書けばいいのに...
まあ他人事だしどうでもいいけど w
まあ他人事だしどうでもいいけど w
385デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/24(日) 16:31:41.65ID:jg2xx4vD0 CriticalSectionの話のつもりだったんだけど、CreateSectionに変わったの?
それならごめんだわ、>>378で唐突に出てきて誤字だとばかり
さすがにそんなアホな話題転換があるとは思わなかった
それならごめんだわ、>>378で唐突に出てきて誤字だとばかり
さすがにそんなアホな話題転換があるとは思わなかった
386デフォルトの名無しさん (ワッチョイ 8a11-gXon)
2017/09/24(日) 16:59:33.91ID:gFeQddMX0387デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/24(日) 17:30:54.77ID:jg2xx4vD0 >The following synchronization functions use the appropriate barriers to ensure memory ordering:
>Functions that enter or leave critical sections
>Functions that signal synchronization objects
>Wait functions
>Interlocked functions
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686355(v=vs.85).aspx
調べたけどCriticalSectionだけで十分そうだよ
Internallockedとかのほうが手軽そうだけどね
>Functions that enter or leave critical sections
>Functions that signal synchronization objects
>Wait functions
>Interlocked functions
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686355(v=vs.85).aspx
調べたけどCriticalSectionだけで十分そうだよ
Internallockedとかのほうが手軽そうだけどね
388デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/25(月) 02:44:46.68ID:glvYaQMb0 https://teratail.com/questions/39986
これの投稿 2016/07/04 10:48の例にあるように
最適化で変数の効果が消えてしまう場合でも
volatileじゃなく変数書き込みや参照の部分に
CriticalSectionでロックしておけば最適化で消える事はないということ?
これの投稿 2016/07/04 10:48の例にあるように
最適化で変数の効果が消えてしまう場合でも
volatileじゃなく変数書き込みや参照の部分に
CriticalSectionでロックしておけば最適化で消える事はないということ?
389デフォルトの名無しさん (オッペケ Sra3-Brv+)
2017/09/25(月) 03:09:32.37ID:eX6e3GbIr Cのコンパイラはクリティカルセクションなんて知らない。単なる構造体かなんかのtypedefとして実直にコンパイルするだけ。
スレッド関連の関数についても単に関数の一種として扱うだけ。
従ってスレッドやクリティカルセクションを扱っているかどうかが最適化の結果に影響することはない。
一方volatile指定はコンパイラが認識するキーワードで最適化に影響する。
スレッド関連の関数についても単に関数の一種として扱うだけ。
従ってスレッドやクリティカルセクションを扱っているかどうかが最適化の結果に影響することはない。
一方volatile指定はコンパイラが認識するキーワードで最適化に影響する。
390デフォルトの名無しさん (ワッチョイ 0f23-7Jrl)
2017/09/25(月) 04:54:33.75ID:glvYaQMb0 ということは今回の事例だと排他制御しても不具合は解消できなかったという事かな?
volatile付けて最適化を無効にすることが正しい解決策だったということになる?
volatile付けて最適化を無効にすることが正しい解決策だったということになる?
391デフォルトの名無しさん (ドコグロ MMb3-gXon)
2017/09/25(月) 06:45:40.93ID:/OvZrhVRM >>387
だからそれはメモリーバリアの話で最適化の話とは別だよ
繰り返しになるけど CriticalSection は排他制御するリソースを知ることはできないしコンパイラも CriticalSection のことを知らない
だからそれはメモリーバリアの話で最適化の話とは別だよ
繰り返しになるけど CriticalSection は排他制御するリソースを知ることはできないしコンパイラも CriticalSection のことを知らない
392デフォルトの名無しさん (ドコグロ MMb3-gXon)
2017/09/25(月) 06:49:50.09ID:/OvZrhVRM >>390
どう言うことをやりたいのかよく見てないけど排他制御と最適化の話は別だから必要なら両方やらないとダメ
どう言うことをやりたいのかよく見てないけど排他制御と最適化の話は別だから必要なら両方やらないとダメ
393デフォルトの名無しさん (ワッチョイ 07db-MkHK)
2017/09/25(月) 08:38:06.32ID:5M6SeBxY0 eieio()
394デフォルトの名無しさん (ワッチョイ 8a4c-hoCt)
2017/09/25(月) 09:41:28.46ID:Eov43usf0 >>389
それ、スレッドまわりが規格化されてなかった C99 までの話だよね?
それ、スレッドまわりが規格化されてなかった C99 までの話だよね?
395デフォルトの名無しさん (ラクッペ MMb3-IkPz)
2017/09/25(月) 09:53:00.17ID:eS71dZMPM 最近のは規格化されてんの?
396デフォルトの名無しさん (ワッチョイ ded7-E1uO)
2017/09/25(月) 09:58:09.00ID:Tp6H3jwU0 規格化されてるのはPOSIXでじゃね?
397394 (ワッチョイ 8a4c-hoCt)
2017/09/25(月) 09:59:34.82ID:Eov43usf0 こんな感じ。
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
5.1.2.4/5
"The library defines a number of atomic operations (7.17) and operations on
mutexes (7.26.4) that are specially identified as synchronization operations.
These operations play a special role in making assignments in one thread visible
to another. ..."
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
5.1.2.4/5
"The library defines a number of atomic operations (7.17) and operations on
mutexes (7.26.4) that are specially identified as synchronization operations.
These operations play a special role in making assignments in one thread visible
to another. ..."
398デフォルトの名無しさん (オッペケ Sra3-Brv+)
2017/09/25(月) 12:40:04.95ID:uoxmxxDAr >>394
おおごめん、規格自体には詳しくない
しかし…
pthread関連の標準関数や定義を仮にコンパイラが特別扱いしたとすると、標準関数をラップしたり自作ライブラリで代替した場合に最適化の結果が変わるのかな?
そんな風にコンパイラ作るものなんだろうか。
おおごめん、規格自体には詳しくない
しかし…
pthread関連の標準関数や定義を仮にコンパイラが特別扱いしたとすると、標準関数をラップしたり自作ライブラリで代替した場合に最適化の結果が変わるのかな?
そんな風にコンパイラ作るものなんだろうか。
399デフォルトの名無しさん (ワッチョイ aaef-PvnN)
2017/09/25(月) 20:34:55.44ID:6/+o0Gkh0 posix-thread 関係については C++11 で追加されたが,
あくまでも言語処理系の中で定義された識別子(関数とかクラスとか)を使わないと,コンパイラには分かりえないよ.
CreateThread() とか CriticalSection とかの W32API の用語を,無指定でコンパイラが理解できるわけがない.
あくまでも言語処理系の中で定義された識別子(関数とかクラスとか)を使わないと,コンパイラには分かりえないよ.
CreateThread() とか CriticalSection とかの W32API の用語を,無指定でコンパイラが理解できるわけがない.
400デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/25(月) 20:47:31.93ID:LPAVGpvK0 >>390
コンパイラは基本的に問答無用で最適化するけど、それだとマルチスレッドではプログラマの意図しない最適化が起こってしまう
だから、メモリバリアを挟んだアクセス命令を入れ替えないことにしている
言い換えると、メモリバリア前に読み込んだ値をメモリバリア後も使うような最適化はしない
よって、バリア+ロックで十分
共有リソースは全部volatile付けるなんてしてたら、kernelのソースとかvolatileまみれになるでしょ
コンパイラは基本的に問答無用で最適化するけど、それだとマルチスレッドではプログラマの意図しない最適化が起こってしまう
だから、メモリバリアを挟んだアクセス命令を入れ替えないことにしている
言い換えると、メモリバリア前に読み込んだ値をメモリバリア後も使うような最適化はしない
よって、バリア+ロックで十分
共有リソースは全部volatile付けるなんてしてたら、kernelのソースとかvolatileまみれになるでしょ
401デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/25(月) 21:45:53.20ID:LPAVGpvK0 当然、ローカル変数とか他から変更されないことが明らかなオブジェクトであれば最適化が起こる可能性は否定しない
グローバル変数の場合は、最適化されない
やってみればわかるけど、CriticalSecltionの有無でアセンブル結果が違う
グローバル変数の場合は、最適化されない
やってみればわかるけど、CriticalSecltionの有無でアセンブル結果が違う
402デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/25(月) 21:46:58.74ID:LPAVGpvK0 アホなこと書いた、コンパイル結果だな。。。
403デフォルトの名無しさん (ワッチョイ 4f32-Dc1X)
2017/09/25(月) 23:03:28.51ID:LPAVGpvK0 CriticalSectionに限らず未知の関数が呼ばれたのであれば、その中でグローバル変数やらが変更される可能性を考慮しなければならない
他にも、ある関数の引数にローカル変数のアドレスを渡すと、以降の別関数内でそのアドレス経由でローカル変数を変更される可能性がある
よって、場合によってはローカル変数であっても関数呼び出しを跨いで最適化できなくなることがある
わからないからこそ、最適化してはならないんだよ
他にも、ある関数の引数にローカル変数のアドレスを渡すと、以降の別関数内でそのアドレス経由でローカル変数を変更される可能性がある
よって、場合によってはローカル変数であっても関数呼び出しを跨いで最適化できなくなることがある
わからないからこそ、最適化してはならないんだよ
404デフォルトの名無しさん (ワッチョイ 2b23-PvnN)
2017/09/25(月) 23:26:04.50ID:3XblncDf0 >>390
ならない。君のソースコードだけの問題だ。同期機構の使い方が悪いだけ。
スレッドなんてここ20年間バリバリに使われてる。
VC等の小慣れているコンパイラなら、最適化ありで全く問題なく動く。
(マルチスレッド向けのデバッグは完了している)
Debugでは動くがReleaseでは動かないケースに遭遇した初心者は、君のように
「最適化の問題であり今回はDebugを使うこと」を正当化したがるが、これは間違いだ。
ただしDebugビルドでもバイナリは出来るから、問題ないのならそれを使う手もある。
ならない。君のソースコードだけの問題だ。同期機構の使い方が悪いだけ。
スレッドなんてここ20年間バリバリに使われてる。
VC等の小慣れているコンパイラなら、最適化ありで全く問題なく動く。
(マルチスレッド向けのデバッグは完了している)
Debugでは動くがReleaseでは動かないケースに遭遇した初心者は、君のように
「最適化の問題であり今回はDebugを使うこと」を正当化したがるが、これは間違いだ。
ただしDebugビルドでもバイナリは出来るから、問題ないのならそれを使う手もある。
405デフォルトの名無しさん (ワッチョイ 3b23-Dc1X)
2017/09/26(火) 00:33:15.50ID:8E9hjYW60 ちゃんと排他処理が出来ていないことに気付かず、デバッグオプション付きとか
遅いマシンとかで正常動作してしまい、何年後かに速いマシンにリプレイスしたら
丁度良くバグが顕在化するようなタイミングになってしまった、
なんてことが以前本当に起きた。
サーバ用とかでソフトが長期間使われる場合は要注意だ。
遅いマシンとかで正常動作してしまい、何年後かに速いマシンにリプレイスしたら
丁度良くバグが顕在化するようなタイミングになってしまった、
なんてことが以前本当に起きた。
サーバ用とかでソフトが長期間使われる場合は要注意だ。
406デフォルトの名無しさん (ワッチョイ 8300-pgy8)
2017/09/26(火) 00:35:55.65ID:piJXswiP0 歯痛制御のバグ
珍しくない
発見しづらく、再現性も乏しく、解析に手間がかかりがち
レベルの低い開発者が混ざると大変
珍しくない
発見しづらく、再現性も乏しく、解析に手間がかかりがち
レベルの低い開発者が混ざると大変
407デフォルトの名無しさん (ワッチョイ 1eaa-ZPBl)
2017/09/26(火) 01:21:21.88ID:mvSUAuA/0 マルチスレッドは、たまたま動いているだけで、
ちょっとしたタイミングで、バグる
初心者は、たいてい、コンパイラのバグのせいにする。
それか、リリースビルドの最適化がおかしいと言う
プロは、Elixir などの関数型を使う
ちょっとしたタイミングで、バグる
初心者は、たいてい、コンパイラのバグのせいにする。
それか、リリースビルドの最適化がおかしいと言う
プロは、Elixir などの関数型を使う
408デフォルトの名無しさん (ワッチョイ 3b23-Iax1)
2017/09/26(火) 02:12:13.37ID:8E9hjYW60 いや、ちゃんとロックすりゃなんとかなるってw
もちろん最初から考慮されてる言語は何も考える必要ないからうまく行って当然。
もちろん最初から考慮されてる言語は何も考える必要ないからうまく行って当然。
409デフォルトの名無しさん (ワッチョイ 8a1e-Yxyu)
2017/09/26(火) 07:38:51.81ID:hxYjIs4i0 >>406
痛そうだな。
痛そうだな。
410デフォルトの名無しさん (ワッチョイ 8e6c-Dc1X)
2017/09/26(火) 10:15:02.85ID:IHENDkWx0 >>406
つらそうなバグだ
つらそうなバグだ
411デフォルトの名無しさん (ガラプー KK47-1mMI)
2017/09/26(火) 12:32:55.96ID:Ue/ou9XsK >>406
ウンコだなw
ウンコだなw
412デフォルトの名無しさん (ワッチョイ 1396-Otw/)
2017/09/27(水) 16:40:21.40ID:zCHNwx740 初心者です。エラーでまくりでコンパイルすら出来ません。アドバイスお願いします。
■やりたいこと。
マウス入力にrawinputを用いるアプリのWndProcをフックし、rawinput(WM_INPUT)を強制オフにし、DirectInputを使用するように指定。
↓ソース
// FuckRawInput.c
#include <windows.h>
LRESULT CALLBACK WinProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_CREATE:
{
RAWINPUTDEVICE Rid[1];
Rid[0].usUsagePage = 0x01;
Rid[0].usUsage = 0x02;
Rid[0].dwFlags = RIDEV_NOLEGACY;
Rid[0].hwndTarget = hWnd;
RegisterRawInputDevices(Rid, 1, sizeof(Rid[0])) == FALSE) ;
break;
}
-----
また、この方法が最適なのかも不明です。ほかの方法等もあったら教えてください
■やりたいこと。
マウス入力にrawinputを用いるアプリのWndProcをフックし、rawinput(WM_INPUT)を強制オフにし、DirectInputを使用するように指定。
↓ソース
// FuckRawInput.c
#include <windows.h>
LRESULT CALLBACK WinProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_CREATE:
{
RAWINPUTDEVICE Rid[1];
Rid[0].usUsagePage = 0x01;
Rid[0].usUsage = 0x02;
Rid[0].dwFlags = RIDEV_NOLEGACY;
Rid[0].hwndTarget = hWnd;
RegisterRawInputDevices(Rid, 1, sizeof(Rid[0])) == FALSE) ;
break;
}
-----
また、この方法が最適なのかも不明です。ほかの方法等もあったら教えてください
413デフォルトの名無しさん (ワッチョイ 8300-pgy8)
2017/09/27(水) 18:30:09.48ID:Ep3hxvTm0 C言語の問題?
414デフォルトの名無しさん (ワッチョイ 0af0-PvnN)
2017/09/27(水) 21:09:13.07ID:kxaL/Pai0 初心者とは
415412 (ワッチョイ 1396-Otw/)
2017/09/27(水) 21:51:08.08ID:zCHNwx740416デフォルトの名無しさん (ワッチョイ 1edb-PvnN)
2017/09/27(水) 22:01:39.03ID:htvdQyi40 日頃の行い
417デフォルトの名無しさん (ワッチョイ 0f23-Vg32)
2017/09/27(水) 22:08:30.48ID:6Zcxzpoi0 エラーのせろハゲ!
418デフォルトの名無しさん (ワッチョイ 2bb6-lfob)
2017/09/27(水) 22:35:55.70ID:MZoqRzWL0 どうやってWndProcをフックするつもりなのか知らんが、初心者のやることじゃない
419デフォルトの名無しさん (ワッチョイ 8300-pgy8)
2017/09/27(水) 22:46:41.34ID:Ep3hxvTm0 スレチ
420デフォルトの名無しさん (ワッチョイ e523-d/1N)
2017/09/28(木) 00:13:55.27ID:LEgoP/Tm0 >>412
本当にそれがソースの全てか?
本当にそれがソースの全てか?
421デフォルトの名無しさん (ドコグロ MM93-KCdQ)
2017/09/28(木) 06:54:14.40ID:0QfR7+YkM >>412
とりあえず文法エラーのないソースを出せよ
とりあえず文法エラーのないソースを出せよ
422デフォルトの名無しさん (ワッチョイ 23f0-IQJU)
2017/09/28(木) 08:22:53.76ID:veeq8lRB0 >>415
windowsプログラムでFuckファックは初心者がやるものではない
何故かと言うとFuckファックは非常に拙いからで、これはご存じの通りにFuckファックつまりはセクロスとかセックスを意味する
FuckRawInputなどと書かれると非常に面食らうので、動作には全く関係ないがFuckファックの箇所をHookフックとする
Fookという間違いならまだしもFuckが出てくるのは途轍もなく拙い
windowsプログラムは入門書を一通り終えた後にようやく手を出せる程度に面倒くさい
windowsプログラムでFuckファックは初心者がやるものではない
何故かと言うとFuckファックは非常に拙いからで、これはご存じの通りにFuckファックつまりはセクロスとかセックスを意味する
FuckRawInputなどと書かれると非常に面食らうので、動作には全く関係ないがFuckファックの箇所をHookフックとする
Fookという間違いならまだしもFuckが出てくるのは途轍もなく拙い
windowsプログラムは入門書を一通り終えた後にようやく手を出せる程度に面倒くさい
423デフォルトの名無しさん (アウアウカー Sad1-6oKo)
2017/09/28(木) 12:17:20.62ID:wLxR5weia 最近勉強始めたんだがループ動作めんどくさ
424デフォルトの名無しさん (ワッチョイ eb32-Txnz)
2017/09/28(木) 16:28:25.85ID:p7vLxmpX0 C++の標準でWindowsのCOMみたいなのはできるの?
モジュールがあれば動的リンクできて、向こう側の関数の形式とエントリポイントがわかるような。
モジュールがあれば動的リンクできて、向こう側の関数の形式とエントリポイントがわかるような。
425デフォルトの名無しさん (ドコグロ MM51-KCdQ)
2017/09/28(木) 18:20:04.96ID:klqlvKrNM426412 (ワッチョイ 9596-5hSF)
2017/09/28(木) 19:27:04.11ID:te0QQW2V0 >>418-422
WndProcフックでは目的の動作できなくて、APIフックしか手がないと分かりましたので、
MSのdetourとかいうの使ったAPIフックに変更されました。改めて、見てください。
@やりたいこと
Rawinputマウス関数が呼び出させられる代わりDirectInputマウス関数を呼び出し、強制的にマウス操作をDirectInputにする
ソース↓
// APIhook_RawInput.c
#include <windows.h>
#include "detours.h"
hoge target = NULL; // ターゲットポインタ
hoge tp = NULL; //トランポリンポインタ
// 関数生成
BOOL WINAPI Direct_Input(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) {
return tp(hWnd, Msg, wParam, lParam);
}
// user32インスタンス
HINSTANCE xxxxx;
case WM_CREATE:
//user32.DLLをロード
xxxxx = LoadLibrary("user32.dll");
//Raw Inputポインタ取得
target = (hoge) GetProcAddress(xxxxx, "WM_INPUT");
// WM_INPUTフック、"WM_INPUT"→"Direct_Input"置き換え
tp = (hoge) DetourFunction((PBYTE) target, (PBYTE) Direct_Input);
break;
// 終了時の処理
case WM_DESTROY:
// フック削除
DetourRemove((PBYTE) tp, (PBYTE) Direct_Input);
WndProcフックでは目的の動作できなくて、APIフックしか手がないと分かりましたので、
MSのdetourとかいうの使ったAPIフックに変更されました。改めて、見てください。
@やりたいこと
Rawinputマウス関数が呼び出させられる代わりDirectInputマウス関数を呼び出し、強制的にマウス操作をDirectInputにする
ソース↓
// APIhook_RawInput.c
#include <windows.h>
#include "detours.h"
hoge target = NULL; // ターゲットポインタ
hoge tp = NULL; //トランポリンポインタ
// 関数生成
BOOL WINAPI Direct_Input(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) {
return tp(hWnd, Msg, wParam, lParam);
}
// user32インスタンス
HINSTANCE xxxxx;
case WM_CREATE:
//user32.DLLをロード
xxxxx = LoadLibrary("user32.dll");
//Raw Inputポインタ取得
target = (hoge) GetProcAddress(xxxxx, "WM_INPUT");
// WM_INPUTフック、"WM_INPUT"→"Direct_Input"置き換え
tp = (hoge) DetourFunction((PBYTE) target, (PBYTE) Direct_Input);
break;
// 終了時の処理
case WM_DESTROY:
// フック削除
DetourRemove((PBYTE) tp, (PBYTE) Direct_Input);
427デフォルトの名無しさん (アウアウカー Sad1-Vnaa)
2017/09/28(木) 21:05:11.91ID:9JTfqDLya >>426
で、お前が聞きたいのは「C言語」に関するどんな質問なんだ?
で、お前が聞きたいのは「C言語」に関するどんな質問なんだ?
428デフォルトの名無しさん (ワッチョイ 7500-vp8x)
2017/09/28(木) 22:00:23.65ID:kmv+HSxh0 >>421が悪い
責任もって相手しろ
責任もって相手しろ
429デフォルトの名無しさん (ワッチョイ 7500-vp8x)
2017/09/28(木) 22:01:12.32ID:kmv+HSxh0 >>419が正しい対応
430デフォルトの名無しさん (アウアウカー Sad1-pOaJ)
2017/09/28(木) 23:13:22.30ID:hENZyM/7a 会話にすらなってないな。
こういうのホントにいるんだよなあ。、。
こういうのホントにいるんだよなあ。、。
431デフォルトの名無しさん (ワッチョイ 4b6f-TKIo)
2017/09/28(木) 23:59:03.21ID:mJZoGNOM0432デフォルトの名無しさん (ワッチョイ c523-IQJU)
2017/09/29(金) 01:12:28.71ID:tjqo0EG60433デフォルトの名無しさん (ワッチョイ e523-d/1N)
2017/09/29(金) 01:17:32.92ID:EHQhOpQV0 >>426
本当にそれがソースの全てなのか?
本当にそれがソースの全てなのか?
434デフォルトの名無しさん (ワッチョイ 9baa-iHa+)
2017/09/30(土) 05:35:50.31ID:/O3sxKWS0 これ無理だろうWindowsプログラムの言語を理解してないと直せないっしょ
435デフォルトの名無しさん (ワッチョイ ab23-Txnz)
2017/10/02(月) 09:21:38.64ID:SGi8KvwU0 勘所がすぐつかめる人ならそうでもない
知らんOS知らん言語知らん環境でもデバッグできちゃうんだぜ
あいつら宇宙人だろ
知らんOS知らん言語知らん環境でもデバッグできちゃうんだぜ
あいつら宇宙人だろ
436デフォルトの名無しさん (ワッチョイ 2312-IQJU)
2017/10/02(月) 13:06:27.14ID:6IbuGwAs0 >16 :デフォルトの名無しさん:2006/03/10(金) 22:15:19
>>>10
>> こんな変数名があちこちに散らばっているのがPerl
>
>大学の研究室のボスは、特殊変数の表をふ〜んと2分ほど眺めて完全に暗記した。
>
>そういうレベルの人たちのための言語なんだなと思って、トイレで血の涙を流した。
>>>10
>> こんな変数名があちこちに散らばっているのがPerl
>
>大学の研究室のボスは、特殊変数の表をふ〜んと2分ほど眺めて完全に暗記した。
>
>そういうレベルの人たちのための言語なんだなと思って、トイレで血の涙を流した。
437デフォルトの名無しさん (ワッチョイ 2345-U38j)
2017/10/03(火) 03:00:19.61ID:TSZxzm0B0 お助けください。
自作コードにおいて、以下の部分でmemsetの際にsegmentation faultになってしまいます。
int n = 2;
char charList[n+1][32]; // 32文字の文字列をn+1確保・・・@
func(charList); // charListに書き込む関数
for (int i = 0; i < n; ++i) memset(charList[i], ' ', 32); // 空白で埋めたい
funcを省いたりmemsetの前に適当にcharListをプリントしたりすると何故か問題なく動きます。
この部分だけ切り出したテストコードでは全く再現しませんでした。
この手のエラーでよくあるのは未初期化領域へのアクセスだと思いますが、
@で領域の確保はできているからこれは原因ではないですよね?
どこがエラーの原因でしょうか・・・?
自作コードにおいて、以下の部分でmemsetの際にsegmentation faultになってしまいます。
int n = 2;
char charList[n+1][32]; // 32文字の文字列をn+1確保・・・@
func(charList); // charListに書き込む関数
for (int i = 0; i < n; ++i) memset(charList[i], ' ', 32); // 空白で埋めたい
funcを省いたりmemsetの前に適当にcharListをプリントしたりすると何故か問題なく動きます。
この部分だけ切り出したテストコードでは全く再現しませんでした。
この手のエラーでよくあるのは未初期化領域へのアクセスだと思いますが、
@で領域の確保はできているからこれは原因ではないですよね?
どこがエラーの原因でしょうか・・・?
438デフォルトの名無しさん (ワッチョイ 7576-vp8x)
2017/10/03(火) 06:29:26.41ID:TvjHrbVD0 funcがnを壊してる
とか
とか
439デフォルトの名無しさん (ワッチョイ 4b32-HyX/)
2017/10/03(火) 06:57:44.74ID:ZkSEHHAS0 うん、funcが怪しい
440デフォルトの名無しさん (ワッチョイ e59f-Txnz)
2017/10/03(火) 08:24:29.85ID:759fwjeu0 うん
441デフォルトの名無しさん (ワッチョイ b5ea-asy+)
2017/10/03(火) 11:40:15.04ID:QFI8P6tG0 配列サイズ 32要素で 32個 空白で生めてるが
文字列 という用語を使ってるあたり func は一般の文字列操作してそうだけど
終端記号 '\0' の分の考慮が落ちてるんでないの?
文字列 という用語を使ってるあたり func は一般の文字列操作してそうだけど
終端記号 '\0' の分の考慮が落ちてるんでないの?
442デフォルトの名無しさん (ワッチョイ b5ea-asy+)
2017/10/03(火) 11:59:57.12ID:QFI8P6tG0 「文字列」で32文字を取り扱いたいのなら 33要素の器が必要ってことで
文字の配列なら問題ないけどねー
文字の配列なら問題ないけどねー
443デフォルトの名無しさん (スップ Sd43-/LS6)
2017/10/03(火) 12:44:46.02ID:mP+8qDfMd そもそも再現しないコードを提示されてもなあ
444デフォルトの名無しさん (ワッチョイ fda5-8YQg)
2017/10/03(火) 14:52:11.00ID:YUFfLdQY0 >>437
処理系は何じゃらほい
処理系は何じゃらほい
445デフォルトの名無しさん (ワッチョイ 659e-cInq)
2017/10/03(火) 15:25:21.73ID:rugh+s9w0446デフォルトの名無しさん (ワッチョイ 458a-gyUt)
2017/10/03(火) 15:27:20.07ID:xmgx6pPY0 int n = 2;
char charList[n+1][32];
C言語的に、これってOKだっけ?
char charList[n+1][32];
C言語的に、これってOKだっけ?
447デフォルトの名無しさん (ガックシ 06cb-huvM)
2017/10/03(火) 15:39:40.20ID:2Eoq+Ro56 >>446
だめ
だめ
448デフォルトの名無しさん (ワッチョイ 9be7-a1BF)
2017/10/03(火) 16:18:15.22ID:9r7sfmBO0 char charList[n+1,32]こうしないとダメだよね?なにかっこ二つ使ってんだよ読み込めねえよって昔2次元配列で怒られたな
449デフォルトの名無しさん (ワッチョイ ab23-Txnz)
2017/10/03(火) 16:39:41.13ID:uTLw0mNj0 >>446
最近は大丈夫になった
最近は大丈夫になった
450デフォルトの名無しさん (ワッチョイ 4b32-HyX/)
2017/10/03(火) 16:45:08.36ID:ZkSEHHAS0 うん、今の1回生が生まれた頃から
451デフォルトの名無しさん (ワッチョイ 9be7-a1BF)
2017/10/03(火) 18:25:07.16ID:9r7sfmBO0 >>449
なったのか少しは便利になったのか
なったのか少しは便利になったのか
452デフォルトの名無しさん (ワッチョイ 8d7f-Txnz)
2017/10/03(火) 18:27:21.85ID:eHwxQvGT0 最近どころか、20年近く前からだし
>>448みたいな文法は存在しないんだけど、どこの世界のC言語なんだろ
>>448みたいな文法は存在しないんだけど、どこの世界のC言語なんだろ
453デフォルトの名無しさん (ガックシ 06cb-B85Q)
2017/10/03(火) 18:32:06.89ID:HgW0fxVo6 >>448みたいな文法欲しかった
454デフォルトの名無しさん (ワッチョイ 4b8a-1j52)
2017/10/03(火) 18:48:25.91ID:9KgPFlPY0 >>449
最近、ダメかもしれなくなったんだが
最近、ダメかもしれなくなったんだが
455デフォルトの名無しさん (ワッチョイ 9be7-a1BF)
2017/10/03(火) 18:53:27.85ID:9r7sfmBO0 >>448
これダメだC#だった、エラーになるわ
これダメだC#だった、エラーになるわ
456デフォルトの名無しさん (ワッチョイ fd81-IQJU)
2017/10/03(火) 19:11:20.28ID:XytTuyvU0 LLVMの作者に物凄い勢いで嫌われたから…
457デフォルトの名無しさん (ササクッテロリ Spe1-3BEe)
2017/10/03(火) 22:39:06.25ID:djTGgeKPp iOS11にしたらまともに入力できない
このクソOS
このクソOS
458デフォルトの名無しさん (ササクッテロリ Spe1-3BEe)
2017/10/03(火) 22:39:07.29ID:djTGgeKPp iOS11にしたらまともに入力できない
このクソOS
このクソOS
459デフォルトの名無しさん (ササクッテロリ Spe1-3BEe)
2017/10/03(火) 22:46:23.61ID:djTGgeKPp このクソOS死ね
460デフォルトの名無しさん (ササクッテロリ Spe1-3BEe)
2017/10/03(火) 22:46:56.99ID:djTGgeKPp まともに入力できないって
461デフォルトの名無しさん (ワッチョイ e59f-d/1N)
2017/10/04(水) 00:38:32.06ID:JPTWWYYO0462437 (ワッチョイ 2345-IQJU)
2017/10/04(水) 01:30:41.39ID:+TP/cS/R0463デフォルトの名無しさん (ワッチョイ 4b32-HyX/)
2017/10/04(水) 06:19:36.24ID:Sd/env2d0464デフォルトの名無しさん (ワッチョイ 8d7f-Txnz)
2017/10/04(水) 06:24:24.64ID:dCjKMF950 二次元配列の宣言についての話で合って
コンパイルが通るかどうかだけの話なんてしてねーぞ
コンパイルが通るかどうかだけの話なんてしてねーぞ
465デフォルトの名無しさん (ブーイモ MMd9-5mw5)
2017/10/04(水) 07:22:39.57ID:zhlDARQmM >>462
func何やってんの?
func何やってんの?
466デフォルトの名無しさん (アウアウカー Sad1-pOaJ)
2017/10/04(水) 08:10:59.64ID:F93q6j3ba *charList=0とかやってんじゃない?
467デフォルトの名無しさん (アウアウカー Sad1-pOaJ)
2017/10/04(水) 08:22:11.58ID:F93q6j3ba ってか二次元配列と二重配列間違ってねーか?
それとfunc呼んでからmemsetしたらfunc呼ぶ意味あるの?
memsetもループさせるんじゃなく一回で全部fillした方がよくない?
とかとか。
それとfunc呼んでからmemsetしたらfunc呼ぶ意味あるの?
memsetもループさせるんじゃなく一回で全部fillした方がよくない?
とかとか。
468デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 11:24:36.83ID:hBVSLcAId469デフォルトの名無しさん (アウアウカー Sad1-pOaJ)
2017/10/04(水) 13:29:31.00ID:ugGBRoRga470デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 13:49:31.85ID:hBVSLcAId >>469
funcの中身を知らないのに「意味無い」とか「意味あるの?」とかっていう書き込み、意味あるの?
それを聞けば問題の解決になるの?
少なくとも空白を埋めてない部分があるし
問題が発生する範囲で簡略化したのかもしれないし
当然意味があるから呼んでるんだろうと思うのが普通
funcの中身を知らないのに「意味無い」とか「意味あるの?」とかっていう書き込み、意味あるの?
それを聞けば問題の解決になるの?
少なくとも空白を埋めてない部分があるし
問題が発生する範囲で簡略化したのかもしれないし
当然意味があるから呼んでるんだろうと思うのが普通
471デフォルトの名無しさん (ワッチョイ fda5-8YQg)
2017/10/04(水) 14:20:16.63ID:Ot6iICCz0 C言語は俺に訊くなスレになってるな
472デフォルトの名無しさん (ワッチョイ 6d23-hiJG)
2017/10/04(水) 14:30:40.85ID:eeE5kOTG0 最近オブジェクト指向が入り口で、C言語がわからんっていう子が多いからなあ
473デフォルトの名無しさん (ワッチョイ 85b3-asy+)
2017/10/04(水) 14:50:53.16ID:38WTG0/g0 再現する最小限のコードに削ってるうちに問題点を自ら発見して終了
474デフォルトの名無しさん (ワッチョイ 458a-xF3V)
2017/10/04(水) 14:54:54.68ID:PNa+p1hk0 つーかfunc()以外の部分で特に問題が見当たらないならfunc()のせいで確定という単純明快な話
自作コードならfunc()もうpできるっしょ
自作コードならfunc()もうpできるっしょ
475デフォルトの名無しさん (アウアウカー Sad1-pOaJ)
2017/10/04(水) 14:56:07.21ID:6Zs0a9ZSa >>470
出されたソースのコメント見ると、配列の考え方が間違ってるように感じるけどね。それを示唆したかっただけだよ。
出されたソースのコメント見ると、配列の考え方が間違ってるように感じるけどね。それを示唆したかっただけだよ。
476デフォルトの名無しさん (ワッチョイ b581-Txnz)
2017/10/04(水) 15:12:09.84ID:f7rOF4qk0477デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 16:34:23.23ID:hBVSLcAId478デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 16:35:46.39ID:hBVSLcAId あとはfuncの中身を見ないとなんとも
組み込みのショボい環境だとスタックオーバーフローって可能性も無いことは無いが
組み込みのショボい環境だとスタックオーバーフローって可能性も無いことは無いが
479デフォルトの名無しさん (ワッチョイ 35d2-asy+)
2017/10/04(水) 16:51:26.35ID:+admsRHQ0 struct I2C_MEM //構造体の型宣言
{
char DEV_ADR ;
char REG_ADR ;
char DATA[0x03] ;
};
struct I2C_MEM I2C_MEM[3] =//構造体の型宣言
{
{ 0x7C , 0x01 , 0x00000000 }
{ 0x7C , 0x01 , 0x00000000 }
{ 0x7C , 0x01 , 0x00000000 }
} ;
{
char DEV_ADR ;
char REG_ADR ;
char DATA[0x03] ;
};
struct I2C_MEM I2C_MEM[3] =//構造体の型宣言
{
{ 0x7C , 0x01 , 0x00000000 }
{ 0x7C , 0x01 , 0x00000000 }
{ 0x7C , 0x01 , 0x00000000 }
} ;
480デフォルトの名無しさん (ワッチョイ 35d2-asy+)
2017/10/04(水) 16:56:16.34ID:+admsRHQ0 ↑構造体の初期化で
charを連続4byte設定するときの書き方
0x00000000はたぶん違いますよね?
どう書けば良いんですか?
初心者過ぎてすいません
charを連続4byte設定するときの書き方
0x00000000はたぶん違いますよね?
どう書けば良いんですか?
初心者過ぎてすいません
481デフォルトの名無しさん (ワッチョイ 35d2-asy+)
2017/10/04(水) 16:59:03.20ID:+admsRHQ0 struct I2C_MEM //構造体の型宣言
{
char DEV_ADR ;
char REG_ADR ;
char DATA[0x03] ;
};
struct I2C_MEM I2C_MEM[3] = //構造体の初期化
{
{ 0x7C , 0x01 , 0x00000000 }
{ 0x7C , 0x02 , 0x00000000 }
{ 0x7C , 0x03 , 0x00000000 }
} ;
{
char DEV_ADR ;
char REG_ADR ;
char DATA[0x03] ;
};
struct I2C_MEM I2C_MEM[3] = //構造体の初期化
{
{ 0x7C , 0x01 , 0x00000000 }
{ 0x7C , 0x02 , 0x00000000 }
{ 0x7C , 0x03 , 0x00000000 }
} ;
482片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-sxBl)
2017/10/04(水) 17:01:20.64ID:HMkkIXOid >>479
> struct I2C_MEM
> {
> char DEV_ADR ;
> char REG_ADR ;
> char DATA[0x03] ;
> };
struct I2C_MEM I2C_MEM[3] =
{
{ 0x7C , 0x01 , {0} }
{ 0x7C , 0x01 , {0} }
{ 0x7C , 0x01 , {0} }
} ;
> struct I2C_MEM
> {
> char DEV_ADR ;
> char REG_ADR ;
> char DATA[0x03] ;
> };
struct I2C_MEM I2C_MEM[3] =
{
{ 0x7C , 0x01 , {0} }
{ 0x7C , 0x01 , {0} }
{ 0x7C , 0x01 , {0} }
} ;
483デフォルトの名無しさん (ワッチョイ 35d2-asy+)
2017/10/04(水) 17:04:07.51ID:+admsRHQ0 >>482
回答ありがとうございます!
ちなみにこれだったらどうかくんでしょうか?
struct I2C_MEM I2C_MEM[3] = //構造体の初期化
{
{ 0x7C , 0x01 , 0x12345678 },
{ 0x7C , 0x02 , 0x12345678 },
{ 0x7C , 0x03 , 0x12345678 },
} ;
回答ありがとうございます!
ちなみにこれだったらどうかくんでしょうか?
struct I2C_MEM I2C_MEM[3] = //構造体の初期化
{
{ 0x7C , 0x01 , 0x12345678 },
{ 0x7C , 0x02 , 0x12345678 },
{ 0x7C , 0x03 , 0x12345678 },
} ;
484片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-sxBl)
2017/10/04(水) 17:19:18.44ID:HMkkIXOid >>483
struct I2C_MEM I2C_MEM[3] =
{
#ifdef BIG_ENDIAN //ビッグエンディアンの場合
{ 0x7C , 0x01 , {0x12, 0x34, 0x56, 0x78} },
{ 0x7C , 0x02 , {0x12, 0x34, 0x56, 0x78} },
{ 0x7C , 0x03 , {0x12, 0x34, 0x56, 0x78} },
#else // リトルエンディアンの場合
{ 0x7C , 0x01 , {0x78, 0x56, 0x34, 0x12} },
{ 0x7C , 0x02 , {0x78, 0x56, 0x34, 0x12} },
{ 0x7C , 0x03 , {0x78, 0x56, 0x34, 0x12} },
#endif
} ;
struct I2C_MEM I2C_MEM[3] =
{
#ifdef BIG_ENDIAN //ビッグエンディアンの場合
{ 0x7C , 0x01 , {0x12, 0x34, 0x56, 0x78} },
{ 0x7C , 0x02 , {0x12, 0x34, 0x56, 0x78} },
{ 0x7C , 0x03 , {0x12, 0x34, 0x56, 0x78} },
#else // リトルエンディアンの場合
{ 0x7C , 0x01 , {0x78, 0x56, 0x34, 0x12} },
{ 0x7C , 0x02 , {0x78, 0x56, 0x34, 0x12} },
{ 0x7C , 0x03 , {0x78, 0x56, 0x34, 0x12} },
#endif
} ;
485片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-sxBl)
2017/10/04(水) 17:21:40.35ID:HMkkIXOid486デフォルトの名無しさん (ワッチョイ 2312-IQJU)
2017/10/04(水) 17:27:10.52ID:PA2rRcfg0 全くどうでもいいことだが最近の若いモンはスマホに合わせて上矢印なのな
一つ勉強になった
一つ勉強になった
487デフォルトの名無しさん (ガックシ 06cb-huvM)
2017/10/04(水) 17:28:20.90ID:VznoOWf36 PCでも上じゃね?
488片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-sxBl)
2017/10/04(水) 17:40:04.96ID:HMkkIXOid >>484
#ifdef BIG_ENDIAN
# define ENDIAN_FIX(a,b,c,d) a,b,c,d
#else
# define ENDIAN_FIX(a,b,c,d) d,c,b,a
#endif
struct I2C_MEM I2C_MEM[3] =
{
{ 0x7C , 0x01 , {ENDIAN_FIX(0x12, 0x34, 0x56, 0x78)} },
{ 0x7C , 0x02 , {ENDIAN_FIX(0x12, 0x34, 0x56, 0x78)} },
{ 0x7C , 0x03 , {ENDIAN_FIX(0x12, 0x34, 0x56, 0x78)} },
} ;
#ifdef BIG_ENDIAN
# define ENDIAN_FIX(a,b,c,d) a,b,c,d
#else
# define ENDIAN_FIX(a,b,c,d) d,c,b,a
#endif
struct I2C_MEM I2C_MEM[3] =
{
{ 0x7C , 0x01 , {ENDIAN_FIX(0x12, 0x34, 0x56, 0x78)} },
{ 0x7C , 0x02 , {ENDIAN_FIX(0x12, 0x34, 0x56, 0x78)} },
{ 0x7C , 0x03 , {ENDIAN_FIX(0x12, 0x34, 0x56, 0x78)} },
} ;
489デフォルトの名無しさん (ワッチョイ 7576-vp8x)
2017/10/04(水) 18:04:30.94ID:9y3nqzOw0 構造体の中身から推測すると、
書く順番はエンディアンに依存しないと思う
単純に配列の頭から1バイトずつ送信するだけ
仮にエンディアンで順番が変わるとしても
どうせガッツリ環境依存なコードなんだから
依存しちゃえばいい
環境依存が無いコードを書くつもりなら、
charが1バイトかどうかにも依存しないようにしないとね
書く順番はエンディアンに依存しないと思う
単純に配列の頭から1バイトずつ送信するだけ
仮にエンディアンで順番が変わるとしても
どうせガッツリ環境依存なコードなんだから
依存しちゃえばいい
環境依存が無いコードを書くつもりなら、
charが1バイトかどうかにも依存しないようにしないとね
490デフォルトの名無しさん (ワッチョイ 7576-vp8x)
2017/10/04(水) 18:10:15.78ID:9y3nqzOw0 >>488みたいなマクロは最悪
エンディアンていう言葉を覚えたばっかりの初心者が作る糞コード
エンディアンていう言葉を覚えたばっかりの初心者が作る糞コード
491デフォルトの名無しさん (ガックシ 06cb-huvM)
2017/10/04(水) 18:48:35.51ID:VznoOWf36 もちつけよw
492片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-sxBl)
2017/10/04(水) 19:22:55.76ID:HMkkIXOid エンディアンについて解説が必要ですか?
はい/いいえ
はい/いいえ
493デフォルトの名無しさん (ワッチョイ 2df2-njQ9)
2017/10/04(水) 20:07:04.96ID:V7FXDajl0 いいえ
494デフォルトの名無しさん (ワッチョイ 2df2-njQ9)
2017/10/04(水) 20:09:03.80ID:V7FXDajl0 Definitely no.
495デフォルトの名無しさん (ワッチョイ 85b3-asy+)
2017/10/04(水) 20:18:42.31ID:38WTG0/g0 struct I2C_MEM //構造体の型宣言
struct I2C_MEM I2C_MEM[3] =//構造体の型宣言
この手の文法で自明なことをコメントにする文化はなくならないのかな
struct I2C_MEM I2C_MEM[3] =//構造体の型宣言
この手の文法で自明なことをコメントにする文化はなくならないのかな
496デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 20:46:10.64ID:hBVSLcAId 俺のコードはその対極
大きな流れしかコメントをかかない
大きな流れしかコメントをかかない
497デフォルトの名無しさん (ワッチョイ 9b9e-Txnz)
2017/10/04(水) 21:20:04.88ID:azmmV5/P0 I2Cか。データは8ビットで受けて、8ビットシフトしてビットORだな。
data = hi<<16 | mid<<8 | lo
data = hi<<16 | mid<<8 | lo
498デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 21:27:53.34ID:hBVSLcAId どう見ても送信
499デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 21:31:39.40ID:hBVSLcAId >>492
お前の糞マクロ、どの辺が糞か解説が必要?
お前の糞マクロ、どの辺が糞か解説が必要?
500デフォルトの名無しさん (スップ Sd03-vp8x)
2017/10/04(水) 21:32:35.25ID:hBVSLcAId ちなみに、ゆで玉子は輪切り派
501デフォルトの名無しさん (ワッチョイ 059f-XSap)
2017/10/05(木) 01:23:13.38ID:ioWgBjMx0 >>483
やってみな。
やってみな。
502デフォルトの名無しさん (ワッチョイ 059f-XSap)
2017/10/05(木) 01:24:28.79ID:ioWgBjMx0 やってみなじゃない。どう動くかじゃなくてどう書くかか。
どうなって欲しいのかが書かれてないから答えられないな。
どうなって欲しいのかが書かれてないから答えられないな。
503437 (ワッチョイ 5a45-wbjw)
2017/10/05(木) 03:25:02.16ID:JVwY/YZa0 >>465
全体のコードは自作というか(自社製)ですが、funcは他社のライブラリなんです。
ソースがあればなんとかなったのかもですが・・・。
>>467
実際はfunc呼んだ後にcharListの値を呼んで色々作業しています。
>>469
普通の2次元char配列のつもりです。2次元配列というのはC言語的にはシンタックスシュガーにすぎず、
char a[m][n]もchar a[m*n]も等価なのですよね。なので、先頭ポインタから(m*n-1)個先までの
アドレスの範囲内なら範囲外アクセスエラーは起こり得ないと理解しています。
>>474の結論に至る前に、何かC言語で致命的な勘違いや思い込みをしているのかと
思って質問した次第です。今思うとエスパー回答を強いてしまって大変申し訳ありませんでした。
ひとまずはfuncを一切呼ばない形に直して事なきを得ました。
>>437で言った、「charListをプリントしたりすると何故か問題なく動く」からそれで一時凌ぎする考えも
頭をよぎりましたが、思いとどまりました。
ひとまずこれで終えます。回答くださった方々、本当にありがとうございました。
全体のコードは自作というか(自社製)ですが、funcは他社のライブラリなんです。
ソースがあればなんとかなったのかもですが・・・。
>>467
実際はfunc呼んだ後にcharListの値を呼んで色々作業しています。
>>469
普通の2次元char配列のつもりです。2次元配列というのはC言語的にはシンタックスシュガーにすぎず、
char a[m][n]もchar a[m*n]も等価なのですよね。なので、先頭ポインタから(m*n-1)個先までの
アドレスの範囲内なら範囲外アクセスエラーは起こり得ないと理解しています。
>>474の結論に至る前に、何かC言語で致命的な勘違いや思い込みをしているのかと
思って質問した次第です。今思うとエスパー回答を強いてしまって大変申し訳ありませんでした。
ひとまずはfuncを一切呼ばない形に直して事なきを得ました。
>>437で言った、「charListをプリントしたりすると何故か問題なく動く」からそれで一時凌ぎする考えも
頭をよぎりましたが、思いとどまりました。
ひとまずこれで終えます。回答くださった方々、本当にありがとうございました。
504デフォルトの名無しさん (ワッチョイ 5a45-wbjw)
2017/10/05(木) 03:26:43.92ID:JVwY/YZa0505デフォルトの名無しさん (ワッチョイ 5a7c-EY9l)
2017/10/05(木) 05:32:30.50ID:PdAAtG4s0506デフォルトの名無しさん (フリッテル MM7e-p8Fh)
2017/10/05(木) 05:39:44.88ID:+DJIpzmcM char[m][n]はchar**、char[m*n]はchar*、データ型は違う
507デフォルトの名無しさん (ブーイモ MMde-Pirc)
2017/10/05(木) 08:10:49.48ID:2SMjslBqM funcに与える引数の条件がちゃんと理解できてないとか
508デフォルトの名無しさん (エムゾネ FFfa-8mMW)
2017/10/05(木) 08:15:39.56ID:Nh1QNpvaF char[m*n]って何?
結局ただの一次元配列でしょ?
結局ただの一次元配列でしょ?
509デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/05(木) 10:10:50.98ID:6niZC7Nf0510デフォルトの名無しさん (ワッチョイ da33-qWqy)
2017/10/05(木) 10:11:07.83ID:TrTYAooo0 >>503
> 2次元配列というのはC言語的にはシンタックスシュガーにすぎず、
> char a[m][n]もchar a[m*n]も等価なのですよね。なので、先頭ポインタから(m*n-1)個先までの
> アドレスの範囲内なら範囲外アクセスエラーは起こり得ないと理解しています。
だいたいの実装では、特に char 類なら、動作上問題が起こることは考えにくいものの、
言語規格上の保証は無いよ。
https://www.jpcert.or.jp/m/sc-rules/c-arr30-c.html
> 2次元配列というのはC言語的にはシンタックスシュガーにすぎず、
> char a[m][n]もchar a[m*n]も等価なのですよね。なので、先頭ポインタから(m*n-1)個先までの
> アドレスの範囲内なら範囲外アクセスエラーは起こり得ないと理解しています。
だいたいの実装では、特に char 類なら、動作上問題が起こることは考えにくいものの、
言語規格上の保証は無いよ。
https://www.jpcert.or.jp/m/sc-rules/c-arr30-c.html
511デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/05(木) 12:14:43.27ID:6niZC7Nf0 そういう保証は紙っきれの条文より自分で確認・検証することが最重要だ
いくら「保証されている」ことでもコンパイラがバグったり中には確信的に違反するケースまである
空想論の域を出ないくだらんことのために
現実的なアイディアを諦めていては生産性が上がらない
いくら「保証されている」ことでもコンパイラがバグったり中には確信的に違反するケースまである
空想論の域を出ないくだらんことのために
現実的なアイディアを諦めていては生産性が上がらない
512デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/05(木) 12:51:26.83ID:TRdRMfhC0 struct I2C_MEM
{
char DEV_ADR ;
char REG_ADR ;
char DATA[4] ;
} static I2C_MEM0 ;
I2C_MEM0.DEV_ADR = 0x7C ;
I2C_MEM0.REG_ADR = 0x01 ;
I2C_MEM0.DATA[4] = { 0x11,0x12,0x13,0x14 } ; ←これはエラーになる
//I2C_MEM0.DATA[0] = 0x11 ; ←こちらのパターンはエラーにならない
//I2C_MEM0.DATA[1] = 0x12 ;
//I2C_MEM0.DATA[2] = 0x13 ;
//I2C_MEM0.DATA[3] = 0x14 ;
4バイト一気に設定の書き方はどうすればいいんでしょうか?
{
char DEV_ADR ;
char REG_ADR ;
char DATA[4] ;
} static I2C_MEM0 ;
I2C_MEM0.DEV_ADR = 0x7C ;
I2C_MEM0.REG_ADR = 0x01 ;
I2C_MEM0.DATA[4] = { 0x11,0x12,0x13,0x14 } ; ←これはエラーになる
//I2C_MEM0.DATA[0] = 0x11 ; ←こちらのパターンはエラーにならない
//I2C_MEM0.DATA[1] = 0x12 ;
//I2C_MEM0.DATA[2] = 0x13 ;
//I2C_MEM0.DATA[3] = 0x14 ;
4バイト一気に設定の書き方はどうすればいいんでしょうか?
513デフォルトの名無しさん (ワッチョイ 89a5-zYvd)
2017/10/05(木) 12:51:30.07ID:/OlbfMDH0 コメント邪魔
514デフォルトの名無しさん (ワッチョイ 89a5-zYvd)
2017/10/05(木) 12:52:03.70ID:/OlbfMDH0 誤爆m(_'_)m
515デフォルトの名無しさん (ワッチョイ 89a5-zYvd)
2017/10/05(木) 12:59:34.91ID:/OlbfMDH0 >>512
一気に初期化する必要性がわからんが
糞コード
assert( 4 == sizeof ( unsigned long ) );
*( unsigned long* )I2C_MEM0.DATA = *( unsigned long* )"\x11\x12\x13\x14";
一気に初期化する必要性がわからんが
糞コード
assert( 4 == sizeof ( unsigned long ) );
*( unsigned long* )I2C_MEM0.DATA = *( unsigned long* )"\x11\x12\x13\x14";
516デフォルトの名無しさん (スップ Sdfa-UWdl)
2017/10/05(木) 13:01:44.78ID:gOaVCYiad517デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/05(木) 13:04:36.67ID:TRdRMfhC0 なるほどー ありがとうございました
518デフォルトの名無しさん (ワッチョイ 89a5-zYvd)
2017/10/05(木) 13:06:18.55ID:/OlbfMDH0 ARMだと1バイトづつ初期化した方が小さくなるような気がする
519デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/05(木) 13:13:39.58ID:/W/G46pt6 無名配列のリテラルは初期化時には使えるけど代入には使えないってこと?
520デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/05(木) 13:16:53.65ID:/W/G46pt6 初期化時というか宣言時
521デフォルトの名無しさん (ワッチョイ 3a60-qWqy)
2017/10/05(木) 19:51:18.71ID:72rIdNeW0 ビッグエンディアンの環境を教えてください
522片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 20:02:42.15ID:Xv32D2hUd HP-UX、MOTOROLA、AIX、Solaris
523片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 20:09:22.11ID:Xv32D2hUd Apple PowerPC Mac、Sun Blade、SGI O2??
524片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 20:14:07.63ID:Xv32D2hUd ビッグエンディアンの仮想環境はQEMU以外にないから、エミュレータを作れば有名になれるよ。
525片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 20:29:07.01ID:Xv32D2hUd >>524
ごめん、PowerPCのエミュレータにPearPCがあった。
ごめん、PowerPCのエミュレータにPearPCがあった。
526デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/05(木) 20:30:19.57ID:3IfCpLlr0 SH
527片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 20:32:46.00ID:Xv32D2hUd SolarisエミュレータにCHARONがある(有料)。ビッグエンディアンの環境はお金がかかるよ。
528デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/05(木) 20:34:21.70ID:3IfCpLlr0 整数の負の数に1の補数を用いる環境
整数の負の数に絶対値と符号ビットを用いる環境
整数にトラップ表現がある環境
charが8の倍数ビットでない環境
を教えてください
整数の負の数に絶対値と符号ビットを用いる環境
整数にトラップ表現がある環境
charが8の倍数ビットでない環境
を教えてください
529デフォルトの名無しさん (ササクッテロレ Sp75-Zdu/)
2017/10/05(木) 20:34:53.22ID:olaqz/S6p ARMは選択出来たっけ?
まあ、みんなリトルで使ってるがな。
地味にMicroBlazeがビッグだな。
まあ、みんなリトルで使ってるがな。
地味にMicroBlazeがビッグだな。
530デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/05(木) 20:39:08.91ID:3IfCpLlr0 MIPSもバイ
ミドルエンディアンの環境を教えて下さい
ミドルエンディアンの環境を教えて下さい
531デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/05(木) 20:41:19.68ID:3IfCpLlr0 おれはリトル
わざわざお尻から食べないよね普通
わざわざお尻から食べないよね普通
532片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 20:42:01.73ID:Xv32D2hUd 博物館に所蔵されてるようなコンピュータ調べて何の意味があるんだろう。。。
533デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/05(木) 20:44:02.75ID:3IfCpLlr0534片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 20:46:00.84ID:Xv32D2hUd >>528
絶滅したコンピュータアーキテクチャの話はしたくない。
絶滅したコンピュータアーキテクチャの話はしたくない。
535デフォルトの名無しさん (ササクッテロレ Sp75-Zdu/)
2017/10/05(木) 20:46:52.00ID:olaqz/S6p 6502とか、地味に生きてるやん?
あ、あれはエミュレータか。
あ、あれはエミュレータか。
536片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 21:04:49.44ID:Xv32D2hUd ほとんどの環境のcharが8ビットなのは、基本ASCIIが7ビットで表現できることと、7ビットより8ビットの方が切りが良くてパリティビットなどに使えて便利だったことによる。
537デフォルトの名無しさん (ワッチョイ 054b-5Ff0)
2017/10/05(木) 21:09:26.31ID:PAHxl06e0 最近C言語ハマってる
言語がシンプルなのと直にコンピュータを操ってる感
言語がシンプルなのと直にコンピュータを操ってる感
538片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 21:16:28.12ID:Xv32D2hUd charが7ビットだったら、パックトBCDもなかった。
539片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 21:25:12.02ID:Xv32D2hUd 7ビットだったら1バイトの16進表示で1ビット無駄になるところだった。
540片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 21:44:27.38ID:Xv32D2hUd GCCかLLVMを使えば、適当なアーキテクチャのC言語コンパイラーを自由に作ることができるらしい。
541片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 21:54:15.38ID:Xv32D2hUd まあ、例えばNintendo SwitchのアーキテクチャをGCCかLLVMで定義すれば、そのアーキテクチャのコンパイラーが作れる訳だ。
542デフォルトの名無しさん (ワッチョイ da8a-Zagc)
2017/10/05(木) 22:04:36.58ID:dkgh60ez0 そういう用途なら「高位合成」でggrと幸せになれるぞ
LLVMは多分出番なしだ
LLVMは多分出番なしだ
543デフォルトの名無しさん (ドコグロ MMc2-WrkX)
2017/10/05(木) 23:19:53.46ID:G8RM0vBkM スイッチはテグラじゃないの?
544片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/05(木) 23:34:31.98ID:Xv32D2hUd うん、NVIDIA Tegra のカスタムだね。例えが悪かったか。
545デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/05(木) 23:36:35.55ID:3IfCpLlr0 >>536
charが16bitなら最近使ったけど
charが16bitなら最近使ったけど
546デフォルトの名無しさん (ワッチョイ 059f-XSap)
2017/10/05(木) 23:58:01.04ID:ioWgBjMx0 >>512
strncpy(I2C_MEM0.DATA, "\x11\x12\x13\x14", 4);
strncpy(I2C_MEM0.DATA, "\x11\x12\x13\x14", 4);
547デフォルトの名無しさん (ワッチョイ 7575-5Ff0)
2017/10/06(金) 00:05:52.06ID:L6h7mNkA0 実行時間の長い再帰関数(ハノイの塔)を実行しながら過程をglutというOpenGLライブラリで開いたウィンドウに描画させたいのですが方法ありませんか?
ステップ毎に再帰関数を最初から実行するしかないですか?
ステップ毎に再帰関数を最初から実行するしかないですか?
548デフォルトの名無しさん (ワッチョイ 7680-HC+h)
2017/10/06(金) 01:40:53.41ID:tqIbkLAn0 再帰して、関数を無限に呼ばない。
答えをメモ化しろ
「メモ化」で検索!
答えをメモ化しろ
「メモ化」で検索!
549デフォルトの名無しさん (ワッチョイ 558d-wbjw)
2017/10/06(金) 01:51:40.09ID:FhOeSxdK0 -1.400000e+01 2.043459e+01 1.738866e-15
-1.398525e+01 2.029842e+01 3.900652e-01
-1.399008e+01 2.029842e+01 -1.300367e-01
3DデータのSTLと言う形式で使われてるこの様な数字の型は
printfで出力する場合どの型フィールドになるのでしょうか
%e %gだけでは何だか違います
-1.398525e+01 2.029842e+01 3.900652e-01
-1.399008e+01 2.029842e+01 -1.300367e-01
3DデータのSTLと言う形式で使われてるこの様な数字の型は
printfで出力する場合どの型フィールドになるのでしょうか
%e %gだけでは何だか違います
550デフォルトの名無しさん (ワッチョイ 059f-XSap)
2017/10/06(金) 02:18:01.36ID:x0C9073k0 >>549
いやずばり %e だと思うが?
いやずばり %e だと思うが?
551デフォルトの名無しさん (ワッチョイ da8a-Zagc)
2017/10/06(金) 03:03:00.77ID:RA0YJgv70 >>546
最近出来た関数かな?
最近出来た関数かな?
552デフォルトの名無しさん (ワッチョイ 059f-TYR1)
2017/10/06(金) 03:37:10.08ID:x0C9073k0 >>551
最近って・・・うーん。
最近って・・・うーん。
553デフォルトの名無しさん (ワッチョイ 7a87-iGo5)
2017/10/06(金) 03:40:43.51ID:aYA4G4wj0554デフォルトの名無しさん (ワッチョイ 7a87-iGo5)
2017/10/06(金) 03:41:39.90ID:aYA4G4wj0 逆だw
Aは計算過程を変数Cに逐次書き込む
Bは画面リフレッシュのタイミングでCを描画
Aは計算過程を変数Cに逐次書き込む
Bは画面リフレッシュのタイミングでCを描画
555デフォルトの名無しさん (ワッチョイ da8a-Zagc)
2017/10/06(金) 04:15:34.73ID:RA0YJgv70556デフォルトの名無しさん (ワッチョイ 9d76-hWC7)
2017/10/06(金) 06:22:04.70ID:RySAjNni0 スペルミスかと思ったけど合ってるよな
間違い探し難しい
どこが変?
間違い探し難しい
どこが変?
557デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/06(金) 07:43:06.02ID:p4va+yl10 検索でちゃんと 555 と 546 がヒットするし何か見間違えたんだろうか
558デフォルトの名無しさん (ワッチョイ da8a-jcSU)
2017/10/06(金) 07:45:29.75ID:iQ5MtuBR0 目を細めて見るとstmcpyに… いや無理があるな
559デフォルトの名無しさん (ワッチョイ b68a-uDER)
2017/10/06(金) 08:33:19.91ID:4Iec6HYc0560デフォルトの名無しさん (ワッチョイ da8a-tpYQ)
2017/10/06(金) 09:47:31.52ID:RA0YJgv70 str[n]cpyが最後に0を書く条件は?
memcpyを使わない理由は?
memcpyを使わない理由は?
561デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/06(金) 10:38:12.40ID:EDz06gtM6 自分のミスはスルー
562デフォルトの名無しさん (ワッチョイ 4623-XSap)
2017/10/06(金) 10:39:45.78ID:d6jfQR1X0 strncpyは0で終端される条件が毎回わからなくて敬遠していたんです。
でも、strlcpyを使うようになってから肌年齢が10歳若返りました!
今は毎日がとっても楽しいです。
でも、strlcpyを使うようになってから肌年齢が10歳若返りました!
今は毎日がとっても楽しいです。
563デフォルトの名無しさん (ワッチョイ 0502-5Ff0)
2017/10/06(金) 10:54:46.60ID:U5/7Dlcy0 >>548
おお!センクス!
おお!センクス!
564デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/06(金) 13:16:11.88ID:qH0Ei3hn0565デフォルトの名無しさん (ササクッテロレ Sp75-Zdu/)
2017/10/06(金) 14:05:32.93ID:UT/zOTNDp 何の為にサイズ指定があるか、考えりゃわかるじゃん?
566デフォルトの名無しさん (ワッチョイ b68a-uDER)
2017/10/06(金) 14:53:14.89ID:4Iec6HYc0 >>564
「早く」の意味を調べてからほざきなさい
「早く」の意味を調べてからほざきなさい
567デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/06(金) 15:16:39.88ID:qH0Ei3hn0568デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
2017/10/06(金) 15:20:28.76ID:B4vVDMXU0 うんち!
569デフォルトの名無しさん (ワッチョイ b68a-uDER)
2017/10/06(金) 17:45:14.09ID:4Iec6HYc0570デフォルトの名無しさん (アウアウカー Sa4d-IMWu)
2017/10/06(金) 18:41:01.91ID:fZ4i0/3ka571デフォルトの名無しさん (ワッチョイ b632-rzHd)
2017/10/06(金) 20:42:56.05ID:qH0Ei3hn0572デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/07(土) 14:47:24.49ID:f9dDdlSq0573デフォルトの名無しさん (エーイモ SEda-2JKf)
2017/10/08(日) 10:02:50.14ID:iaWD4MFGE PHPしかできないザコだったけどC言語が楽しい
Cのスタンダードなコーディングスタイルってないですか?
インデントにタブ使ってたりifに{}使ってなかったりするコードをよく見かけますけど
Cのスタンダードなコーディングスタイルってないですか?
インデントにタブ使ってたりifに{}使ってなかったりするコードをよく見かけますけど
574デフォルトの名無しさん (ワッチョイ fdc6-XSap)
2017/10/08(日) 10:09:18.29ID:+nfO/L5n0 戦争でも起こす気か?
575デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 11:30:23.33ID:HosRocIl0576デフォルトの名無しさん (スププ Sdfa-qDdi)
2017/10/08(日) 11:56:53.58ID:SX/6L99bd 戦いの火蓋は切って落とされた
577デフォルトの名無しさん (ブーイモ MMa1-clNK)
2017/10/08(日) 13:00:43.13ID:FR3ELF64M インデントは空白4個だね
578デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
2017/10/08(日) 13:04:33.16ID:SXbZ1Yc30579デフォルトの名無しさん (ワッチョイ 76e8-8BZG)
2017/10/08(日) 13:04:53.34ID:e96mZsST0 >>577
2つで十分ですよ
2つで十分ですよ
580デフォルトの名無しさん (ワッチョイ 0516-5Ff0)
2017/10/08(日) 13:05:13.53ID:SXbZ1Yc30 C++はゴミ
581デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/08(日) 14:51:03.41ID:c+/m9riq0 >>579
いやタブ1つにして表示幅はスペース4つ分だ。
いやタブ1つにして表示幅はスペース4つ分だ。
582デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/08(日) 14:54:49.62ID:c+/m9riq0 >>576
ああ。もうこのスレはスペース開けるか開けないか改行するかしないか何文字にするか中括弧はどうするか行末にバックスラッシュ入れて次行に書くか書かないかgotoどうするか等の話で延々と10年ぐらい費やされるんだろうな。
もちろんエディタの話に飛び火してviがvimがemacsがとなる。
ああ。もうこのスレはスペース開けるか開けないか改行するかしないか何文字にするか中括弧はどうするか行末にバックスラッシュ入れて次行に書くか書かないかgotoどうするか等の話で延々と10年ぐらい費やされるんだろうな。
もちろんエディタの話に飛び火してviがvimがemacsがとなる。
583デフォルトの名無しさん (ワッチョイ 7123-fbES)
2017/10/08(日) 14:55:08.52ID:bhcsmcAx0 スペース一つで充分
584デフォルトの名無しさん (ワッチョイ 76a5-wbjw)
2017/10/08(日) 15:03:04.04ID:Eg4i3QFB0 プログラム終了前にfree()が必要かどうかを忘れちゃいかん。
585デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/08(日) 16:00:19.88ID:tULmhvm40 ちょっと教えてくださいとあるHPから抜粋
意味が分からないので解説お願いします
私が負荷した文は<< >>で囲みます
struct Person {
char name[20];
int sex;
// char sex;
int age;
double height;
double weight;
} person_s; <<←今までの自分の認識:Person構造体のインスタンスperson_sを生成 しかしこの認識は後述@でpがインスタンスであると推定できることから間違っていると推定できる>>
<< person_sは構造体宣言の為の鋳型と推定 しかし様々なプログラムをチェックするとここでインスタンス宣言している例も見受けられる >>
<< 変数が構造体宣言の為の鋳型なのかインスタンスなのかはコンパイラが記述から自動判断???>>
person_s p; << ←pがPerson構造体のインスタンスであることは後述@のメンバ呼び出しで推定できる >>
とかけば、不要な宣言を減らすことができます。
構造体メンバの初期化
各メンバの初期化方法として次のようなものがあります
person_s p = {"Tom", 0, 20, 175.2, 66.5}; <<←構造体宣言鋳型person_sを使用しpをインスタンス宣言??>>
// または
person_s p; << 構造体宣言鋳型person_sを使用しpをインスタンス宣言?? >>
p.name = "Tom"; << この記述でpが構造体Personのインスタンスであると推定できる ・・・@ >>
p.sex = 0;
<< person_sは構造体宣言の鋳型 pはインスタンスであると推定できるが >>
<< 何故ダイレクトにPersonを使ってpを宣言しないのか? >>
<< 何故person_sなどという変数を使って間接的に宣言するのか? >>
<< うんちくきぼんぬ >>
意味が分からないので解説お願いします
私が負荷した文は<< >>で囲みます
struct Person {
char name[20];
int sex;
// char sex;
int age;
double height;
double weight;
} person_s; <<←今までの自分の認識:Person構造体のインスタンスperson_sを生成 しかしこの認識は後述@でpがインスタンスであると推定できることから間違っていると推定できる>>
<< person_sは構造体宣言の為の鋳型と推定 しかし様々なプログラムをチェックするとここでインスタンス宣言している例も見受けられる >>
<< 変数が構造体宣言の為の鋳型なのかインスタンスなのかはコンパイラが記述から自動判断???>>
person_s p; << ←pがPerson構造体のインスタンスであることは後述@のメンバ呼び出しで推定できる >>
とかけば、不要な宣言を減らすことができます。
構造体メンバの初期化
各メンバの初期化方法として次のようなものがあります
person_s p = {"Tom", 0, 20, 175.2, 66.5}; <<←構造体宣言鋳型person_sを使用しpをインスタンス宣言??>>
// または
person_s p; << 構造体宣言鋳型person_sを使用しpをインスタンス宣言?? >>
p.name = "Tom"; << この記述でpが構造体Personのインスタンスであると推定できる ・・・@ >>
p.sex = 0;
<< person_sは構造体宣言の鋳型 pはインスタンスであると推定できるが >>
<< 何故ダイレクトにPersonを使ってpを宣言しないのか? >>
<< 何故person_sなどという変数を使って間接的に宣言するのか? >>
<< うんちくきぼんぬ >>
586デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 16:03:19.22ID:dE95R3nJ0 struct Person の前に typedef がありそうな雰囲気
587デフォルトの名無しさん (ワッチョイ 558c-v8iM)
2017/10/08(日) 16:13:28.90ID:yi/NbOiJ0588デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 16:38:19.39ID:HosRocIl0 >>584
exit() の前にだろ
exit() の前にだろ
589デフォルトの名無しさん (ワッチョイ b68a-YM+x)
2017/10/08(日) 17:08:17.03ID:F9J/pQ0V0 C++ならtypedefなくても可
多分.cppでビルド通したんだろうね
多分.cppでビルド通したんだろうね
590デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 17:13:11.77ID:dE95R3nJ0591デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/08(日) 17:16:54.10ID:tULmhvm40 なるほどー ありがとうございました
592デフォルトの名無しさん (ワッチョイ b68a-YM+x)
2017/10/08(日) 17:26:51.19ID:F9J/pQ0V0 >>590
C++ではtypedefは不要だよ(別にあっても構わないけど)
structとclassはメンバーのデフォルト設定がpublicかprivateかという違いを除けば構文的には全く同じように使える
structで継承することすら出来る
C++ではtypedefは不要だよ(別にあっても構わないけど)
structとclassはメンバーのデフォルト設定がpublicかprivateかという違いを除けば構文的には全く同じように使える
structで継承することすら出来る
593デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 17:32:00.82ID:dE95R3nJ0 >>592
論点はそこじゃなくて
struct Person { };
Person p;
が C++ では文法として通るのは指摘の通り
質問元の記述では
struct Person { } person_s;
person_s p;
こうなってるから、これじゃ C++ の文法でも通らないでしょうよ ってことで
論点はそこじゃなくて
struct Person { };
Person p;
が C++ では文法として通るのは指摘の通り
質問元の記述では
struct Person { } person_s;
person_s p;
こうなってるから、これじゃ C++ の文法でも通らないでしょうよ ってことで
594デフォルトの名無しさん (ワッチョイ b68a-YM+x)
2017/10/08(日) 17:37:28.39ID:F9J/pQ0V0 通るよ
class宣言ではいちいちtypedefなど使わないのと同じように構造体でもtypedefは省略するのが一般的
むしろ先頭の構造体テンプレート名を省略して最後の型名だけ宣言する場合も多い
class宣言ではいちいちtypedefなど使わないのと同じように構造体でもtypedefは省略するのが一般的
むしろ先頭の構造体テンプレート名を省略して最後の型名だけ宣言する場合も多い
595デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 17:42:06.58ID:dE95R3nJ0596デフォルトの名無しさん (ワッチョイ da8a-jcSU)
2017/10/08(日) 18:04:45.47ID:PUMPETat0 structが省略可能になってtypedefしなくなったのを
typedefが省略可能と間違って覚えてるんじゃないだろうか
typedefが省略可能と間違って覚えてるんじゃないだろうか
598デフォルトの名無しさん (フリッテル MM7e-ahfN)
2017/10/08(日) 18:14:58.26ID:ALuk3l/eM あれ?
通らないのかこれ?
通らないのかこれ?
599デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/08(日) 18:20:47.85ID:dE95R3nJ0 型名のエイリアス宣言と その型のインスタンスの生成
typedef を省略した場合には、全く同じ記述になるんだけど
後者のインスタンスの生成で翻訳してるぜ
typedef を省略した場合には、全く同じ記述になるんだけど
後者のインスタンスの生成で翻訳してるぜ
600デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 18:29:26.73ID:HosRocIl0 通ると思う方がどうかしてるわ
601デフォルトの名無しさん (スププ Sdfa-qDdi)
2017/10/08(日) 18:32:58.84ID:LFQQ2ZHvd なぜ通ると思ったのか
602デフォルトの名無しさん (エーイモ SEda-2JKf)
2017/10/08(日) 19:03:56.08ID:uO7C8UFXE コーディングスタイルってたくさんあるんですね
とりあえず検索したらエリートの人達が使ってそうなものを集めてみました
C Coding Standard - CMU (ECE)
https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html
GNU Coding Standards
https://www.gnu.org/prep/standards/html_node/Writing-C.html
NASA C Style Guide
http://homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf
C Coding Style - GNOME Developer Center
https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.en
CERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
Linux kernel coding style
https://www.kernel.org/doc/html/v4.10/process/coding-style.html
どれも難しそうなのでコーディングスタイル見るのやめようと思います。
githubで適当に見ても全然統一されてないし
とりあえずインデントは空白8個で{}を省略しないルールだけにしたいと思います。
とりあえず検索したらエリートの人達が使ってそうなものを集めてみました
C Coding Standard - CMU (ECE)
https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html
GNU Coding Standards
https://www.gnu.org/prep/standards/html_node/Writing-C.html
NASA C Style Guide
http://homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf
C Coding Style - GNOME Developer Center
https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.en
CERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
Linux kernel coding style
https://www.kernel.org/doc/html/v4.10/process/coding-style.html
どれも難しそうなのでコーディングスタイル見るのやめようと思います。
githubで適当に見ても全然統一されてないし
とりあえずインデントは空白8個で{}を省略しないルールだけにしたいと思います。
603デフォルトの名無しさん (エーイモ SEda-2JKf)
2017/10/08(日) 19:04:57.70ID:uO7C8UFXE 空白8個なのはメモ帳で見た時にこのくらいだから合わせてるだけです
604デフォルトの名無しさん (ワッチョイ da8a-jcSU)
2017/10/08(日) 19:18:41.81ID:PUMPETat0 また戦争がしたいのか、アンタは
605デフォルトの名無しさん (ワッチョイ fdc6-XSap)
2017/10/08(日) 19:26:45.12ID:+nfO/L5n0 戦闘民族
606デフォルトの名無しさん (ワッチョイ dab3-Nz6W)
2017/10/08(日) 19:30:12.30ID:HosRocIl0 書いてりゃわかると思うけど8は多すぎ
単に昔のシステムがそうだったと言うだけのことだから4とか2でいいと思う
単に昔のシステムがそうだったと言うだけのことだから4とか2でいいと思う
607デフォルトの名無しさん (ワッチョイ fdc6-XSap)
2017/10/08(日) 19:36:28.95ID:+nfO/L5n0 あーあ
608デフォルトの名無しさん (ワッチョイ 7123-fbES)
2017/10/08(日) 21:11:10.70ID:bhcsmcAx0609デフォルトの名無しさん (ワッチョイ 7575-5Ff0)
2017/10/09(月) 01:05:37.72ID:6VRPxojV0 マンデルブロの描画がうまくいきません。ズームするとすぐに単調になってしまいます。
動画
https://youtu.be/Ompp_YwrLPw
ソースコード
http://codepad.org/mlm33eRT
動画
https://youtu.be/Ompp_YwrLPw
ソースコード
http://codepad.org/mlm33eRT
610片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 01:30:56.68ID:vdfcSFiBd >>609
クリックしたら画面の中心を移動させる。
クリックしたら画面の中心を移動させる。
611片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 01:32:01.57ID:vdfcSFiBd ドラッグされたらずらす。
612デフォルトの名無しさん (ワッチョイ 7575-5Ff0)
2017/10/09(月) 01:53:40.87ID:6VRPxojV0 >>610
一応クリックするとある境界線付近を拡大するようにプログラムに書いてるのですが...
一応クリックするとある境界線付近を拡大するようにプログラムに書いてるのですが...
613片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 03:32:25.69ID:vdfcSFiBd >>612
環境によって座標系が違うのかも知れない。ずらす値を変えてみては?
環境によって座標系が違うのかも知れない。ずらす値を変えてみては?
614デフォルトの名無しさん (ワッチョイ 558c-v8iM)
2017/10/09(月) 03:39:59.55ID:69HXGpsc0 >>609
単調になるのは k のループ回数が少ないせいでは
単調になるのは k のループ回数が少ないせいでは
615デフォルトの名無しさん (ワッチョイ da7c-yS8h)
2017/10/09(月) 06:38:40.98ID:hRP3P7r40 そうだね k=1000くらいで
616デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/09(月) 08:53:44.75ID:IXUwPWpS6617デフォルトの名無しさん (アウアウカー Sa4d-xgRF)
2017/10/09(月) 09:35:07.86ID:IkImbMA7a618デフォルトの名無しさん (ワッチョイ 6955-clNK)
2017/10/09(月) 09:51:45.98ID:UMVukllE0 俺はこの書き方
if (condition) {
}
else {
}
if (condition) {
}
else {
}
619デフォルトの名無しさん (ワッチョイ 459e-G6mq)
2017/10/09(月) 09:55:27.10ID:pMEz2IHg0 コーディングスタイルにこだわる奴は素人。
620デフォルトの名無しさん (ガックシ 060e-5Ff0)
2017/10/09(月) 12:12:59.35ID:9ioWbZDx6 Linuxのソースコードは?
621デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/09(月) 13:24:11.42ID:N3YX2Zf80 ソース整形ツールの動作オプションの数で眩暈がするぜw
622デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:12:40.72ID:98rFBdXp0 ■■たびたびお世話になります なにが悪いのかご指摘おねがいします■■
struct I2C_MEM
{
char DEV_ADR ;
char REG_ADR ;
char DATA[4] ;
} static I2C_MEM[2] ;
task02_tst ( struct I2C_MEM *aaa )
{
char i,a[2],b[2],c[2];
i = 0 ;
while ( i <= 1 )
{
aaa -> DEV_ADR ;
a[i] = *aaa ; // データタイプがインコンパチでエラーになる char DEV_ADR を参照してくれない?
aaa -> REG_ADR ;
b[i] = *aaa ; // データタイプがインコンパチでエラーになる char REG_ADR を参照してくれない?
aaa -> DATA ;
c[i] = *aaa // データタイプがインコンパチでエラーになる char DATA を参照してくれない?
p += 1 ;
i += 1 ;
}
}
struct I2C_MEM
{
char DEV_ADR ;
char REG_ADR ;
char DATA[4] ;
} static I2C_MEM[2] ;
task02_tst ( struct I2C_MEM *aaa )
{
char i,a[2],b[2],c[2];
i = 0 ;
while ( i <= 1 )
{
aaa -> DEV_ADR ;
a[i] = *aaa ; // データタイプがインコンパチでエラーになる char DEV_ADR を参照してくれない?
aaa -> REG_ADR ;
b[i] = *aaa ; // データタイプがインコンパチでエラーになる char REG_ADR を参照してくれない?
aaa -> DATA ;
c[i] = *aaa // データタイプがインコンパチでエラーになる char DATA を参照してくれない?
p += 1 ;
i += 1 ;
}
}
623デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:22:20.38ID:98rFBdXp0 ↑単純に関数内で構造体のデータにポインタ+インデックスでアクセスしたい
624デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 14:26:06.29ID:98rFBdXp0 間違い発見
p += 1 ; は aaa += 1 ; に置き換えてください
p += 1 ; は aaa += 1 ; に置き換えてください
625片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 14:39:31.76ID:vdfcSFiBd626片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdfa-yc5c)
2017/10/09(月) 15:09:21.54ID:vdfcSFiBd char型のデータを代入したいのなら、両辺の型をcharにしないといけないよ。
627デフォルトの名無しさん (ワッチョイ 5ae1-bBfX)
2017/10/09(月) 15:26:29.02ID:G+wiEnLh0 >>622
> aaa -> DEV_ADR ;
> a[i] = *aaa ;
例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う
ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない
> aaa -> DEV_ADR ;
> a[i] = *aaa ;
例えばこの部分は a[i] = aaa->DEV_ADR; という処理を意図してるのではないかと思う
ただし aaa->DATA のところは char* 型になるので char 型の c[i] に代入できない
628デフォルトの名無しさん (ドコグロ MM0d-Nz6W)
2017/10/09(月) 15:56:12.50ID:of8Vs49yM629デフォルトの名無しさん (ワッチョイ 5593-Xc0J)
2017/10/09(月) 17:01:40.23ID:u+Z6y4O20 初心者相手に表記法を変えると理解しにくいかも。
本質から外れた部分が目についてしまうからね。
int i = 0;
while ( i <= 1 )
{
a[i] = aaa -> DEV_ADR ; // ポインタaaaが指す構造体の DEV_ADR メンバの値
b[i] = aaa -> REG_ADR ; // ポインタaaaが指す構造体の REG_ADR メンバの値
c[i] = aaa -> DATA ; // c[i] の型と DATA メンバの型が違うからエラー
aaa += 1 ;
i += 1 ;
}
てな感じかと。
>>627-628 をまとめただけ、だけど。
本質から外れた部分が目についてしまうからね。
int i = 0;
while ( i <= 1 )
{
a[i] = aaa -> DEV_ADR ; // ポインタaaaが指す構造体の DEV_ADR メンバの値
b[i] = aaa -> REG_ADR ; // ポインタaaaが指す構造体の REG_ADR メンバの値
c[i] = aaa -> DATA ; // c[i] の型と DATA メンバの型が違うからエラー
aaa += 1 ;
i += 1 ;
}
てな感じかと。
>>627-628 をまとめただけ、だけど。
630デフォルトの名無しさん (ワッチョイ 059f-huPf)
2017/10/09(月) 17:19:35.64ID:tFlwnlNI0 >>629
c を char *c[2] で宣言しておけばなんとかなるね。
c を char *c[2] で宣言しておけばなんとかなるね。
631デフォルトの名無しさん (ワッチョイ bdd2-qWqy)
2017/10/09(月) 17:34:38.15ID:98rFBdXp0 皆様 どうもありがとうございます
とりあえず代入の書き方が知りたかっただけでありまして
ちなみにインデックスを使用した配列メンバーのアクセスなんだけど
c[i] = aaa -> DATA +0 ;
d[i] = aaa -> DATA +1 ;
e[i] = aaa -> DATA +2 ;
f[i] = aaa -> DATA +3 ;
こんな書き方ってできるの?
とりあえず代入の書き方が知りたかっただけでありまして
ちなみにインデックスを使用した配列メンバーのアクセスなんだけど
c[i] = aaa -> DATA +0 ;
d[i] = aaa -> DATA +1 ;
e[i] = aaa -> DATA +2 ;
f[i] = aaa -> DATA +3 ;
こんな書き方ってできるの?
632デフォルトの名無しさん (ワッチョイ 75b3-qWqy)
2017/10/09(月) 17:44:30.12ID:N3YX2Zf80 ポインタを返す場合はそういう書き方
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]
左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい
aaa->DATA+3
ポインタの指してる先を求めたい場合は
aaa->DATA[3]
左辺が何を要求しているのか(どういうものを操作したいのか)を頭の中で整理せずに
記述法だけを即物的にトレースするのはとてもまずい
633デフォルトの名無しさん (ワッチョイ 958a-j1W8)
2017/10/09(月) 18:00:40.01ID:tNKVEDsJ0 task02_tst()の呼び出しが
task02_tst(I2C_MEM)なのか
task02_tst(&I2C_MEM[1])なのかわからん
前者と仮定するとDEV_ADRにアクセスする方法は
1. (*(aaa + i)).DEV_ADR
2. aaa[i].DEV_ADR
3. (aaa + i)->DEV_ADR
なんかが考えられるけど(2は1の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ
task02_tst(I2C_MEM)なのか
task02_tst(&I2C_MEM[1])なのかわからん
前者と仮定するとDEV_ADRにアクセスする方法は
1. (*(aaa + i)).DEV_ADR
2. aaa[i].DEV_ADR
3. (aaa + i)->DEV_ADR
なんかが考えられるけど(2は1の糖衣構文)、ドットとアローそれぞれの
左側の違いを理解しないと先には進めないよ
634デフォルトの名無しさん (ワッチョイ 9dc3-evb8)
2017/10/09(月) 18:02:21.36ID:tda6mQVw0635デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 10:23:33.14ID:jY+yK3vs6 過疎ってるな
636デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:18:46.53ID:mQ4S5/8+0 ちょっと質問です
↓下記のようなwhileの中身を複製するために使う実体化されない変数iをコンパイラ制御のための変数と明示する書き方ってあるんですか?
task02_tst ( I2C_MEM_typ *p , char i)
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
}
}
↓下記のようなwhileの中身を複製するために使う実体化されない変数iをコンパイラ制御のための変数と明示する書き方ってあるんですか?
task02_tst ( I2C_MEM_typ *p , char i)
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
}
}
637デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:24:19.55ID:mQ4S5/8+0 task02_tst ( I2C_MEM_typ *p )
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
}
}
に修正します
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
}
}
に修正します
638デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 11:26:34.34ID:mQ4S5/8+0 task02_tst ( I2C_MEM_typ *p )
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
i += 1 ;
}
}
に修正します
{
char i ;
i = 0 ;
while ( i < 2 )
{
p = p + i ;
a[i] = p -> DEV_ADR ;
b[i] = p -> REG_ADR ;
c[i][0] = p -> DATA[0] ;
c[i][1] = p -> DATA[1] ;
c[i][2] = p -> DATA[2] ;
c[i][3] = p -> DATA[3] ;
i += 1 ;
}
}
に修正します
639デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/12(木) 11:50:40.24ID:z+R5CP9n0640デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 12:32:35.60ID:mQ4S5/8+0 こんな感じで構造体をインデックスで指定した転送命令にコンパイルする意図で書いています
p = p + i ; //*実体化されない(マシンコード化されない)コード
mov a[0] , [構造体I2C_MEMの基底番地+0]
mov b[0] , [構造体I2C_MEMの基底番地+1]
mov c[0][0] , [構造体I2C_MEMの基底番地+2]
:
mov c[0][3] , [構造体I2C_MEMの基底番地+5]
i += 1 ; //*実体化されない(マシンコード化されない)コード
p = p + i ; //*実体化されない(マシンコード化されない)コード
mov a[1] , [構造体I2C_MEMの基底番地+6]
mov b[1] , [構造体I2C_MEMの基底番地+7]
mov c[1][0] , [構造体I2C_MEMの基底番地+8]
:
mov c[1][3] , [構造体I2C_MEMの基底番地+11]
i += 1 ; //*実体化されない(マシンコード化されない)コード
・・・で意図通りコンパイルしてくれるわけですが
実体化されない(メモリー空間またはレジスタファイルにアサインされない)char iの意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして
p = p + i ; //*実体化されない(マシンコード化されない)コード
mov a[0] , [構造体I2C_MEMの基底番地+0]
mov b[0] , [構造体I2C_MEMの基底番地+1]
mov c[0][0] , [構造体I2C_MEMの基底番地+2]
:
mov c[0][3] , [構造体I2C_MEMの基底番地+5]
i += 1 ; //*実体化されない(マシンコード化されない)コード
p = p + i ; //*実体化されない(マシンコード化されない)コード
mov a[1] , [構造体I2C_MEMの基底番地+6]
mov b[1] , [構造体I2C_MEMの基底番地+7]
mov c[1][0] , [構造体I2C_MEMの基底番地+8]
:
mov c[1][3] , [構造体I2C_MEMの基底番地+11]
i += 1 ; //*実体化されない(マシンコード化されない)コード
・・・で意図通りコンパイルしてくれるわけですが
実体化されない(メモリー空間またはレジスタファイルにアサインされない)char iの意味が
希薄になるのでコンパイラに対する変数だよと明示(コンパイラ&設計者に)したいのだが
そんな書き方ある?ということでありまして
641デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 12:41:11.33ID:Z8zboj8V0 多少は意図した記述に沿って機械語出力するだろうけど、
保障されてるわけでもないし、最適化他でどうなるかもわからん
「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする
保障されてるわけでもないし、最適化他でどうなるかもわからん
「機械語でこうなって欲しい」という目的を達成させるならその部分を機械語で書くか、
(環境によるだろうけど)その部分だけをインラインアセンブラにする
642デフォルトの名無しさん (ワッチョイ 13cf-HoIg)
2017/10/12(木) 12:42:56.26ID:cscfLNVP0 memcpy使ったらいいんじゃないの?
643片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/12(木) 12:52:32.73ID:loBt1/dEd volatile
644デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 13:04:26.04ID:mQ4S5/8+0 うーーん・・・
volatileは最適化抑止(消すなー!)のための記述と認識しているんですが
volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです
volatileは最適化抑止(消すなー!)のための記述と認識しているんですが
volatileの逆の機能が欲しいんですよね 実体化するなー!ってやつです
645デフォルトの名無しさん (ワッチョイ 1312-B6a6)
2017/10/12(木) 13:37:51.69ID:jX4dlPv10 volatile揮発性の当初の意図は
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
70年代コンピュータでの磁気コアメモリに置いておく、程度なんじゃあねえの
646デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 13:45:28.14ID:Z8zboj8V0 実体化するな=機械語としてコードにおくな
ということは、言語上での変数を一切使わずに繰り返し展開するような
テンプレートやマクロでメタプログラミングしたい って話になるが・・・
#define IMP(idx) do { \
a[idx] = p[idx].DEV_ADR; \
b[idx] = p[idx].REG_ADR; \
:
: 以下同じ様に記述
:
c[idx][3] = p[idx].DATA[3] ; } whle(0)
IMP(0);
IMP(1);
IMP(2);
変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ
ということは、言語上での変数を一切使わずに繰り返し展開するような
テンプレートやマクロでメタプログラミングしたい って話になるが・・・
#define IMP(idx) do { \
a[idx] = p[idx].DEV_ADR; \
b[idx] = p[idx].REG_ADR; \
:
: 以下同じ様に記述
:
c[idx][3] = p[idx].DATA[3] ; } whle(0)
IMP(0);
IMP(1);
IMP(2);
変数を使ってループできないから 繰り返し分リテラルを手で並べる必要あるしー
正直ほめられたやりかたじゃないと思うわ
647デフォルトの名無しさん (ササクッテロレ Sp45-NqOW)
2017/10/12(木) 14:25:00.48ID:1sF6m3D2p 実体化させたく無いものを記述?
…スラ二本じゃダメなのか?
…スラ二本じゃダメなのか?
648デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:30:09.97ID:9bJ1Vwh10 そういう話ではないでしょ
そもそもループによるコードのキャストは
記述を短縮化するのが目的なんだから
キャストのためのループであることをコンパイラに
推論させるための変数指定の仕組みがあるのかな?ってはなし
そもそもループによるコードのキャストは
記述を短縮化するのが目的なんだから
キャストのためのループであることをコンパイラに
推論させるための変数指定の仕組みがあるのかな?ってはなし
649デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:32:07.54ID:9bJ1Vwh10 まあ 指定しなくても現状でコンパイラは推論してるけれどもねw
なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです
なんかキモチ悪いといえばキモチ悪いんで指定できればうれしいってだけです
650デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 14:36:32.09ID:OhN0e73F6 死ねゴミ
651デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 14:37:45.66ID:9bJ1Vwh10 なんかすぐ出てこないところをみると
そこらへんはコンパイラまかせなのね
そこらへんはコンパイラまかせなのね
652デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 14:38:53.90ID:OhN0e73F6 クッサ
653デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/12(木) 14:45:29.40ID:Z8zboj8V0 結局 >>639 だったのか・・・
654デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/12(木) 14:46:41.92ID:z+R5CP9n0 返答が幾つもついてるのに出てこないとか言っちゃうのは見たいものしか見ない人の典型だね
655デフォルトの名無しさん (スップ Sd33-BnQ2)
2017/10/12(木) 14:48:17.07ID:XqOCC09Fd とりあえずお前には無理だ
諦めな
諦めな
656デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/12(木) 15:03:43.28ID:9bJ1Vwh10 大体わかりました
ありがとうございました
ありがとうございました
657デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 15:06:24.03ID:OhN0e73F6 一から10まで足し合わせるプログラムを教えてください。
658片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/12(木) 15:10:29.76ID:loBt1/dEd >>657
#include <stdio.h>
int main(void) {
int i, n = 0;
for (i = 1; i <= 10; ++i) n += i;
printf("%d\n", n);
return 0;
}
#include <stdio.h>
int main(void) {
int i, n = 0;
for (i = 1; i <= 10; ++i) n += i;
printf("%d\n", n);
return 0;
}
659デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/12(木) 15:18:14.51ID:OhN0e73F6 >>658
ありがとうございます!
ありがとうございます!
660デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/12(木) 18:50:09.63ID:7bIAw6590 人に思いを正しく伝えられない奴がうまくプログラミングできるとは思えないけど大丈夫なんだろう
661デフォルトの名無しさん (ササクッテロレ Sp45-NqOW)
2017/10/12(木) 20:36:00.66ID:1sF6m3D2p 俺は逆だと思っている。
人に上手く思いを伝えられないからこそ、
表現手段を駆使して伝えようと努力するんだよな。
絵とか音楽とか、クリエイターってそんな生き物。
人に上手く思いを伝えられないからこそ、
表現手段を駆使して伝えようと努力するんだよな。
絵とか音楽とか、クリエイターってそんな生き物。
662デフォルトの名無しさん (ワッチョイ 13b3-itUa)
2017/10/12(木) 21:49:52.42ID:wn8w1zGC0 >>661
> 絵とか音楽とか、クリエイターってそんな生き物。
全然違う
あいつらは自分の思いを伝えられるのは自分の表現法方だけだと思ってる
絵を描く奴で説明文を書いて思いを伝えるやつなんていないだろ
> 絵とか音楽とか、クリエイターってそんな生き物。
全然違う
あいつらは自分の思いを伝えられるのは自分の表現法方だけだと思ってる
絵を描く奴で説明文を書いて思いを伝えるやつなんていないだろ
663デフォルトの名無しさん (ワッチョイ 799f-BSx0)
2017/10/12(木) 23:57:59.88ID:5ILt7KpA0664デフォルトの名無しさん (ワッチョイ 799f-BSx0)
2017/10/13(金) 00:30:38.46ID:neFZx4WS0 共有メモリとか mmap() して複数のプロセスまたはスレッドがアクセスする領域も同じか。
あれ? こんなのちょっと前に話題にならなかったか?
あれ? こんなのちょっと前に話題にならなかったか?
665デフォルトの名無しさん (ドコグロ MM63-itUa)
2017/10/13(金) 06:51:32.49ID:txebgbcNM DMAとかもあるわな
666デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:09:21.29ID:UePpwGnn0 ちょっとお尋ねします
char *a ; と記述すると
↓
char a ; 実体化
int (&a) ; 非実体化(コンパイラが使用する変数)
が生成される
*の概念が無いと
char a ; 実体化
int a_point ; 実体化(アドレス長=intとする)
a_point = &a ; 実体化
例えばこう書くことになる
ポインタは関数内で宣言できる
その場合そのポインタの寿命は関数内に限定される
こんな感じの認識であってますか?
char *a ; と記述すると
↓
char a ; 実体化
int (&a) ; 非実体化(コンパイラが使用する変数)
が生成される
*の概念が無いと
char a ; 実体化
int a_point ; 実体化(アドレス長=intとする)
a_point = &a ; 実体化
例えばこう書くことになる
ポインタは関数内で宣言できる
その場合そのポインタの寿命は関数内に限定される
こんな感じの認識であってますか?
667デフォルトの名無しさん (アウーイモ MM1d-1+gY)
2017/10/13(金) 12:21:34.93ID:ZC5rLpvkM ポインタの寿命はプログラム内じゃないん?
668デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/13(金) 12:24:24.54ID:y6HLA65k0 実体化とか 非実体化とかの オレオレ用語は何を意図してるのかわからん
669デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:29:00.47ID:UePpwGnn0 >>667
ということはプログラム内でユニークな名前をつけなければならないということですね?
ということはプログラム内でユニークな名前をつけなければならないということですね?
670デフォルトの名無しさん (ワッチョイ 5387-6M7B)
2017/10/13(金) 12:29:33.87ID:x6piWjtI0 >>666
>char a ; 実体化
>int (&a) ; 非実体化(コンパイラが使用する変数)
ポインタを定義したからといって,即応して実体が生成されることはない
ポインタがさす実体は自分で生成しないといけない
>char a ; 実体化
>int (&a) ; 非実体化(コンパイラが使用する変数)
ポインタを定義したからといって,即応して実体が生成されることはない
ポインタがさす実体は自分で生成しないといけない
672デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:31:44.24ID:UePpwGnn0 C言語です
実体/非実体とは機械語に変換されるかどうかということです
実体/非実体とは機械語に変換されるかどうかということです
673デフォルトの名無しさん (ワッチョイ 8be8-B6a6)
2017/10/13(金) 12:33:52.57ID:piAojqU/0 実体化とか非実体化とか、オブジェクト指向の概念でしょ。
Cではリテラルに対応するエリアがあって、それをデータの入れ物にするか、アドレスの入れ物にするか、だけでしょ。
いずれにしろ変数の寿命はグローバルスコープに定義するか、静的(static)に定義しないかぎり、
使われる関数のスコープ内に限られるでしょ。
Cではリテラルに対応するエリアがあって、それをデータの入れ物にするか、アドレスの入れ物にするか、だけでしょ。
いずれにしろ変数の寿命はグローバルスコープに定義するか、静的(static)に定義しないかぎり、
使われる関数のスコープ内に限られるでしょ。
674デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 12:33:53.32ID:/fw1jTt60 >>666
> char a; 実体化
というのを除き、だいたい合ってる
char *a;ではcharの実体は作られずに
int(&a);だけが作られる
Cの前身のBでは、*3 = 1;で
メモリの3番地に1を書き込むようになっていた
アドレス演算子もあって
auto a, b; /* 型の概念がないので記憶クラスだけ */
a = &b; /* bとして使っているメモリのアドレスを取得 */
*a = 1; /* bに1を代入 */
つまり、おまえさんの言うように整数変数を
そのままアドレスの表現に使っていた
> char a; 実体化
というのを除き、だいたい合ってる
char *a;ではcharの実体は作られずに
int(&a);だけが作られる
Cの前身のBでは、*3 = 1;で
メモリの3番地に1を書き込むようになっていた
アドレス演算子もあって
auto a, b; /* 型の概念がないので記憶クラスだけ */
a = &b; /* bとして使っているメモリのアドレスを取得 */
*a = 1; /* bに1を代入 */
つまり、おまえさんの言うように整数変数を
そのままアドレスの表現に使っていた
675デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:42:43.01ID:UePpwGnn0 なるほど ありがとうございました
676デフォルトの名無しさん (ドコグロ MM55-itUa)
2017/10/13(金) 12:46:55.16ID:DPD6/A6xM677デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/13(金) 12:48:21.81ID:y6HLA65k0 機械語に翻訳されるかどうかは
それまでの文意や環境(特に最適化)次第だもんな
それまでの文意や環境(特に最適化)次第だもんな
678デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 12:49:08.21ID:UePpwGnn0 ちょっとお尋ねします
ベテランとお見受けする方は
/* */
↑コメントにこれつかいますけど
//
↑何故これつかわないんですか?
なにかしらトラブルの元になったりするんですか?
ベテランとお見受けする方は
/* */
↑コメントにこれつかいますけど
//
↑何故これつかわないんですか?
なにかしらトラブルの元になったりするんですか?
679デフォルトの名無しさん (ワッチョイ 79be-HijE)
2017/10/13(金) 12:49:26.38ID:Xi3f71oh0 すげえややこしいな
コンパイラ作りたくなってきた
コンパイラ作りたくなってきた
680デフォルトの名無しさん (ドコグロ MM7d-g9Ug)
2017/10/13(金) 13:06:01.52ID:QZe0YwYUM681デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 13:09:27.27ID:UePpwGnn0 おおおおおお
ありがとうございます
なるほどねー
そういうことですか
ありがとうございます
なるほどねー
そういうことですか
682デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/13(金) 14:53:58.16ID:yVfJQeWEp //は、文字コード特有のバグがあってだな。
683デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 15:14:34.29ID:/fw1jTt60 >>678
1行コメントならもちろん//を使うが
コメントが2行以上になる可能性が否定できない場合、
毎行いちいち//が必要なのは面倒なので
/*
*/
と折り返す恰好にする
それと1行コメントは内容的に馬鹿っぽくなりやすい
なんて気持ちもちょっとある
1行コメントならもちろん//を使うが
コメントが2行以上になる可能性が否定できない場合、
毎行いちいち//が必要なのは面倒なので
/*
*/
と折り返す恰好にする
それと1行コメントは内容的に馬鹿っぽくなりやすい
なんて気持ちもちょっとある
684デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 16:31:54.32ID:UePpwGnn0 C99非準拠の環境って工場のメンテとかそんな感じっすかね
685デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/13(金) 16:50:15.81ID:UePpwGnn0686デフォルトの名無しさん (ワッチョイ e961-z1uI)
2017/10/13(金) 17:10:14.68ID:51NkmwHu0 emacsだとコメントリージョンは/*になるからだろうな。
687デフォルトの名無しさん (ワッチョイ 1993-grZD)
2017/10/13(金) 17:23:15.84ID:kwktlkZb0 >>682 の話は行の最後に \ があると次の行に継続するってやつかな。
その言語仕様と Shift-JIS の特定文字との組み合わせで問題が起きる。
「表」や「能」は文末に来る可能性が高い字でしょ。
その言語仕様と Shift-JIS の特定文字との組み合わせで問題が起きる。
「表」や「能」は文末に来る可能性が高い字でしょ。
688デフォルトの名無しさん (ワッチョイ d360-89ZN)
2017/10/13(金) 17:26:39.84ID:KnON5zi30 いまどき shift jis ですか?
689デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 17:37:27.25ID:nzA1z5Pk0 苦Cで勉強してるけど文字列がよくわからん
あれいる?
あれいる?
690デフォルトの名無しさん (ワッチョイ d360-89ZN)
2017/10/13(金) 17:43:15.33ID:KnON5zi30 >>689
どれだ?
どれだ?
691デフォルトの名無しさん (ワッチョイ fb8a-0Pb6)
2017/10/13(金) 17:43:35.67ID:z3X0WVAY0 ただの\0終端の文字型の配列を便宜的に文字列と呼んでいるだけ
692デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 17:52:09.39ID:nzA1z5Pk0 文字列処理関数
わざわざ配列に文字列入れる意味あるのか?
わざわざ配列に文字列入れる意味あるのか?
693デフォルトの名無しさん (ワッチョイ d360-89ZN)
2017/10/13(金) 17:56:53.82ID:KnON5zi30 >>692
https://9cguide.appspot.com/14-03.html
か?
入力に scanf() 系を薦めているのは古い(fgets() を使うべき)とか問題はあるが、
内容は基本的で絶対に必要なものだ
C には「文字列型」はなく文字型の配列で扱うのは基本的な了解事項だ
https://9cguide.appspot.com/14-03.html
か?
入力に scanf() 系を薦めているのは古い(fgets() を使うべき)とか問題はあるが、
内容は基本的で絶対に必要なものだ
C には「文字列型」はなく文字型の配列で扱うのは基本的な了解事項だ
694デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 18:02:19.89ID:nzA1z5Pk0695デフォルトの名無しさん (ブーイモ MMcb-13gS)
2017/10/13(金) 18:05:48.92ID:1QR3MvqoM >>692
入れないと文字処理何もできないよ
入れないと文字処理何もできないよ
696デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 18:06:49.21ID:KnON5zi30697デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 18:07:38.35ID:nzA1z5Pk0 わざわざ配列でやるのってprintfじゃ上書きできないから?
698デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 18:09:43.61ID:KnON5zi30 sprintf() というものはある
699デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/13(金) 18:26:23.09ID:D1RCmTnA0 atoi は 文字列から数値へ変換する方向
(s)printf は 数値から文字列に変換する方向
(s)printf は 数値から文字列に変換する方向
700デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/13(金) 18:46:00.32ID:nzA1z5Pk0 すまんよくわからん
まぁ配列の重要性はわかったけどさ
まぁ配列の重要性はわかったけどさ
701デフォルトの名無しさん (ワッチョイ 9123-gv9Q)
2017/10/13(金) 19:47:45.81ID:9FeTZoAH0 入力して下さい ?
? の二倍は---
っての作りたい
? の二倍は---
っての作りたい
702デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 19:53:08.82ID:/fw1jTt60 またfgets厨が湧いたか
Cスレには付きものだが
誰が吹き込んでるんだかしつこさが異常なんだよな
まったく
Cスレには付きものだが
誰が吹き込んでるんだかしつこさが異常なんだよな
まったく
703デフォルトの名無しさん (ガックシ 06eb-HijE)
2017/10/13(金) 20:16:18.00ID:qDJA92iZ6 >>701
/* -*- C -*- */
#include <stdio.h>
int main()
{
int input;
scanf("入力して下さい:%d", &input);
printf("%dの二倍は%d\n", input, input * 2);
return 0;
}
/* -*- C -*- */
#include <stdio.h>
int main()
{
int input;
scanf("入力して下さい:%d", &input);
printf("%dの二倍は%d\n", input, input * 2);
return 0;
}
704デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 20:21:21.47ID:KnON5zi30 >>702
fgets() の方が総合的にすぐれていると思うのだが
fgets() の方が総合的にすぐれていると思うのだが
705デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
2017/10/13(金) 21:08:48.11ID:/fw1jTt60 何がどのように何に対して優れているんだ?
腐っても工学者たるもの客観的で再検証可能な主張をしてみな
腐っても工学者たるもの客観的で再検証可能な主張をしてみな
706デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/13(金) 21:11:50.63ID:D1RCmTnA0 >>703
scanf はメッセージを出力したうえで値を受け取る関数じゃないんだ 残念ながら
scanf はメッセージを出力したうえで値を受け取る関数じゃないんだ 残念ながら
707デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/13(金) 21:17:30.86ID:yVfJQeWEp え?scanfは、この通り打ち込まないと認識しないよって事だろ?
708デフォルトの名無しさん (ワッチョイ 59b3-89ZN)
2017/10/13(金) 21:20:10.60ID:D1RCmTnA0 >>701 のは 入力して下さい も含めて入力を要求してたのか
こりゃ失礼
こりゃ失礼
709デフォルトの名無しさん (ワッチョイ 5975-HijE)
2017/10/13(金) 21:31:55.79ID:DZqiVJRN0 >>706
dクス
dクス
710片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/13(金) 21:37:13.63ID:aO55acrud >>701
#include <stdio.h>
int main(void)
{
int n;
char buf[32];
printf("入力して下さい:");
fgets(buf, sizeof(buf), stdin);
n = atoi(buf);
printf("%dの二倍は%d\n", n, n * 2);
return 0;
}
#include <stdio.h>
int main(void)
{
int n;
char buf[32];
printf("入力して下さい:");
fgets(buf, sizeof(buf), stdin);
n = atoi(buf);
printf("%dの二倍は%d\n", n, n * 2);
return 0;
}
711デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 21:39:30.87ID:KnON5zi30712デフォルトの名無しさん (ワッチョイ eb7f-MV6u)
2017/10/13(金) 22:15:45.85ID:xDZ8VANT0 それ都市伝説だから、単に使い方間違えてるだけだから!
フィールド幅をちゃんと指定すればscanf系でも安全だよ?
まぁ、エラーメッセージの都合上fgets使うかもだけど。。。
フィールド幅をちゃんと指定すればscanf系でも安全だよ?
まぁ、エラーメッセージの都合上fgets使うかもだけど。。。
713デフォルトの名無しさん (ワッチョイ 13cf-HoIg)
2017/10/13(金) 22:16:23.56ID:HDAg9FRW0 gets_s()やscanf_s()を使えば済む話に思えるが
714デフォルトの名無しさん (ブーイモ MM0d-edxA)
2017/10/13(金) 22:20:11.49ID:vlU7OwXLM 言いたいことは分かるなぁ
printfだって使い方間違えればフォーマットストリングで死ぬしな
printfだって使い方間違えればフォーマットストリングで死ぬしな
715デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/13(金) 22:28:05.05ID:KnON5zi30716デフォルトの名無しさん (ワッチョイ 1387-NqOW)
2017/10/13(金) 22:31:22.01ID:KDt3KwS+0 C言語はアセンブラのラッパー言語だから、そう言うもんは各自が気を付ければいいのであって、へんな関数量産すんな。
717デフォルトの名無しさん (ワッチョイ 799f-BSx0)
2017/10/14(土) 04:50:34.97ID:rkGKts9o0 scanf() は POSIX.1-2008 で m という修飾子が規定されてだな・・・
https://paiza.io/projects/que1l9qus5fMStBgkGgF9w
https://paiza.io/projects/que1l9qus5fMStBgkGgF9w
718デフォルトの名無しさん (ワッチョイ 1993-grZD)
2017/10/14(土) 05:25:15.07ID:G4fIdpwa0 m修飾子はscanf()の中でバッファの確保とポインタ代入をしてくれる、か。
使用者側がバッファを用意して容量はこれだけ、と言明するのとはちと違うね。
実用だと書式文字列をsnprintf()か何かで生成する手かなぁ。
使用者側がバッファを用意して容量はこれだけ、と言明するのとはちと違うね。
実用だと書式文字列をsnprintf()か何かで生成する手かなぁ。
719デフォルトの名無しさん (ワッチョイ f17f-BSx0)
2017/10/14(土) 06:38:32.00ID:qjmLCkqj0 実用なら動的確保で問題ねーだろ
720デフォルトの名無しさん (ワッチョイ 799f-vMUl)
2017/10/14(土) 06:44:41.93ID:YpZiBRe40 >>718
文字数制限したい場合は %3mc のように c を使うとできる。メモリ確保は相変わらず scanf() 側でやるので後で free() が必要であることには変わりがないが。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/scanf.3.html
文字数制限したい場合は %3mc のように c を使うとできる。メモリ確保は相変わらず scanf() 側でやるので後で free() が必要であることには変わりがないが。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/scanf.3.html
721デフォルトの名無しさん (ワッチョイ 0bf0-MWTH)
2017/10/14(土) 07:16:53.80ID:F19RwFTi0722デフォルトの名無しさん (ワッチョイ d360-B6a6)
2017/10/14(土) 09:37:54.97ID:wj7CJkun0 >>721
この話の発端のとあるC教育サイト
https://9cguide.appspot.com/14-03.html
では
scanf("%s");
を使っちまっている
珍獣というほどのものではないのでは?
禁じ手をやってしまう scanf() は悪
この話の発端のとあるC教育サイト
https://9cguide.appspot.com/14-03.html
では
scanf("%s");
を使っちまっている
珍獣というほどのものではないのでは?
禁じ手をやってしまう scanf() は悪
723デフォルトの名無しさん (ワッチョイ d360-qUyi)
2017/10/14(土) 12:38:59.99ID:wj7CJkun0724デフォルトの名無しさん (スッップ Sd33-sa4k)
2017/10/14(土) 12:40:09.00ID:kY4tNrcHd >>723
教義という表現に込められたいやらしさ
教義という表現に込められたいやらしさ
725デフォルトの名無しさん (ワッチョイ f17f-BSx0)
2017/10/14(土) 12:41:35.66ID:qjmLCkqj0 >>723
windowsならscanf_s使え、posixならm修飾使えで解決ってことだな
windowsならscanf_s使え、posixならm修飾使えで解決ってことだな
726デフォルトの名無しさん (ワッチョイ 799f-vMUl)
2017/10/14(土) 13:41:17.27ID:YpZiBRe40 windowsの方でもscanf()のmあるのでは?
727デフォルトの名無しさん (ワッチョイ f17f-BSx0)
2017/10/14(土) 14:15:25.78ID:qjmLCkqj0 なんでposix拡張があると思うの?
728デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/14(土) 14:56:12.00ID:VRAn8B+V0 配列って[]だったら自力でEOS入れなきゃいけないけど[]の中に数字入れると自動で入るの?
729デフォルトの名無しさん (ワッチョイ d360-qUyi)
2017/10/14(土) 15:53:03.38ID:wj7CJkun0730デフォルトの名無しさん (アウアウウー Sa1d-Qarq)
2017/10/14(土) 15:58:39.20ID:pEkiZp92a [迷信] scanf ではバッファオーバーランを防げない
http://www.kijineko.co.jp/tech/superstitions/buffer-overrun-of-scanf.html
[迷信] scanf でキーボードから入力
http://www.kijineko.co.jp/tech/superstitions/input-from-keyboard-by-scanf.html
http://www.kijineko.co.jp/tech/superstitions/buffer-overrun-of-scanf.html
[迷信] scanf でキーボードから入力
http://www.kijineko.co.jp/tech/superstitions/input-from-keyboard-by-scanf.html
731デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/14(土) 15:59:02.19ID:bKRFV+pB0 はい ちょっとお邪魔しますよ
ISR() signal() の違いについて
どちらを使うべきなのか うんちくきぼんぬですよ
ISR() signal() の違いについて
どちらを使うべきなのか うんちくきぼんぬですよ
732デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/14(土) 16:17:48.14ID:bKRFV+pB0 ↑割り込みハンドラで使う関数についての質問です
733デフォルトの名無しさん (ワッチョイ 1387-NqOW)
2017/10/14(土) 16:24:17.93ID:J5VLsuMb0 組み込み系だとmallocなんか初期化関数ん中でしか使わない。
734デフォルトの名無しさん (ワッチョイ f17f-BSx0)
2017/10/14(土) 16:32:11.89ID:qjmLCkqj0735デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/14(土) 16:42:09.10ID:bKRFV+pB0 なるほど! ありがとうございました
736デフォルトの名無しさん (ドコグロ MM63-itUa)
2017/10/14(土) 16:57:24.91ID:/3exgnU7M737デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
2017/10/14(土) 17:13:04.55ID:bKRFV+pB0 割り込みにまさかの独自ライブラリがあるとは思わなかった
>>736の参照先見ると色々なアトリビュートが設定できるようになっとるわw
その内容をみると自前で割り込み関係のレジスタ叩けば実現可能な機能ばかり
##pop/push/reti自動付加禁止だけはsignal()では実現不能?
signalでよさそうな気が。。。
>>736の参照先見ると色々なアトリビュートが設定できるようになっとるわw
その内容をみると自前で割り込み関係のレジスタ叩けば実現可能な機能ばかり
##pop/push/reti自動付加禁止だけはsignal()では実現不能?
signalでよさそうな気が。。。
738デフォルトの名無しさん (ワッチョイ f17f-BSx0)
2017/10/14(土) 17:25:11.34ID:qjmLCkqj0 ANSI Cのsignalじゃなくて、AVR拡張のSIGNALのこと言ってたの?
なら、manualでSIGNALじゃなくてISR使えってなってるよ
違いも、属性指定できるかどうかだけ
http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html#ga67cd0dea412157775c2f2a3ffe9fb8ff
なら、manualでSIGNALじゃなくてISR使えってなってるよ
違いも、属性指定できるかどうかだけ
http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html#ga67cd0dea412157775c2f2a3ffe9fb8ff
739デフォルトの名無しさん (ワッチョイ 0bf0-MWTH)
2017/10/14(土) 19:42:35.98ID:F19RwFTi0740デフォルトの名無しさん (ワッチョイ 79b3-dPak)
2017/10/14(土) 19:59:48.25ID:4XKuJznc0 クッサ
741デフォルトの名無しさん (ワッチョイ d360-qUyi)
2017/10/15(日) 02:10:37.75ID:12RNBD+40 >>739
https://qiita.com/Tsutajiro/items/a5620b17ac530cc96e87
https://ja.wikipedia.org/wiki/Scanf
http://www9.plala.or.jp/sgwr-t/c/sec05.html
http://rainbow.pc.uec.ac.jp/edu/program/b1/Ex2-1b.htm
https://stackoverflow.com/questions/2155518/what-is-scanfs-and-scanfd-format-identifiers
「scanf("%s"」とグルるだけで、バッファオーバーランの危険がある注記のない上記記事が山のようにでてくる。
おすきなだけどうぞ、このように説明の手間を省きおざなりに scanf("%s") としてその場をとりつくろい、
読んだ人間は経験が少ないため、これでもいいのか、と勘違いしてしまう例は多々ある
scanf() は悪
やるんなら、fgets() してから sscanf() だの atoi() だの strtol() だので処理するのが定石
https://qiita.com/Tsutajiro/items/a5620b17ac530cc96e87
https://ja.wikipedia.org/wiki/Scanf
http://www9.plala.or.jp/sgwr-t/c/sec05.html
http://rainbow.pc.uec.ac.jp/edu/program/b1/Ex2-1b.htm
https://stackoverflow.com/questions/2155518/what-is-scanfs-and-scanfd-format-identifiers
「scanf("%s"」とグルるだけで、バッファオーバーランの危険がある注記のない上記記事が山のようにでてくる。
おすきなだけどうぞ、このように説明の手間を省きおざなりに scanf("%s") としてその場をとりつくろい、
読んだ人間は経験が少ないため、これでもいいのか、と勘違いしてしまう例は多々ある
scanf() は悪
やるんなら、fgets() してから sscanf() だの atoi() だの strtol() だので処理するのが定石
742デフォルトの名無しさん (ワッチョイ 799f-vMUl)
2017/10/15(日) 04:40:36.84ID:aLoOQk2A0 >>727
てか、C言語のライブラリの問題なのであるともないとも言えるよな。
POSIX準拠でないCコンパイラでも同じ動きをするライブラリをリンク時または実行時にリンクするならそう動くわけだし。
WindowsでもGCCでコンパイルするならそうなるわけだし。Cygwinの中ならなおのことそうだ。
てか、C言語のライブラリの問題なのであるともないとも言えるよな。
POSIX準拠でないCコンパイラでも同じ動きをするライブラリをリンク時または実行時にリンクするならそう動くわけだし。
WindowsでもGCCでコンパイルするならそうなるわけだし。Cygwinの中ならなおのことそうだ。
743デフォルトの名無しさん (ワッチョイ 799f-BSx0)
2017/10/15(日) 05:29:35.87ID:ZgJv24or0 そう言えば fgets() も1行の長さが指定した長さ以上になった場合に入力に残るよな。
で、だいたいは妙に長いバッファ用意して誤魔化す(またはそういう仕様にするw)わけだが、
そういうのが通用しない場合はそれを上回る入力をされた時にエラーにするかまたは入力に
残った不要な文字列を捨てる処理はあった方が良い。そうでないなら GCC の getline() を
使うかまたは自作するかだ。
で、だいたいは妙に長いバッファ用意して誤魔化す(またはそういう仕様にするw)わけだが、
そういうのが通用しない場合はそれを上回る入力をされた時にエラーにするかまたは入力に
残った不要な文字列を捨てる処理はあった方が良い。そうでないなら GCC の getline() を
使うかまたは自作するかだ。
>>743
昔宿題スレで作ったけれども忘れてしまった,まあ誰しも一回はつくるものじゃないかな
昔宿題スレで作ったけれども忘れてしまった,まあ誰しも一回はつくるものじゃないかな
745デフォルトの名無しさん (ワッチョイ 13b3-itUa)
2017/10/15(日) 07:05:24.20ID:KCBqed/H0 >>743
> そう言えば fgets() も1行の長さが指定した長さ以上になった場合に入力に残るよな。
当たり前だろ
より長い入力が想定されるなら普通に改行がでてくるまで続けて読めばいいだけだし
妙に長いバッファとかアホすぎる w
> そう言えば fgets() も1行の長さが指定した長さ以上になった場合に入力に残るよな。
当たり前だろ
より長い入力が想定されるなら普通に改行がでてくるまで続けて読めばいいだけだし
妙に長いバッファとかアホすぎる w
746名無し@キムチ (ワッチョイ 09b3-Qarq)
2017/10/15(日) 08:51:39.88ID:kjrLb6gv0 フィギュアスケートアニメーション作成ソフト「振付王」公開!!
ダウンロード↓
http://www.vector.co.jp/soft/winnt/game/se516681.html
デモ動画↓
http://youtu.be/j8KjRXr7zGs
ダウンロード↓
http://www.vector.co.jp/soft/winnt/game/se516681.html
デモ動画↓
http://youtu.be/j8KjRXr7zGs
747デフォルトの名無しさん (ワッチョイ 0102-MWTH)
2017/10/15(日) 09:47:59.48ID:J//jr+AC0 はははは、やっとn=6か
で、%sさえ使わなきゃscanfは安全なのか?
で、%sさえ使わなきゃscanfは安全なのか?
749デフォルトの名無しさん (ワッチョイ d360-cyyB)
2017/10/15(日) 10:01:56.35ID:12RNBD+40750デフォルトの名無しさん (ワッチョイ f17f-BSx0)
2017/10/15(日) 10:17:19.28ID:2VM8B8DT0 %sの危険性を長々と説明しているwikipediaを挙げてるんだからギャグのつもりだろ
stackoverflowも%sではなく%*sだし、scanf使ったことないのかな?
stackoverflowも%sではなく%*sだし、scanf使ったことないのかな?
751デフォルトの名無しさん (ワッチョイ d1c7-MWTH)
2017/10/15(日) 13:38:38.59ID:R4tP3Q0h0752デフォルトの名無しさん (ワッチョイ d360-qUyi)
2017/10/15(日) 14:19:43.64ID:12RNBD+40 >>751
fgets()でとりあえず読み込むのは有力な方針だからね、まあsscanf() を後段で使うことはあるね
scanf() のチマチマした書式は必要時に追いかければいい、今調べる必要はないと思うね
>シッタカ
大局観といってほしいね
fgets()でとりあえず読み込むのは有力な方針だからね、まあsscanf() を後段で使うことはあるね
scanf() のチマチマした書式は必要時に追いかければいい、今調べる必要はないと思うね
>シッタカ
大局観といってほしいね
753デフォルトの名無しさん (ワッチョイ 794b-dPak)
2017/10/15(日) 17:10:16.88ID:/ln1Xcyy0 scanf vs fgets
もう終わり?
もう終わり?
754デフォルトの名無しさん (ワッチョイ e9c6-BSx0)
2017/10/15(日) 17:14:39.09ID:Yk/ODCzd0 くだらん戦いだ
755デフォルトの名無しさん (ワッチョイ d360-qUyi)
2017/10/15(日) 17:27:36.97ID:12RNBD+40 あおりネタがなくてごめん…
756デフォルトの名無しさん (ワッチョイ d108-MWTH)
2017/10/15(日) 19:51:17.65ID:DZC0OlhV0757デフォルトの名無しさん (ワッチョイ d360-qUyi)
2017/10/15(日) 20:51:34.80ID:12RNBD+40 scanf() の詳細仕様を把握しないと判断できない、というのはどうかな?
scanf() が初期のころから建て増し建て増しでどんどん増えていったあの方向性は、正しくない複雑化のしかただと思うよ
scanf() を書く側にたってみると、おぞましい
scanf() が初期のころから建て増し建て増しでどんどん増えていったあの方向性は、正しくない複雑化のしかただと思うよ
scanf() を書く側にたってみると、おぞましい
758デフォルトの名無しさん (ワッチョイ e9c6-BSx0)
2017/10/15(日) 21:09:03.11ID:Yk/ODCzd0 scanf()
scanf()
scanf()
scanf()
scanf()
scanf()
scanf()
scanf()
scanf()
759デフォルトの名無しさん (ワッチョイ 530f-GDEj)
2017/10/15(日) 21:13:13.74ID:Y+x8OcED0 超ド級初心者なんだけどおすすめの開発環境とかある?
760片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/15(日) 21:14:17.56ID:3VVV/TO4d >>759
Visual Studio 2017。デバッグが簡単で分かりやすい。
Visual Studio 2017。デバッグが簡単で分かりやすい。
761デフォルトの名無しさん (ワッチョイ 530f-GDEj)
2017/10/15(日) 21:17:59.72ID:Y+x8OcED0 vs2017コンパイルの仕方がわからなかった(´・ω:;.:...
762片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/15(日) 21:20:39.95ID:3VVV/TO4d >>761
プロジェクトにソースファイルを追加して、デバッグメニューからビルドを選ぶだけだぜ。
プロジェクトにソースファイルを追加して、デバッグメニューからビルドを選ぶだけだぜ。
763デフォルトの名無しさん (ワッチョイ 530f-GDEj)
2017/10/15(日) 21:22:30.69ID:Y+x8OcED0 ビルド押したんだけど反応がなかったんだ・・・
もっかい調べなおしてみる
ありがとう
もっかい調べなおしてみる
ありがとう
764デフォルトの名無しさん (ワッチョイ d108-MWTH)
2017/10/15(日) 21:51:37.18ID:DZC0OlhV0765デフォルトの名無しさん (ワッチョイ 5975-dPak)
2017/10/15(日) 21:56:59.72ID:kn6M0KEM0 >>763
プロジェクト作成しないとビルドできない
プロジェクト作成しないとビルドできない
766デフォルトの名無しさん (ワッチョイ 13d2-jnAP)
2017/10/15(日) 22:38:21.05ID:kUtdNYE20 開発環境はvim+gccだろ?
767デフォルトの名無しさん (ワッチョイ fbe7-ceAT)
2017/10/16(月) 05:28:44.80ID:6Nh3McCV0 C言語知ってたらC++簡単に扱える?
768デフォルトの名無しさん (ワッチョイ 198c-g9Ug)
2017/10/16(月) 05:48:39.32ID:imM7X4iq0 基本的に別の言語
769デフォルトの名無しさん (スップ Sd33-BnQ2)
2017/10/16(月) 06:10:08.45ID:00rzJKO2d vs2017ならフォルダを開くで
勝手にプロジェクトが作られるんじゃなかったかな
勝手にプロジェクトが作られるんじゃなかったかな
770デフォルトの名無しさん (ワッチョイ 1993-grZD)
2017/10/16(月) 06:35:40.79ID:IzFutT5/0 開発環境はvim+gcc、そしてmakeだな。
人に勧めようとは思わないけどね。
人に勧めようとは思わないけどね。
771デフォルトの名無しさん (ワッチョイ fbe7-ceAT)
2017/10/16(月) 06:42:19.28ID:6Nh3McCV0 まあ入出力でCとC++で違うのは解ってたけど本読んで書いてあったのはC++で書いて動かなかったら
最悪Cで書けば動かせるということは書いてあったな
最悪Cで書けば動かせるということは書いてあったな
772デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/16(月) 11:15:45.26ID:tZR41NVXp つか、コマンドラインアプリで文字列受け取るのは、実行時引数だけで充分だろ。
773デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/16(月) 13:10:18.09ID:IgMp2p2X0 パイプやリダイレクト
774デフォルトの名無しさん (ワッチョイ 09b3-NqOW)
2017/10/16(月) 14:21:36.48ID:JrEYnkdn0 対話型ツールなら、きちんと入力解析エンジン載せれや。
なんだよscanfってw
なんだよscanfってw
775デフォルトの名無しさん (ワッチョイ fb8a-z1uI)
2017/10/16(月) 14:22:15.72ID:QsDGIdoW0 gccのワーニングで、「declared inside parameter list」これを無視したいです。
-Wではじまるオプションはなにを指定すればよろしいですか?
#pragma GCC diagnostic ignored "-W???
-Wではじまるオプションはなにを指定すればよろしいですか?
#pragma GCC diagnostic ignored "-W???
776片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/16(月) 14:30:52.70ID:XYyvKIYbd >>775
[enabled by default]と書いてあるだろ? この警告はフラグで消せない。アホなコードを直すしかない。
[enabled by default]と書いてあるだろ? この警告はフラグで消せない。アホなコードを直すしかない。
777デフォルトの名無しさん (ワッチョイ fb8a-z1uI)
2017/10/16(月) 14:47:20.37ID:QsDGIdoW0778片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/16(月) 14:50:42.52ID:XYyvKIYbd >>777
警告は、引数リストの外側で必要なものを宣言すべきという意味だ。
警告は、引数リストの外側で必要なものを宣言すべきという意味だ。
779デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/16(月) 14:55:55.53ID:IgMp2p2X0780デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/16(月) 14:58:01.40ID:rvbv2fod0 >>775
gcc -w
gcc -w
781片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/16(月) 14:58:20.84ID:XYyvKIYbd 関数の前にstruct aho;とでも書いておけ。
782デフォルトの名無しさん (ワッチョイ fb8a-z1uI)
2017/10/16(月) 15:04:51.05ID:QsDGIdoW0783デフォルトの名無しさん (ワッチョイ c9ea-89ZN)
2017/10/16(月) 15:09:07.34ID:IgMp2p2X0 本当の定義じゃなくて 仮定義を前に置くだけで消えるのな
struct foo;
void func(struct foo* arg);
struct foo;
void func(struct foo* arg);
784sage (ワッチョイ fb8a-z1uI)
2017/10/16(月) 15:25:30.24ID:QsDGIdoW0 >>783
やはりそのように潰していくしかないのでしょうね。
やはりそのように潰していくしかないのでしょうね。
785デフォルトの名無しさん (ワッチョイ 13e1-IVl6)
2017/10/16(月) 15:43:34.17ID:rvbv2fod0 >>782
-Wで始まるオプション名は無いので無視するにはコマンドラインで-wを指定するしかない
-Wで始まるオプション名は無いので無視するにはコマンドラインで-wを指定するしかない
786デフォルトの名無しさん (ワッチョイ 799f-vMUl)
2017/10/16(月) 22:46:04.81ID:snZUUJVe0 >>784
いや、てか、そのヘッダ書き換えられないのか?
いや、てか、そのヘッダ書き換えられないのか?
787デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/16(月) 22:49:48.00ID:tZR41NVXp 自身のポインタを構造体に宣言するのと同じ様に書けよ。
788デフォルトの名無しさん (ワッチョイ 41a5-Yjam)
2017/10/16(月) 23:21:23.22ID:7Byc8Q4r0789デフォルトの名無しさん (ワッチョイ 09b3-XdBn)
2017/10/17(火) 20:18:22.83ID:Q3d5MYhb0 とりあえず勉強の成果として作ってみたら失敗した
なんでだ
#include <stdio.h>
int main(void)
{
int hyoji;
int kakikomi;
printf("階乗の表示:");
scanf("%d\n",&kakikomi);
for (hyoji = 1;kakikomi > 0;kakikomi--) {
hyoji = hyoji * kakikomi;
}
printf("結果は%dです", hyoji);
fflush(stdin);
getchar();
return 0;
}
なんでだ
#include <stdio.h>
int main(void)
{
int hyoji;
int kakikomi;
printf("階乗の表示:");
scanf("%d\n",&kakikomi);
for (hyoji = 1;kakikomi > 0;kakikomi--) {
hyoji = hyoji * kakikomi;
}
printf("結果は%dです", hyoji);
fflush(stdin);
getchar();
return 0;
}
790デフォルトの名無しさん (ガックシ 06eb-dPak)
2017/10/17(火) 20:29:18.04ID:FJCAd6676 >>789
scanfのところの\nって要らなくね
scanfのところの\nって要らなくね
791デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/17(火) 20:54:03.89ID:Usq7nzejp こんなすぐに桁溢れしちまう様なサンプル作ったら、何を試したいのかわからんだろ。
792デフォルトの名無しさん (ワッチョイ 1312-B6a6)
2017/10/17(火) 21:06:51.02ID:BSHBGdow0 しかしてfor文の中身を見るに全くの素人じゃあないな
793デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 21:08:48.81ID:Q3d5MYhb0794デフォルトの名無しさん (ワッチョイ f99e-0oEc)
2017/10/17(火) 21:24:15.93ID:0jVjcAN80 >>792
どのあたりが?
どのあたりが?
795デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
2017/10/17(火) 21:33:12.55ID:Usq7nzejp 初期化をあんなとこに書いたらコーディング規約で叩かれるしなぁ〜
796デフォルトの名無しさん (ドコグロ MM33-itUa)
2017/10/17(火) 21:46:54.15ID:fHKaWaxJM797デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 21:57:54.65ID:Q3d5MYhb0 VS2017でやってるんだがさっき作ったプログラムを保存して別のファイルで勉強を再開しようとして新しくファイルを作ったんだ
そしてテストも兼ねてさっきのプログラムコピペしたら
プリコンパイルヘッダーを検索中に不明なEOFが見つかりました。
'#include"stdafx.h"をソースに追加しましたか?
と出た
さっきは何もなかったのに
そしてテストも兼ねてさっきのプログラムコピペしたら
プリコンパイルヘッダーを検索中に不明なEOFが見つかりました。
'#include"stdafx.h"をソースに追加しましたか?
と出た
さっきは何もなかったのに
798デフォルトの名無しさん (ワッチョイ 5975-dPak)
2017/10/17(火) 22:19:31.03ID:PpmRGT3a0799片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/17(火) 22:26:24.33ID:/2LkUivAd >>797
プリコンパイルヘッダーというのは、プロジェクト内のヘッダーを事前にまとめてコンパイルしてビルドを早くする仕組みのことだ。
通常、stdafx.hというヘッダーにプロジェクトで使うヘッダーをまとめる。
一つ一つのソースファイルごとのプロパティでプリコンパイルヘッダーを作成するか、使用するかを設定できる。
プリコンパイルヘッダーというのは、プロジェクト内のヘッダーを事前にまとめてコンパイルしてビルドを早くする仕組みのことだ。
通常、stdafx.hというヘッダーにプロジェクトで使うヘッダーをまとめる。
一つ一つのソースファイルごとのプロパティでプリコンパイルヘッダーを作成するか、使用するかを設定できる。
800デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 22:30:05.39ID:Q3d5MYhb0 >>799
つまり…どういうことだってばよ
つまり…どういうことだってばよ
801デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 22:35:56.33ID:Q3d5MYhb0 ソースコード関係の知識は苦Cやらで積めるけどソフトやらの知識はどこで積むんだ
802片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/17(火) 22:36:28.37ID:/2LkUivAd プリコンパイルヘッダーを使用するのであれば、プロジェクト内のどこかのソースファイル(例えばstdafx.cpp)を使って、プリコンパイルヘッダーを作成しないといけない。
あるソースファイルにおいてプリコンパイルヘッダーを使用するのであれば、プリコンパイル対象のヘッダーを#includeして、そのソースファイルがプリコンパイルヘッダーを使用することを設定する。
プリコンパイルヘッダーを使用しないなら、すべてのソースのプロパティでプリコンパイルヘッダーを使用しないように設定する(空のプロジェクトの規定値)。
あるソースファイルにおいてプリコンパイルヘッダーを使用するのであれば、プリコンパイル対象のヘッダーを#includeして、そのソースファイルがプリコンパイルヘッダーを使用することを設定する。
プリコンパイルヘッダーを使用しないなら、すべてのソースのプロパティでプリコンパイルヘッダーを使用しないように設定する(空のプロジェクトの規定値)。
803片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/17(火) 22:39:12.15ID:/2LkUivAd ソースファイルが二、三個なら、とくにプリコンパイルヘッダーは、必要ない。
804デフォルトの名無しさん (ワッチョイ 13b3-itUa)
2017/10/17(火) 22:43:34.43ID:kMB04QqG0805片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-WP5G)
2017/10/17(火) 22:44:21.68ID:/2LkUivAd ソースファイルのプロパティは、IDE内のソースファイルのアイコンを右クリックして「プロパティ」を選ぶと設定できる。
806デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 22:59:14.26ID:Q3d5MYhb0 >>804
とりあえず空のファイルは作れたけどソースが書けん
とりあえず空のファイルは作れたけどソースが書けん
807デフォルトの名無しさん (ワッチョイ 5975-dPak)
2017/10/17(火) 23:01:36.30ID:PpmRGT3a0808デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 23:02:26.49ID:Q3d5MYhb0 >>807
空のソースコードファイルどうやって作るんだ
空のソースコードファイルどうやって作るんだ
809デフォルトの名無しさん (ワッチョイ 5975-dPak)
2017/10/17(火) 23:08:36.86ID:PpmRGT3a0 >>808
プロジェクト開いたときの右にあるソリューションエクスプローラの中のソースファイルというフォルダを右クリックして「追加」から「新しい項目」をクリック。
「C++ファイル」を選択した状態でファイル名の拡張子を.cに変えて「追加」ボタンを押す。
プロジェクト開いたときの右にあるソリューションエクスプローラの中のソースファイルというフォルダを右クリックして「追加」から「新しい項目」をクリック。
「C++ファイル」を選択した状態でファイル名の拡張子を.cに変えて「追加」ボタンを押す。
810デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 23:15:28.33ID:Q3d5MYhb0811デフォルトの名無しさん (ワッチョイ d3f9-QUVh)
2017/10/17(火) 23:17:42.23ID:nwT4mK5H0 そろそろ適切なスレに移動しようか
812デフォルトの名無しさん (ワッチョイ 5975-dPak)
2017/10/17(火) 23:18:59.07ID:PpmRGT3a0813デフォルトの名無しさん (ワッチョイ 09b3-FNzi)
2017/10/17(火) 23:21:25.70ID:Q3d5MYhb0814デフォルトの名無しさん (ワッチョイ 5975-dPak)
2017/10/17(火) 23:46:56.11ID:PpmRGT3a0 スレチかもしれないけどVS2017でANSI C(C99/98, ブロック先頭でしか宣言できないやつ)だけしかかけないようにできますか?
815デフォルトの名無しさん (ワッチョイ 7985-BSx0)
2017/10/18(水) 18:18:50.69ID:oOtBC3bP0 みなさんは関数名の後に続く中括弧の前に改行を入れますか?入れませんか?
例えば、
int main(void) {
/* 処理 */
}
のようにするか、
int main(void)
{
/* 処理 */
}
のように書くのか、どちらが多いのか気になります。
例えば、
int main(void) {
/* 処理 */
}
のようにするか、
int main(void)
{
/* 処理 */
}
のように書くのか、どちらが多いのか気になります。
816デフォルトの名無しさん (ガックシ 06eb-dPak)
2017/10/18(水) 18:20:58.46ID:M3PcmRrI6 入れます
817デフォルトの名無しさん (ワッチョイ 41a5-PxAS)
2017/10/18(水) 19:40:16.86ID:3bYwz/rX0 if ()
{
}
ならいいけど
for () {
}
だと整合性無いじゃん
って話なら気にするな
だな
{
}
ならいいけど
for () {
}
だと整合性無いじゃん
って話なら気にするな
だな
818デフォルトの名無しさん (ササクッテロラ Sp45-NqOW)
2017/10/18(水) 21:12:51.09ID:QINtBhkfp 各社のコーディング規約に合わせます。
819デフォルトの名無しさん (ドコグロ MM55-itUa)
2017/10/18(水) 21:18:46.08ID:lHCL+31VM820デフォルトの名無しさん (ワッチョイ 799f-BSx0)
2017/10/18(水) 23:24:47.06ID:bG8m3FQp0 >>815
改行入れるね。
なんでそうなったかというと、C言語は昔は引数の型をカッコ内に書けなかった。つまり
int main(argc, argv)
int argc;
char *argv[];
{
・
・
・
return 0;
}
のようにしか書けなかった。その当時から覚え始めたというのと、K&R もそれで書いて
あったのでそのまま何も考えず俺の中で改行入れるのが定着した。
改行入れるね。
なんでそうなったかというと、C言語は昔は引数の型をカッコ内に書けなかった。つまり
int main(argc, argv)
int argc;
char *argv[];
{
・
・
・
return 0;
}
のようにしか書けなかった。その当時から覚え始めたというのと、K&R もそれで書いて
あったのでそのまま何も考えず俺の中で改行入れるのが定着した。
821デフォルトの名無しさん (ワッチョイ cee7-gNqP)
2017/10/19(木) 01:30:41.79ID:gvKdwGxW0 for()
{
}
こうしたときに一行増えるから嫌だだっていう人が多そうだな
{
}
こうしたときに一行増えるから嫌だだっていう人が多そうだな
822デフォルトの名無しさん (ワッチョイ c161-U5aN)
2017/10/19(木) 07:54:32.06ID:b5KBJ9M60 それは宗教問題なので決着は付きません。
823デフォルトの名無しさん (ワッチョイ a623-0GSP)
2017/10/19(木) 09:08:44.46ID:TosC+FXp0 関数では改行して、制御構文では改行しない
みたいなオレルールにしてる
みたいなオレルールにしてる
824デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/19(木) 10:07:41.47ID:+lKpulfRp c#みたいにメソッドを直接鉤括弧内にベタ書き出来る言語でもなけりゃ先行改行一択なんだがなあ
825デフォルトの名無しさん (ワッチョイ cee7-h3yZ)
2017/10/19(木) 10:25:15.32ID:r/pcyA6+0 貴重な一行
826デフォルトの名無しさん (ガックシ 06ee-G561)
2017/10/19(木) 10:27:21.64ID:SxBqlyg46 >>824
どういう意味?
どういう意味?
827デフォルトの名無しさん (ブーイモ MM71-WXi2)
2017/10/19(木) 11:44:04.67ID:zAbDVwTYM 今みたいに時間単価での清算が主流になる前は、
ステップ単価清算ってのもあって、K&R以外で書くと
増量しているって言われていたの。
cb とか indent なんてコマンドはその名残かな
ステップ単価清算ってのもあって、K&R以外で書くと
増量しているって言われていたの。
cb とか indent なんてコマンドはその名残かな
828デフォルトの名無しさん (ワッチョイ a623-0GSP)
2017/10/19(木) 12:07:16.71ID:TosC+FXp0829デフォルトの名無しさん (ワッチョイ 1a87-dU7J)
2017/10/19(木) 12:17:59.77ID:rxi99hG50 >>823
俺もそれで落ち着いた
俺もそれで落ち着いた
830デフォルトの名無しさん (ブーイモ MM71-v1IO)
2017/10/19(木) 12:34:12.75ID:LAmWAPnYM831デフォルトの名無しさん (ワッチョイ 3dea-U5aN)
2017/10/19(木) 14:41:51.95ID:cxE3kH8I0 https://ja.wikipedia.org/wiki/字下げスタイル
戦争だ
戦争だ
832デフォルトの名無しさん (ワッチョイ ddb3-q7ul)
2017/10/19(木) 15:33:33.89ID:PsgLgPWo0 http://9cguide.appspot.com/15-05.html
これのモードの切り替えってところで判定結果違うんだが俺だけ?
pがでたらめな数字になる
コピペしても変わらなかったから多分タイプミスとかじゃないと思う
これのモードの切り替えってところで判定結果違うんだが俺だけ?
pがでたらめな数字になる
コピペしても変わらなかったから多分タイプミスとかじゃないと思う
833デフォルトの名無しさん (ワッチョイ 3dea-U5aN)
2017/10/19(木) 15:40:34.18ID:cxE3kH8I0 下の[実行結果] のように出力されるためには
× printf("p = %d\n",p);
○ printf("*p = %d\n",*p);
でないとな
× printf("p = %d\n",p);
○ printf("*p = %d\n",*p);
でないとな
834デフォルトの名無しさん (ワッチョイ ddb3-q7ul)
2017/10/19(木) 15:50:26.60ID:PsgLgPWo0 できた
ありがとう
ありがとう
835デフォルトの名無しさん (ワッチョイ cee7-gNqP)
2017/10/19(木) 22:50:52.77ID:4jVxr5CI0 10 1
scanf("%d%d", a, b);
こう読み込んだ時に空白を飛び越えて読み込んでくれるん?
10,1
この時はエラーになっちゃう?
scanf("%d%d", a, b);
こう読み込んだ時に空白を飛び越えて読み込んでくれるん?
10,1
この時はエラーになっちゃう?
836デフォルトの名無しさん (ワッチョイ c575-G561)
2017/10/19(木) 22:53:39.25ID:Y4NllfOF0 多分空白はできる
,を入れたかったら%d,%dすれば多分できる
,を入れたかったら%d,%dすれば多分できる
837デフォルトの名無しさん (ワッチョイ 19a5-FNU/)
2017/10/19(木) 23:25:36.20ID:6TDKNKTM0 scanfのフォーマット指定は面倒だぞ
正直使いこなす気すらない
正直使いこなす気すらない
838デフォルトの名無しさん (ワッチョイ 19a5-FNU/)
2017/10/19(木) 23:26:22.86ID:6TDKNKTM0 if ()
{
}
else
{
}
無いわな
{
}
else
{
}
無いわな
839デフォルトの名無しさん (ワッチョイ 1981-bcII)
2017/10/19(木) 23:41:36.02ID:c1L92+Tr0 if () {
}
else {
}
このフォーマットだと心が平和
}
else {
}
このフォーマットだと心が平和
840デフォルトの名無しさん (ワッチョイ a568-OJdz)
2017/10/19(木) 23:52:20.12ID:vx5pXf0B0841デフォルトの名無しさん (ワッチョイ cee7-gNqP)
2017/10/20(金) 00:41:34.11ID:Wby94Fq80 >>837
入力が決められてなかったらscanfじゃあできないからわかるわー
入力が決められてなかったらscanfじゃあできないからわかるわー
842デフォルトの名無しさん (ワッチョイ 1a87-dU7J)
2017/10/20(金) 01:19:37.06ID:l11teSHI0 >>839
俺もそれ
俺もそれ
843デフォルトの名無しさん (スッップ Sd9a-+59V)
2017/10/20(金) 04:37:42.47ID:yDlUYSKqd844デフォルトの名無しさん (エーイモ SE7a-5x7G)
2017/10/20(金) 09:24:11.93ID:NCAWbF0uE 本買うお金がないのですが公式なドキュメントってどこで見れますかね?
845デフォルトの名無しさん (ワッチョイ ddb3-0MKJ)
2017/10/20(金) 09:53:04.65ID:VprmOZRL0 >>1に書いてあるのではだめなん。
846デフォルトの名無しさん (ワッチョイ d6e8-bcII)
2017/10/20(金) 09:58:32.79ID:rxHA3C970 質問が漠然としすぎてる。
847デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/20(金) 10:55:02.73ID:7oD3lqB2p C言語の仕様は規格が決まってるから、調べれば幾らでもネットに落ちてるんだがなぁ〜
848デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/20(金) 10:56:41.44ID:7oD3lqB2p ランタイムライブラリやプラグマやデファインの事なら使ってるコンパイラにドキュメントがあるだろ?
849デフォルトの名無しさん (ワッチョイ 8dd2-U5aN)
2017/10/20(金) 12:36:54.91ID:XMzxe3/+0 ネスティングを気にするかどうかは各自のスタイルによる
気にならない書き方はいくらでもできるし
ファイル分割がいやでべた書きする奴はネスティング気にするだろ
気にならない書き方はいくらでもできるし
ファイル分割がいやでべた書きする奴はネスティング気にするだろ
850デフォルトの名無しさん (ガックシ 06ee-G561)
2017/10/20(金) 12:40:39.31ID:3KJGg1dF6 どう思う?
#include <stdio.h>
void test(a, b, c)
int *a;
int *b;
int *c;
{
*c = *a + *b;
}
int main(void)
{
auto register int a;
auto register int b;
auto register int result;
a = 10;
b = 32;
test(&a, &b, &result);
printf("%d + %d = %d\n", a, b, result);
return 0;
}
#include <stdio.h>
void test(a, b, c)
int *a;
int *b;
int *c;
{
*c = *a + *b;
}
int main(void)
{
auto register int a;
auto register int b;
auto register int result;
a = 10;
b = 32;
test(&a, &b, &result);
printf("%d + %d = %d\n", a, b, result);
return 0;
}
851デフォルトの名無しさん (ワッチョイ 8dd2-U5aN)
2017/10/20(金) 12:43:18.91ID:XMzxe3/+0 ネスティングが浅い記述しか書かない奴にとってはどうでも良い案件なんですよ
技術計算を多用するコード例だとネスティングちゃんとしないと分けがわからなくなる
技術計算を多用するコード例だとネスティングちゃんとしないと分けがわからなくなる
852デフォルトの名無しさん (アウーイモ MM89-3GPW)
2017/10/20(金) 17:02:28.07ID:Hcn/q6HeM なんで配列の要素数って省略してもいいのですか?
853デフォルトの名無しさん (ワッチョイ a593-+4Iz)
2017/10/20(金) 17:49:45.76ID:vESwnO6R0 >>852 どの場面での話かな?
854デフォルトの名無しさん (ワッチョイ a623-0GSP)
2017/10/20(金) 17:51:51.23ID:w9jbL0YF0855デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/20(金) 17:57:17.39ID:7oD3lqB2p 配列は何次元でも扱える代わりに中身の管理は利用者に一任されたんだ。
856デフォルトの名無しさん (アウーイモ MM89-3GPW)
2017/10/20(金) 18:16:01.46ID:Hcn/q6HeM857デフォルトの名無しさん (ガックシ 06ee-G561)
2017/10/20(金) 18:42:47.35ID:3KJGg1dF6 >>856
初期化無しの宣言とか?
初期化無しの宣言とか?
858デフォルトの名無しさん (ワッチョイ 1a87-dU7J)
2017/10/20(金) 20:01:48.14ID:l11teSHI0859デフォルトの名無しさん (ワッチョイ 559f-0GSP)
2017/10/21(土) 02:37:55.69ID:xu+p9cdr0860デフォルトの名無しさん (ワッチョイ a593-+4Iz)
2017/10/21(土) 07:38:47.06ID:KIdTQfIK0 >>850 すごく… 古くさいです…
それはともかく register 宣言した変数は
アドレス取ろうとした時点でコンパイルエラーじゃなかったかな?
あと俺の環境では auto と register の同時指定がダメと言われる。
古いコンパイラだとどっちも許されるんだっけ。
それはともかく register 宣言した変数は
アドレス取ろうとした時点でコンパイルエラーじゃなかったかな?
あと俺の環境では auto と register の同時指定がダメと言われる。
古いコンパイラだとどっちも許されるんだっけ。
861デフォルトの名無しさん (ワッチョイ 317f-0GSP)
2017/10/21(土) 08:06:44.87ID:Q5TWqxQz0 実装は知らんが、言語仕様だと昔からstorage classの指定は1つだけ
862デフォルトの名無しさん (ワッチョイ 4e8a-JMxd)
2017/10/21(土) 08:49:05.01ID:TZDyO3Kt0 registerは可能ならばレジスタに割り当てると言う意味なので、アドレス演算子を使えばレジスタに割り当てられない
利用可能なレジスタ数を超えてregisterが使われうる可能性を考えれば明らか
autoとも併用できないし、半可通としか言いようがない
利用可能なレジスタ数を超えてregisterが使われうる可能性を考えれば明らか
autoとも併用できないし、半可通としか言いようがない
863デフォルトの名無しさん (ブーイモ MM71-Jp9u)
2017/10/21(土) 09:07:38.36ID:1UmE9CdHM >>862
それC++限定じゃね?
それC++限定じゃね?
864デフォルトの名無しさん (ワッチョイ 4e8a-JMxd)
2017/10/21(土) 09:44:36.79ID:TZDyO3Kt0 >>863
言いがかりをつけたいなら「規格書のxxにこう書いてある」と調べてからつけろ
言いがかりをつけたいなら「規格書のxxにこう書いてある」と調べてからつけろ
865デフォルトの名無しさん (ワッチョイ 7ab3-RYXs)
2017/10/21(土) 09:55:57.60ID:fkuXV6f/0 C++のautoは別の話
866デフォルトの名無しさん (ブーイモ MM71-Jp9u)
2017/10/21(土) 10:41:15.21ID:1UmE9CdHM867デフォルトの名無しさん (ワッチョイ 7ad2-9nkm)
2017/10/21(土) 10:46:45.41ID:KlHNvq3I0 仕事で5年くらいMATLABやってたけど来月からC言語やらなあかん
難しそうで、もうイヤイヤ期よ
C なんて10年くらい前に大学の講義でチョロチョロってやっただけ
応援メッセージ待ってます!
(´;ω;`)
難しそうで、もうイヤイヤ期よ
C なんて10年くらい前に大学の講義でチョロチョロってやっただけ
応援メッセージ待ってます!
(´;ω;`)
868デフォルトの名無しさん (ワッチョイ 6dc3-Ja3g)
2017/10/21(土) 10:51:19.46ID:sVexF7NP0 がんぱれ
869デフォルトの名無しさん (ワッチョイ 7ab3-RYXs)
2017/10/21(土) 11:33:55.75ID:fkuXV6f/0870デフォルトの名無しさん (ワッチョイ 317f-0GSP)
2017/10/21(土) 11:38:57.68ID:Q5TWqxQz0 >>864
規格書の
6.5.3.2 Address and indirection operators
に
The operand of the unary & operator shall be either a function designator, the result of a [] or unary * operator, or an lvalue that designates an object that is not a bit-field and is not declared with the register storage-class specifier.
こう書いてある
規格書の
6.5.3.2 Address and indirection operators
に
The operand of the unary & operator shall be either a function designator, the result of a [] or unary * operator, or an lvalue that designates an object that is not a bit-field and is not declared with the register storage-class specifier.
こう書いてある
871デフォルトの名無しさん (ワッチョイ 317f-0GSP)
2017/10/21(土) 11:53:08.06ID:Q5TWqxQz0 K&Rの1stでも
the address-of operator & cannot be applied to them.
って書いてあるよ
the address-of operator & cannot be applied to them.
って書いてあるよ
872デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/21(土) 12:04:46.13ID:VJktQUPlp 俺にはレジスタ変数に割り当てた変数を関数のアドレス渡し引数にする意図が想像できない。
そんなにオーバーヘッド気になるなら、グローバル変数でレジスタ変数宣言してしまえって思う。
そんなにオーバーヘッド気になるなら、グローバル変数でレジスタ変数宣言してしまえって思う。
873デフォルトの名無しさん (ワッチョイ 317f-0GSP)
2017/10/21(土) 12:12:52.67ID:Q5TWqxQz0 >>872
外部宣言にregisterは使えないぞ
外部宣言にregisterは使えないぞ
874デフォルトの名無しさん (ワッチョイ 19a5-FNU/)
2017/10/21(土) 12:18:48.95ID:Hb3Ud/Wn0 オーバーヘッド気にしてたらコンテキストスイッチングとかどうすんだ?
875デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/21(土) 12:43:51.25ID:VJktQUPlp じゃあそんなクリティカルな問題無い様に、関数化する事自体を諦めた方がいいのでは?
876デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/21(土) 12:46:37.26ID:VJktQUPlp ヘッダーファイルにインライン宣言した関数を記述してしまうって解決方法もあるよな?
877デフォルトの名無しさん (ワッチョイ 7ab3-RYXs)
2017/10/21(土) 12:55:25.34ID:fkuXV6f/0 >>873
さすがにネタだろ
さすがにネタだろ
878デフォルトの名無しさん (ワッチョイ 7ad2-9nkm)
2017/10/21(土) 18:44:07.64ID:KlHNvq3I0879デフォルトの名無しさん (ワッチョイ 7ab3-RYXs)
2017/10/21(土) 20:20:57.18ID:fkuXV6f/0 >>878
register関係は爺の昔話だから無視していい
register関係は爺の昔話だから無視していい
880デフォルトの名無しさん (ワッチョイ f9d6-1OZr)
2017/10/21(土) 20:38:07.37ID:LO7dvffl0 グローバル変数をregister指定できたり楽しかったなあ
881デフォルトの名無しさん (ワッチョイ 7a87-DwBb)
2017/10/21(土) 20:48:45.74ID:S+Fuo4jD0 いや、指定しても実際効果あるか無いかってだけだからなぁ
882デフォルトの名無しさん (ワイモマー MM89-f3zB)
2017/10/21(土) 21:14:54.66ID:sahtjmhqM >>878
ネットのプログラミング自習動画見てみたら?
ネットのプログラミング自習動画見てみたら?
883デフォルトの名無しさん (ワッチョイ cee7-gNqP)
2017/10/21(土) 23:00:30.68ID:qfiVibk/0 10年前にC言語覚えたなC#もないopenGL作る時も基礎が出来てない白紙から打ち込んでたから凄い大変だったのを思い出したわ
884デフォルトの名無しさん (ワッチョイ a593-+4Iz)
2017/10/22(日) 05:28:16.50ID:m20yJ7cw0 register宣言とアドレス演算子の話だけど、
Cではエラー、C++だとアドレスを取れる(register指定は無視される)、みたいね。
望洋さんのファックとWikipediaのC++に出てたわ。
…実は逆に覚えててね。
レジスタに割り当てた変数の変数のアドレスが欲しいってのは矛盾してるから、
C++は厳格にチェックするかと。
Cではエラー、C++だとアドレスを取れる(register指定は無視される)、みたいね。
望洋さんのファックとWikipediaのC++に出てたわ。
…実は逆に覚えててね。
レジスタに割り当てた変数の変数のアドレスが欲しいってのは矛盾してるから、
C++は厳格にチェックするかと。
885名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ a127-1OZr)
2017/10/22(日) 07:11:33.28ID:dj2Vz85u0886名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ fa12-bcII)
2017/10/22(日) 11:32:38.17ID:r2h/pPG10 レジスタってメモリ番地をもってるのか?
持ってない番外地なんじゃねえの?
持ってない番外地なんじゃねえの?
887名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ daf9-3CFD)
2017/10/22(日) 11:38:07.26ID:rLWliBun0 >>886
そうだよ。そこは誰も疑問に思ってない。
そうだよ。そこは誰も疑問に思ってない。
888名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 7a87-DwBb)
2017/10/22(日) 12:31:48.51ID:NaoIEEjs0 世の中には、レジスタがメモリーの先頭と同じ位置にマッピングされてるCPUだってあるけどな。
889名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 3a23-0GSP)
2017/10/22(日) 13:39:13.59ID:f5TzHp7R0 質問です。ポインタ変数を用いてキーボードから入力された5つの整数を配列xに保存し、その要素の列挙と合計値を求めるプログラムを作ったのですが、
#include <stdio.h>
#include <stdlib.h>
int main (void){
int *p,x[4],sum=0,i,j;
p=&x[0];
for(i=0;i<=4;i++){
printf("%dつ目の整数を入力してください ",i+1);
scanf("%d",p);
sum=sum+*p; }
for(j=0;j<=4;j++){
printf("%d ",*(p+j));} /*配列の要素を列挙*/
printf("\n和=%d",sum); /*配列の要素の和*/
return 0;}
で、結果が
1つ目の整数を入力してください 1
2つ目の整数を入力してください 2
3つ目の整数を入力してください 3
4つ目の整数を入力してください 4
5つ目の整数を入力してください 5
5 4200864 6422368 4200955 6422288
和=15
となり、要素の列挙がうまくいかないので対策を教えていただきたいです。
#include <stdio.h>
#include <stdlib.h>
int main (void){
int *p,x[4],sum=0,i,j;
p=&x[0];
for(i=0;i<=4;i++){
printf("%dつ目の整数を入力してください ",i+1);
scanf("%d",p);
sum=sum+*p; }
for(j=0;j<=4;j++){
printf("%d ",*(p+j));} /*配列の要素を列挙*/
printf("\n和=%d",sum); /*配列の要素の和*/
return 0;}
で、結果が
1つ目の整数を入力してください 1
2つ目の整数を入力してください 2
3つ目の整数を入力してください 3
4つ目の整数を入力してください 4
5つ目の整数を入力してください 5
5 4200864 6422368 4200955 6422288
和=15
となり、要素の列挙がうまくいかないので対策を教えていただきたいです。
890名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 7ad2-eNpY)
2017/10/22(日) 13:49:53.88ID:rI45lLhS0 そりゃ最初に p に代入した同じ入れ物に入力値を保存してるからね。
++p とかしてみたら?
++p とかしてみたら?
891名無しさん@そうだ選挙に行こう! Go to vote! (ササクッテロラ Sp85-DwBb)
2017/10/22(日) 13:55:57.90ID:pqhboyRRp 素直に配列使え。
892名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ a593-+4Iz)
2017/10/22(日) 14:15:34.40ID:m20yJ7cw0 scanf() での値の格納先 (== sumに加える値の参照先) である p を
初期化時の &x[0] のまま進めてないから入力した値が上書きされるんだよ。
もちろん x[1], x[2], ... には値が入らない。
質問の趣旨と関係ない部分を指摘して混乱させるつもりはないんだけど、
配列 x[] の要素数が足りないのがオジさん気になるなぁ。
初期化時の &x[0] のまま進めてないから入力した値が上書きされるんだよ。
もちろん x[1], x[2], ... には値が入らない。
質問の趣旨と関係ない部分を指摘して混乱させるつもりはないんだけど、
配列 x[] の要素数が足りないのがオジさん気になるなぁ。
893名無しさん@そうだ選挙に行こう! Go to vote! (アウアウウー Sa89-PVu7)
2017/10/22(日) 15:12:18.96ID:2+N8xzsVa >>889
既に>>890-892が指摘済みだけど
#include <stdio.h>
#include <stdlib.h>
int main (void){
int *p,x[5],sum=0,i,j; /* x[5] */
p = x;
for(i = 0;i <= 4; i++, p++){
printf("%dつ目の整数を入力してください ",i+1);
scanf("%d", p);
sum += *p;
}
p = x; /* ポインタの参照位置を配列先頭へ */
for(j = 0; j <= 4; j++){
printf("x[%d]=%d, ", j, *(p+j) );
}/*配列の要素を列挙*/
printf("\n和=%d\n ",sum); /*配列の要素の和*/
return 0;
}
既に>>890-892が指摘済みだけど
#include <stdio.h>
#include <stdlib.h>
int main (void){
int *p,x[5],sum=0,i,j; /* x[5] */
p = x;
for(i = 0;i <= 4; i++, p++){
printf("%dつ目の整数を入力してください ",i+1);
scanf("%d", p);
sum += *p;
}
p = x; /* ポインタの参照位置を配列先頭へ */
for(j = 0; j <= 4; j++){
printf("x[%d]=%d, ", j, *(p+j) );
}/*配列の要素を列挙*/
printf("\n和=%d\n ",sum); /*配列の要素の和*/
return 0;
}
894名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 3a23-0GSP)
2017/10/22(日) 15:20:05.53ID:f5TzHp7R0 大学で勉強し始めたばかりなので全然で…
みなさんありがとうございました。
みなさんありがとうございました。
895名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 7a87-DwBb)
2017/10/22(日) 15:27:37.67ID:NaoIEEjs0 まあ、なんでポインタに拘るのかわからんが、
つうか、書きと読みでアクセス方法は合わせた方がいいと思うが、
動きゃいいかw
つうか、書きと読みでアクセス方法は合わせた方がいいと思うが、
動きゃいいかw
896名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ daf9-3CFD)
2017/10/22(日) 15:34:28.08ID:rLWliBun0 学習をし始めた頃は敢えてポインタを使っていろんな書き方を試してみるのもいいと思う。
数をこなすうちに自然とよい書き方に気づくと思う。
数をこなすうちに自然とよい書き方に気づくと思う。
897名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ cee7-h3yZ)
2017/10/22(日) 16:41:26.75ID:iiKpFSsu0 起動の度に外部ファイルで変数の初期値を変えて起動したいんだけどどうすんの?
898名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ a58c-REa2)
2017/10/22(日) 16:53:41.42ID:utzmEkdP0 外部ファイルを読んで変数に代入する
899名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ cee7-h3yZ)
2017/10/22(日) 17:06:30.45ID:iiKpFSsu0 外部ファイルに変数名と初期値を書いておきたい
900名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 6dc3-Ja3g)
2017/10/22(日) 17:11:49.57ID:Qdw/5tAf0 環境依存だし基本的に無理
バッチなりシェルスクリプトに記述しといてコマンドライン引数で渡す方が建設的
バッチなりシェルスクリプトに記述しといてコマンドライン引数で渡す方が建設的
901名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ a593-+4Iz)
2017/10/22(日) 18:05:00.75ID:m20yJ7cw0 ソースに書いてない変数を実行時に導入したいってのとは違うんでないか?
あらかじめ外部ファイルで値を設定できる変数は決まっていて、
要するにリソースファイルみたいな使い方をしたいのかも知れん。
fscanf(fp, "%s=%d\n", varname, &varval);
if (strcmp(varname, "width") == 0) {
width = varval;
} else if (strcmp(varname, "height") == 0) {
height = varval;
} else {
fprintf(stderr, "cannot use variable '%s'\n", varname);
}
みたいな感じ?
この場で書いてるから洗練されてないし、動くか怪しいけど。
あらかじめ外部ファイルで値を設定できる変数は決まっていて、
要するにリソースファイルみたいな使い方をしたいのかも知れん。
fscanf(fp, "%s=%d\n", varname, &varval);
if (strcmp(varname, "width") == 0) {
width = varval;
} else if (strcmp(varname, "height") == 0) {
height = varval;
} else {
fprintf(stderr, "cannot use variable '%s'\n", varname);
}
みたいな感じ?
この場で書いてるから洗練されてないし、動くか怪しいけど。
902名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 7a87-DwBb)
2017/10/22(日) 18:08:18.57ID:NaoIEEjs0 人が読み書きしない前提なら、構造体の領域をまるまんま読み書きしてしまえば楽だぜ。
903名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 5581-/wYC)
2017/10/22(日) 18:09:51.31ID:4HKeVMJe0 動作時に殆ど変えない値ならファイルで良いかもしれないが
起動の都度値を変化させたいなら、コマンドラインの方が良いぞ
起動の都度値を変化させたいなら、コマンドラインの方が良いぞ
904901 (ワッチョイ a593-+4Iz)
2017/10/22(日) 18:29:59.97ID:m20yJ7cw0 >>901 で使った「リソースファイル」って言葉は曖昧だったね。
「設定ファイル」の方が通りがよかったかも。
皆さん文脈から分かってくれると思うけど、
VisualStudio なんかで別の意味で使う言葉だし。
「設定ファイル」の方が通りがよかったかも。
皆さん文脈から分かってくれると思うけど、
VisualStudio なんかで別の意味で使う言葉だし。
905名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 812d-OJdz)
2017/10/22(日) 18:44:14.78ID:IdeA6XVs0 「鶏を割くに焉んぞ牛刀を用いん」とも言えるけど
json,yaml,tomlなんかの読み込みライブラリ使うとか
Lua,Pythonを組み込むとかも一応回答としてはありかもね
json,yaml,tomlなんかの読み込みライブラリ使うとか
Lua,Pythonを組み込むとかも一応回答としてはありかもね
906デフォルトの名無しさん (スプッッ Sd7a-+59V)
2017/10/22(日) 20:27:33.99ID:Cn2ZDyn4d907デフォルトの名無しさん (ワッチョイ 7a8a-WXi2)
2017/10/22(日) 20:32:16.01ID:EROQgIiX0908デフォルトの名無しさん (ワッチョイ a108-1OZr)
2017/10/22(日) 21:19:51.70ID:bXoG3HvV0 メインフレームでDIAGNOSEを使うときなんか
WCSのアドレスを指定とかね
WCSのアドレスを指定とかね
909デフォルトの名無しさん (ワッチョイ 8dd2-U5aN)
2017/10/23(月) 01:07:16.21ID:mBA7Qm4F0 スタック変数いらねえな
グローバル変数で性能追求しようぜ
グローバル変数で性能追求しようぜ
910デフォルトの名無しさん (ワッチョイ a58c-REa2)
2017/10/23(月) 01:22:42.10ID:gdiUlDLR0 6502のゼロページが全部レジスタだと思い込んでるような記述がたまにあるけど
普通にメモリだよ
普通にメモリだよ
911デフォルトの名無しさん (ワッチョイ 8dd2-U5aN)
2017/10/23(月) 01:37:37.69ID:mBA7Qm4F0 オペランドを8bitに限定してコード効率上げるってのがゼロページの発想でしょ
メモリ素子が高価な時代の涙ぐましい仕組みのひとつ
メモリ素子が高価な時代の涙ぐましい仕組みのひとつ
912デフォルトの名無しさん (ワッチョイ 5581-/wYC)
2017/10/23(月) 01:46:50.56ID:EhEnOqp90 CPUの一時キャッシュメモリをレジスタ変数に割り当てる方が速いんじゃないか?
913デフォルトの名無しさん (ワッチョイ a593-+4Iz)
2017/10/23(月) 05:14:49.57ID:u4PJ0rqa0914デフォルトの名無しさん (ワッチョイ ddb3-0GSP)
2017/10/23(月) 05:45:57.83ID:iFI38Dlw0 %%%%1000%%%%
000-[HUM%58*73.1\%]/2I/3NM/61.3SNMK%?%3%51.22222222222221%
001-[[[%6/4$17.6135412α3]]]]+DOM+SIL+7%
002-UML7%[61.2[31.5[!%32∂LM17.36%!16.3!%<<<%!HSTOL7%!Q!S!=3m=<2TOL<3Q9A<2.1GHz%,DOK,HAOARA,
003-[[[HEMLOT47[<\41.2%Q,===>[MLS<DPNO<\2.3>#ESOLA!5%!3MLA!>LTOSA>7TONSA>%>%end
000-[HUM%58*73.1\%]/2I/3NM/61.3SNMK%?%3%51.22222222222221%
001-[[[%6/4$17.6135412α3]]]]+DOM+SIL+7%
002-UML7%[61.2[31.5[!%32∂LM17.36%!16.3!%<<<%!HSTOL7%!Q!S!=3m=<2TOL<3Q9A<2.1GHz%,DOK,HAOARA,
003-[[[HEMLOT47[<\41.2%Q,===>[MLS<DPNO<\2.3>#ESOLA!5%!3MLA!>LTOSA>7TONSA>%>%end
915デフォルトの名無しさん (ワッチョイ 19a5-FNU/)
2017/10/23(月) 17:06:19.86ID:WoZMAj8B0 ルネサスRXなんかもレジスタがメモリマップされてるな
アクセス禁止領域だけど
アクセス禁止領域だけど
916デフォルトの名無しさん (フリッテル MM5e-q5Ly)
2017/10/23(月) 19:08:39.57ID:Ob3tZ8JSM SFRと汎用レジスタの区別が出来ない奴
917デフォルトの名無しさん (ワッチョイ 7a87-DwBb)
2017/10/23(月) 19:25:26.97ID:nagTo3YF0 >>915
そこって、デバッガがCPUレジスタ参照する為の窓だから、プログラムがその領域指すと、デバッグが困難になるから禁止してるんじゃね?
そこって、デバッガがCPUレジスタ参照する為の窓だから、プログラムがその領域指すと、デバッグが困難になるから禁止してるんじゃね?
918デフォルトの名無しさん (ワッチョイ 7a87-DwBb)
2017/10/23(月) 19:29:22.87ID:nagTo3YF0 デバッガー専用の作業メモリー領域もプログラムから使用禁止だったりするだろ?
919デフォルトの名無しさん (ワッチョイ c575-G561)
2017/10/23(月) 19:30:14.37ID:HemzWECS0 レクサスRXに見えた
920デフォルトの名無しさん (ワッチョイ 19a5-FNU/)
2017/10/23(月) 20:21:25.70ID:WoZMAj8B0 >>917
その通りだと思うよ
その通りだと思うよ
921デフォルトの名無しさん (ワッチョイ 19a5-FNU/)
2017/10/23(月) 20:22:52.11ID:WoZMAj8B0 >>916
sfrをアクセス禁止領域に置いてどーすんだよw
sfrをアクセス禁止領域に置いてどーすんだよw
922デフォルトの名無しさん (ワッチョイ 7a87-DwBb)
2017/10/23(月) 20:30:23.77ID:nagTo3YF0923デフォルトの名無しさん (ワッチョイ 7a87-DwBb)
2017/10/23(月) 20:37:44.96ID:nagTo3YF0 あ、レス間違えたわw
924デフォルトの名無しさん (ワッチョイ ce9f-ZHsf)
2017/10/24(火) 03:02:06.36ID:75BFZUbG0 int i=1,n
n=i/2*2
n=0になる理由教えてください
n=i/2*2
n=0になる理由教えてください
925デフォルトの名無しさん (ワッチョイ a568-OJdz)
2017/10/24(火) 03:50:48.19ID:senjN+vb0 int型は小数が扱えないので0方向に丸められる
926デフォルトの名無しさん (ワッチョイ fa7c-OFe0)
2017/10/24(火) 05:57:30.66ID:2rmlfNW20927デフォルトの名無しさん (ワッチョイ 6d76-tDmH)
2017/10/24(火) 06:48:50.75ID:kt50Dt6N0 負の除算の丸め方は処理系依存
928デフォルトの名無しさん (ワッチョイ c5b3-U5aN)
2017/10/24(火) 07:33:37.46ID:VjHIGh6G0 左結合で i/2 の後に *2 が処理される
整数どおしの除算なので丸めが発生
丸めた値に 乗算が行われる
整数どおしの除算なので丸めが発生
丸めた値に 乗算が行われる
929デフォルトの名無しさん (ワッチョイ ce9f-ZHsf)
2017/10/24(火) 07:45:07.35ID:75BFZUbG0 おおおお!
なるほど!ありがとうございます!
なるほど!ありがとうございます!
930デフォルトの名無しさん (ワッチョイ c5eb-cn1a)
2017/10/24(火) 12:07:36.73ID:SPAXueit0 int func(int) は、引数が int 型で、int 型の値を返す関数
int func(void) は、引数が無しで、int 型の値を返す関数
というのは分かったのですが
int func() のように () の中が空の場合は、どうゆう意味になりますか?
int func(void) と同じ?
int func(void) は、引数が無しで、int 型の値を返す関数
というのは分かったのですが
int func() のように () の中が空の場合は、どうゆう意味になりますか?
int func(void) と同じ?
931デフォルトの名無しさん (ガックシ 06ee-G561)
2017/10/24(火) 12:12:42.21ID:b8RDVE7X6932デフォルトの名無しさん (ワッチョイ c5eb-cn1a)
2017/10/24(火) 12:24:20.33ID:SPAXueit0 わかりました、ありがとうございます
933デフォルトの名無しさん (ワッチョイ 4e8a-JMxd)
2017/10/24(火) 12:51:09.78ID:k+hUXLmG0 >>931
包茎手術じゃなくて脱毛で良かったな
包茎手術じゃなくて脱毛で良かったな
934デフォルトの名無しさん (ワッチョイ 8dd2-U5aN)
2017/10/24(火) 13:44:26.08ID:/a/Ldfbw0 DMAでも使うならともかく
レジスタをメモリ空間にマッピングする利点なんてないだろ
レジスタをメモリ空間にマッピングする利点なんてないだろ
935デフォルトの名無しさん (ワントンキン MM8a-WXi2)
2017/10/24(火) 13:58:10.44ID:48RRVnNoM PCI以降DMAでデータ転送なんてのは無い。
あるのはバースト転送モードだ。
当然、転送に必要なレジスタはメモリにマッピングされている。
あるのはバースト転送モードだ。
当然、転送に必要なレジスタはメモリにマッピングされている。
936デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/24(火) 14:14:56.50ID:gWGoT/ywp >>934
むしろデメリットさえあるな。だからデバッガが使う以外は利用されてないだろ?
むしろデメリットさえあるな。だからデバッガが使う以外は利用されてないだろ?
937デフォルトの名無しさん (ワッチョイ cee7-h3yZ)
2017/10/24(火) 14:24:36.56ID:fybDUnFS0 ふふ、トヨ〇の要求。今は知らん。
938デフォルトの名無しさん (ガックシ 06ee-G561)
2017/10/24(火) 16:20:50.45ID:b8RDVE7X6 まだやってたのかよレジスタ
939デフォルトの名無しさん (ササクッテロラ Sp85-DwBb)
2017/10/24(火) 18:07:58.27ID:gWGoT/ywp 内部レジスタと外部レジスタは意味がまるっきり違うんだがなぁ
940デフォルトの名無しさん (ワッチョイ 5581-/wYC)
2017/10/24(火) 18:48:56.59ID:ffssQfLj0 >>939
二重帳簿やっているように聞こえる
二重帳簿やっているように聞こえる
941デフォルトの名無しさん (ワッチョイ 559f-0GSP)
2017/10/25(水) 01:31:11.21ID:a9TiLHl10 >>930
同じなんだけどコンパイル時の引数チェックをしなくなる。
int func(void) の関数に対して func(123) みたいにして呼ぶとコンパイルエラーだが
int func() の関数に対して func(123) で呼び出す記述があってもエラーにならない。
なんでこうなっているのかというと、昔のCにはvoidがなくて引数なしの関数は
int func() のように書くしか方法がなく、尚且つ昔のC言語は引数のチェックを
していなかったため。つまり過去のC言語ソースをコンパイルできるようにする
ためにこのような記述が残されている。今となっては余程の事がない限りこんな
書き方はしない方が良い。バグの元だ。
同じなんだけどコンパイル時の引数チェックをしなくなる。
int func(void) の関数に対して func(123) みたいにして呼ぶとコンパイルエラーだが
int func() の関数に対して func(123) で呼び出す記述があってもエラーにならない。
なんでこうなっているのかというと、昔のCにはvoidがなくて引数なしの関数は
int func() のように書くしか方法がなく、尚且つ昔のC言語は引数のチェックを
していなかったため。つまり過去のC言語ソースをコンパイルできるようにする
ためにこのような記述が残されている。今となっては余程の事がない限りこんな
書き方はしない方が良い。バグの元だ。
942デフォルトの名無しさん (ワッチョイ cee7-LaKm)
2017/10/25(水) 15:47:29.67ID:Ls3qnFv30 ヤフー知恵袋って色んな奴がC言語勉強してるやつがいるな、素人みたいな質問やら専門的な質問や大学の問題の質問やらのプログラミング質問が
943デフォルトの名無しさん (ワッチョイ 51c9-aYWJ)
2017/10/25(水) 17:13:54.92ID:3egWGIK90944デフォルトの名無しさん (ワッチョイ d681-0GSP)
2017/10/25(水) 18:14:39.48ID:2J1yyAIT0945デフォルトの名無しさん (ワッチョイ 7a8a-WXi2)
2017/10/25(水) 18:15:57.84ID:16XMr+7o0 DDOS攻撃してサイト毎潰す
946デフォルトの名無しさん (ワッチョイ cee7-LaKm)
2017/10/25(水) 18:20:37.33ID:Ls3qnFv30 >>944
まず何のプログラミングか言わなきゃダメでしょうみんなプロだから挙動で読めちゃう人いるけどさ
まず何のプログラミングか言わなきゃダメでしょうみんなプロだから挙動で読めちゃう人いるけどさ
947デフォルトの名無しさん (ワッチョイ c575-G561)
2017/10/25(水) 18:28:36.51ID:Ho4Id2OA0 >>944
printfでNULL->valueをしてるから
printfでNULL->valueをしてるから
948デフォルトの名無しさん (ワッチョイ d681-0GSP)
2017/10/25(水) 18:35:07.38ID:2J1yyAIT0949デフォルトの名無しさん (ワッチョイ 5581-3lto)
2017/10/25(水) 19:06:17.58ID:N2zX2Cru0 void hoge(data_t **data, int value) {
*data = NULL;
*data = malloc(sizeof(data_t));
if (data == NULL) return;
(*data)->value = value;
}
呼び出しを
hoge(&data,10);
これではどうか
*data = NULL;
*data = malloc(sizeof(data_t));
if (data == NULL) return;
(*data)->value = value;
}
呼び出しを
hoge(&data,10);
これではどうか
950デフォルトの名無しさん (ワッチョイ 5581-3lto)
2017/10/25(水) 19:07:10.40ID:N2zX2Cru0 if (*data == NULL) return;
ここ間違えた、訂正
ここ間違えた、訂正
951デフォルトの名無しさん (ワッチョイ d681-0GSP)
2017/10/25(水) 19:12:01.89ID:2J1yyAIT0952デフォルトの名無しさん (ワッチョイ c575-G561)
2017/10/25(水) 19:16:50.46ID:Ho4Id2OA0 そういうことか
全然分からんかった
引数に受け渡されたポインタ変数のコピーに新しく確保したメモリのアドレス入れても呼び出し元のポインタ変数はなんも変化しないのか
全然分からんかった
引数に受け渡されたポインタ変数のコピーに新しく確保したメモリのアドレス入れても呼び出し元のポインタ変数はなんも変化しないのか
953デフォルトの名無しさん (ワッチョイ c5b3-VJ/D)
2017/10/25(水) 19:21:03.77ID:BohOgQqE0 引数で int の変数を書き換えても 呼び出し元には伝わらない それの延長線
int を data_t* に読み替えれば同じ理屈よ
int を data_t* に読み替えれば同じ理屈よ
954デフォルトの名無しさん (ワッチョイ cee7-LaKm)
2017/10/25(水) 20:39:40.86ID:Ls3qnFv30 俺の頭じゃあ理解できなかったわアロー関数は苦手だ、ここには天才がやっぱいるわ
955デフォルトの名無しさん (ワッチョイ d6e8-bcII)
2017/10/25(水) 22:59:11.01ID:SHE9E59e0 この程度でプロとか天才とかw レベル低っ
956デフォルトの名無しさん (ワッチョイ 7ad2-eNpY)
2017/10/25(水) 23:31:22.55ID:A9sEwxck0 追い詰められてる時って、ちょっとしたことを見落としたりしがちだし。
そういうときにちょっとしたつまらない問題点を指摘してくれる人が神様に思えることはある。
本当に何でこれに気づかない?って問題に延々と気づかないことあるから。
そういうときにちょっとしたつまらない問題点を指摘してくれる人が神様に思えることはある。
本当に何でこれに気づかない?って問題に延々と気づかないことあるから。
957デフォルトの名無しさん (ワッチョイ 7181-/MqV)
2017/10/26(木) 01:05:20.57ID:WmOJzpQL0 実務の世界だと、開発リーダーにとっては、この程度はさらさらと書いて欲しいと思うだろうな
この辺の考え方が理解できてないと、構造体を使ったリスト構造、木構造が作れないと思う
この辺の考え方が理解できてないと、構造体を使ったリスト構造、木構造が作れないと思う
958デフォルトの名無しさん (ワッチョイ 7102-rVGZ)
2017/10/26(木) 01:22:11.08ID:FPgm8C1h0 急に語り出したぞ、おい
959デフォルトの名無しさん (ワッチョイ 719f-a4mA)
2017/10/26(木) 03:22:11.49ID:kwyo2eDl0 リスト構造、木構造という言葉がわからなかったのかな?
960デフォルトの名無しさん (ワッチョイ 1b11-mlZ6)
2017/10/26(木) 03:35:02.17ID:ByFyiJTd0 分からなくてもググれば速攻定義出ますがな
961デフォルトの名無しさん (ワッチョイ 9193-cGPg)
2017/10/26(木) 06:24:41.35ID:8UQnYlEC0962デフォルトの名無しさん (ガックシ 068b-rVGZ)
2017/10/26(木) 10:26:24.17ID:Z8IKw2VS6 リスト構造木構造とか理系大学の情報系科目で誰でもやるがな
こんなところ見てる奴が知らんわけないだらアホ
こんなところ見てる奴が知らんわけないだらアホ
963デフォルトの名無しさん (ササクッテロラ Sp9d-aRZk)
2017/10/26(木) 10:46:18.77ID:DmfMCHFwp リストもツリーも基本の構造は一緒だろ。
ただ、鎖ね繋がってる数が違うから、
扱いが違うだけでな。
ただ、鎖ね繋がってる数が違うから、
扱いが違うだけでな。
964デフォルトの名無しさん (アウアウカー Saed-Lg7W)
2017/10/26(木) 12:26:11.84ID:nuX2FTeTa 文系経済学部ですわ
965デフォルトの名無しさん (ドコグロ MM3d-DDuF)
2017/10/26(木) 12:46:06.22ID:oyaJ8gC3M966デフォルトの名無しさん (ガックシ 068b-rVGZ)
2017/10/26(木) 12:51:34.13ID:jbwuNtau6 >>965
リスト構造とか知ってるからってポインタ受け渡しのトリックに気付くとは限らんだろ
リスト構造とか知ってるからってポインタ受け渡しのトリックに気付くとは限らんだろ
967デフォルトの名無しさん (ワッチョイ ebea-ZNPd)
2017/10/26(木) 13:41:10.56ID:VaLFaSbf0 怪しくなったら戻り値で返せ
968デフォルトの名無しさん (ブーイモ MMc5-nyI1)
2017/10/26(木) 14:50:55.37ID:ujDNQjK/M そういうときに限って二つ返したくなる
969デフォルトの名無しさん (ワッチョイ 1be7-J/p5)
2017/10/26(木) 18:29:14.01ID:l+WAoJAx0 自分の知ってる関数解ってる宣言の仕方ならわかるけどさ解らない奴使ってたらもう変数が動いてるかわからんだろう
そうなったらもう謎でコードなんか読めないだろ?
そうなったらもう謎でコードなんか読めないだろ?
970デフォルトの名無しさん (ワッチョイ ebe8-nu9H)
2017/10/26(木) 18:40:00.02ID:6866r+hk0 んなこたぁ、ない
971デフォルトの名無しさん (ワッチョイ d1b3-ZNPd)
2017/10/26(木) 18:44:09.81ID:AI1MxGuX0 引数の書き戻し系は 渡すときに値を必要としてるのかどうかは仕様次第なので 少し気を使う
972デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
2017/10/26(木) 20:03:01.42ID:DmfMCHFwp それより、そのアドレスはアクセス権のある場所を指してるんだよな?
973デフォルトの名無しさん (ドコグロ MM3d-DDuF)
2017/10/26(木) 21:41:04.91ID:oyaJ8gC3M974デフォルトの名無しさん (ワッチョイ d175-rVGZ)
2017/10/26(木) 21:42:34.03ID:Fjma9sq90 とりまリスト構造なんて誰でもしってること
>>959のレスはイミフ
>>959のレスはイミフ
975デフォルトの名無しさん (ワッチョイ 719f-Akqv)
2017/10/27(金) 03:11:40.50ID:QY+Fa/Ak0 >>966
これはトリック、か?
これはトリック、か?
976デフォルトの名無しさん (ワッチョイ 9193-cGPg)
2017/10/27(金) 06:49:46.56ID:VPed4ksO0 「関数の引数に値渡ししかないから、
ポインタを渡すことで呼出側の変数の内容を関数側で変更する」
というのが他の言語と比較した場合、C特有のトリックと呼べるかも。
もちろん、Cの村では当然かつ基本のことだけど。
ポインタを渡すことで呼出側の変数の内容を関数側で変更する」
というのが他の言語と比較した場合、C特有のトリックと呼べるかも。
もちろん、Cの村では当然かつ基本のことだけど。
977デフォルトの名無しさん (ワッチョイ 1387-jmG0)
2017/10/27(金) 08:36:39.71ID:JYNAFOfl0 たくさん値を返したいなら、
戻り値を型宣言した構造体にしたらいい。
戻り値を型宣言した構造体にしたらいい。
978デフォルトの名無しさん (ワッチョイ 0b23-20SA)
2017/10/27(金) 09:39:08.11ID:a5gmSSmH0 残念だったな、トリックだよ
979デフォルトの名無しさん (ワッチョイ 1be7-DRuk)
2017/10/27(金) 09:42:57.69ID:Q7q08ysx0 >>977
autoでもできるのですか?
autoでもできるのですか?
980デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
2017/10/27(金) 09:57:16.24ID:CUGbjFhkp ああ、昔はauto変数に取った構造体を戻り値にして割り込み系で散々な目に遭ったよな。
あれは言語仕様に沿って無いコンパイラが悪いんだがな。
あれは言語仕様に沿って無いコンパイラが悪いんだがな。
981デフォルトの名無しさん (ワッチョイ ebea-ZNPd)
2017/10/27(金) 10:00:31.70ID:v/FEPkkV0 古いコンパイラではNGだったけど
構造体の引数での値渡し、戻り値での値戻しは可能
構造体の引数での値渡し、戻り値での値戻しは可能
982デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
2017/10/27(金) 10:18:09.15ID:CUGbjFhkp 古くなくてもニッチな環境では要注意だ。
コンパイラの吐き出すコードが言語仕様に沿って無い場合がある。
コンパイラの吐き出すコードが言語仕様に沿って無い場合がある。
983デフォルトの名無しさん (ワッチョイ 13b3-DDuF)
2017/10/27(金) 10:27:32.22ID:8fSPZcAJ0 >>976
トリックと言うか他の言語ではコンパイラがやってることをアセンブラやCでは明示的に書くと言うだけ
トリックと言うか他の言語ではコンパイラがやってることをアセンブラやCでは明示的に書くと言うだけ
984デフォルトの名無しさん (ワッチョイ ebea-ZNPd)
2017/10/27(金) 13:06:16.96ID:v/FEPkkV0985デフォルトの名無しさん (ワッチョイ 138a-gYJi)
2017/10/27(金) 15:36:47.12ID:dGyUnw2Y0 ホワイトスミスなんて、printfすら無いような処理系作って
いた人がANSIの役員していて2度びっくり
いた人がANSIの役員していて2度びっくり
986デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
2017/10/27(金) 18:41:59.37ID:BvMxy0d+0 C言語のポインタで
int *a;
int b;
a = 10;
これは理解できるんだけど
a = &b;
*a = 10;
これはどうなってるん?aにアドレス入ってるのにどうやって10を送ってるん?
int *a;
int b;
a = 10;
これは理解できるんだけど
a = &b;
*a = 10;
これはどうなってるん?aにアドレス入ってるのにどうやって10を送ってるん?
987デフォルトの名無しさん (ワッチョイ d1b3-ZNPd)
2017/10/27(金) 18:47:48.96ID:/LUCvRWS0 > int *a;
> a = 10;
> これは理解できるんだけど
説明できるのなら その先も分かるはず
> a = 10;
> これは理解できるんだけど
説明できるのなら その先も分かるはず
988片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/27(金) 18:49:13.82ID:xRxq9X9wd >>986
> int *a;
> int b;
> a = 10; //エラー。ポインタに整数は代入できない。そもそも全角文字と半角文字を間違っている。
> a = &b;
> *a = 10;
アスタリスク(*)で実体の整数データを手繰り寄せているイメージね。
> int *a;
> int b;
> a = 10; //エラー。ポインタに整数は代入できない。そもそも全角文字と半角文字を間違っている。
> a = &b;
> *a = 10;
アスタリスク(*)で実体の整数データを手繰り寄せているイメージね。
989デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
2017/10/27(金) 18:55:00.02ID:BvMxy0d+0 >>988
*aで中にあるアドレスで探って送ってるイメージ?
*aで中にあるアドレスで探って送ってるイメージ?
990片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/27(金) 18:57:22.58ID:xRxq9X9wd うん。アスタリスクを付ければ、アドレス先への代入になる。
ポインタにゼロ以外の整数は代入できないに訂正。
ポインタにゼロ以外の整数は代入できないに訂正。
991デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
2017/10/27(金) 19:14:00.54ID:CUGbjFhkp 宣言とフィールドで意味の違う*が悪い。
992デフォルトの名無しさん (ブーイモ MMc5-nyI1)
2017/10/27(金) 19:16:29.79ID:t/XrhBpFM アーキテクチャとアセンブリ言語勉強するのが早道な気がする
993デフォルトの名無しさん (ブーイモ MMc5-nyI1)
2017/10/27(金) 19:19:35.75ID:t/XrhBpFM994デフォルトの名無しさん (ササクッテロラ Sp9d-jmG0)
2017/10/27(金) 19:21:42.60ID:CUGbjFhkp995デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
2017/10/27(金) 19:56:47.39ID:BvMxy0d+0 char *c;
int *a;
この二つはポインタだけど使い方が違うのか?
int *a;
この二つはポインタだけど使い方が違うのか?
996片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/27(金) 20:00:41.33ID:xRxq9X9wd sizeof(*c) == sizeof(char)で、
sizeof(*a) == sizeof(int)だ。
sizeof(*a) == sizeof(int)だ。
997デフォルトの名無しさん (マクド FF6d-mlZ6)
2017/10/27(金) 20:11:43.60ID:HlvRN0vUF Cの文法特にポインタ宣言周辺は、
頭が悪いと読めないよう定められてる。
ソフトウェア開発は馬鹿でも手伝わせる
必要があるくらい人手不足なのに、
なんでこんな文法にしたのか不思議。
頭が悪いと読めないよう定められてる。
ソフトウェア開発は馬鹿でも手伝わせる
必要があるくらい人手不足なのに、
なんでこんな文法にしたのか不思議。
998デフォルトの名無しさん (ワッチョイ d171-Lg7W)
2017/10/27(金) 20:21:32.42ID:3Ly7XcHr0 えっ、Cの由来を知らないの?
999片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/27(金) 20:26:24.89ID:xRxq9X9wd 次スレお願い
1000あぼーん (ワッチョイ d1eb-CTXj)
2017/10/27(金) 21:22:14.66ID:zFbk1AXy0 あぼーん
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 78日 1時間 0分 51秒
新しいスレッドを立ててください。
life time: 78日 1時間 0分 51秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- トランプ米大統領声明 「中国はパニックに陥った」 [お断り★]
- 【宗教】日本、仏教国で仏教離れ最多 信者の4割、現在「無宗教」 米研究所調査 ★3 [樽悶★]
- 米商務長官 トランプ関税「撤回の可能性ない。 世界はアメリカから搾取やめるべき。関税率是正なら交渉の余地あり」 [Hitzeschleier★]
- 長野智子 フジテレビ報告書で〝誤報〟判明「文春は謝罪するべき」…女性アナF氏を「3悪人」扱い ★2 [ぐれ★]
- 注文した料理が来ないまま45分経過 → 食べてないのに「席を空けて」と店員に退店を促されて激怒、トラブルになった男性 [パンナ・コッタ★]
- 中居正広の弁護士・犬塚氏、直撃にダッシュで逃走…被害女性を「不快」にさせた“フジと利益相反”の受任 [Ailuropoda melanoleuca★]
- 【先着っ!】Ave Mujicaで一つ屋根の下で愛し合いたい女の子っ!!!!!!!!!!!!!!!!!!!
- 【訃報】日経平均先物、ガチで下落が止まらないマイナス1400 [943688309]
- 【訃報】株安、円安という最悪なパターンになりそう、日本経済ガチで詰みかけ [943688309]
- ちんちんがイライラする二次エロ画像スレ
- 開示された森友文書、安倍昭恵氏に関する記録など肝心なところがない [545512288]
- トランプ「利下げしろ😡」→FRB議長「トランプ関税でインフレの可能性大 だから利下げしない」 [175344491]