1 名前:デフォルトの名無しさん [2017/05/11(木) 22:20:03.99 ID:cn414UR90.net] C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ 前 echo.2ch.net/test/read.cgi/tech/1487757355/ www.geocities.jp/c_cpp_cs/about_c/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 13:08:15.72 ID://5I1UQ2M.net] イラネ
3 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 14:58:26.42 ID:IiKpnLAId.net] C言語からVBAで作ったエクセルマクロって実行できないの?
4 名前:デフォルトの名無しさん [2017/05/12(金) 16:05:36.32 ID:UWkhiPx90.net] C99からif,for,whileの後に続く括弧の中がブロックのなかという 認識になったらしいんですけど、for以外でどうやって その中で変数を宣言できるというんですか? だったらforだけブロックの中っていうことでいいんじゃないんですか?
5 名前:デフォルトの名無しさん [2017/05/12(金) 16:31:31.05 ID:js7UY7om0.net] if ( char * p = malloc( N ) ) こういうのとか?
6 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 18:03:15.98 ID:UWkhiPx90.net] それな
7 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 22:01:43.38 ID:HEUwhpUy0.net] C言語でエクセルのVBAマクロの実行できないの?
8 名前:片山博文MZ mailto:sage [2017/05/12(金) 22:06:16.73 ID:r6F8dCD7d.net] www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=45361&forum=7
9 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 22:08:09.17 ID:HEUwhpUy0.net] C++かぁ
10 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 22:44:50.71 ID:y9SJMwIK0.net] >>7 VBA マクロのインタプリター書けば良くね?Cで。
11 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 23:06:05.96 ID:UkU1KlKv0.net] おいQZゴミコードをここで書くなよ ウンコードに投稿しろよ
12 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 23:07:33.76 ID:UkU1KlKv0.net] おいQZ おまえってやればやるほど洗練された糞さを放ったコードが出来上がるから 自覚しとけ
13 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 23:09:00.10 ID:UkU1KlKv0.net] おいQZいろんなC系スレでクソコードばらまくのやめろよ 今時Cでクソなコード書いてるのはおまえしかいない
14 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 12:44:34.80 ID:vKP2EClq0.net] printf("%s", string); ではなくて printf(string); でエラーが出ないようにするにはどうしたらいいですか?
15 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 13:06:30.63 ID:7e4RDEpq0.net] #define printf(string) printf("%s", string) とする
16 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 13:47:03.32 ID:7pndE6Ym0.net] stringがchar*なら、それでエラーは出ない キミが間違っとる
17 名前:デフォルトの名無しさん [2017/05/13(土) 14:03:34.24 ID:u94khtn50.net] コンパイラーによってはセキュリティ警告でも出るんだろうな
18 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 14:12:40.14 ID:m48zL+ZP0.net] >>16 print「f」なのにフォーマットしないってなんか気持ち悪いな
19 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 14:13:58.16 ID:RjzTmCQE0.net] エラーがコンパイル時なのか実行時なのか
20 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 14:20:39.18 ID:m48zL+ZP0.net] gcc使っているならコンパイル時のオプションに-wでコンパイルできたわ
21 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 14:51:14.61 ID:7U8nUyJbM.net] >>18 printf("Hello, world!/n”); 気持ち悪いか?
22 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 14:58:27.01 ID:Swj/Rgps0.net] >>21 馬鹿
23 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 15:42:18.61 ID:zKUmpFvI0.net] string の中身に %s とか %d とかはいってると あわわわ
24 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 15:42:59.20 ID:VT1sIlGJ0.net] ヌルポン渡すと落ちるぞ
25 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 15:55:06.50 ID:1Sz8mIFNa.net] そもそも出ないだろw
26 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 22:21:45.16 ID:IUtkDsju0.net] stringがワイド文字列なら警告くらい出るだろ
27 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 22:24:52.04 ID:7pndE6Ym0.net] >>23 ああ、そう言う事なら、静的な引数チェクが不可能な文字列は警告だすのもありかも知れんな 実例は見た事ないが
28 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 23:37:01.87 ID:Bvln+1PG0.net] format string attackって攻撃が実在するからな C11で%nが廃止されたのも、それが原因だし
29 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 03:33:24.24 ID:AUHwE8VO0.net] >>27 どのコンパイラもオプションつ
30 名前:ければ動的に決まる文字列は警告出すぞ 遅い上に危険で利点がない %nが消えてもメモリ内を読まれるのは脆弱性 [] [ここ壊れてます]
31 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 03:39:55.42 ID:RBSPlVIO0.net] やりたいことって、putsではダメなのかな?
32 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 04:15:58.62 ID:c1+aTdNX0.net] プッツ!
33 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 10:30:41.42 ID:QnhMTTR+0.net] a+=1; と a++; って同じ意味ですか?
34 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 10:51:06.70 ID:44d8vf440.net] >>32 a+=1 と ++a の評価は同じ a+=1 と a++ の評価は違う 評価後の値はどちらも同じ #include <stdio.h> int main(void) { int a; a = 0; printf("%d\n", a); // a=0 printf("%d\n", a += 1); // a=1 評価結果はインクリメント後の値 printf("%d\n\n", a); //a=1 a = 0; printf("%d\n", a); // a=0 printf("%d\n", ++a); // a=1 評価結果はインクリメント後の値 printf("%d\n\n", a); // a=1 a = 0; printf("%d\n", a); // a=0 printf("%d\n", a++); // a=0 評価結果はインクリメント前の値 printf("%d\n\n", a); // a=1 return 0; }
35 名前:デフォルトの名無しさん [2017/05/15(月) 10:50:08.41 ID:ITGYMTaF0.net] int a=1; a = a+++a; これ、たいていの環境で 3 になるみたいだけど 内部ではどっちに構文解析されてるの?
36 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 11:49:32.39 ID:8jcxUI920.net] >>34 a=b++ + c;
37 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 11:56:31.63 ID:Z3hdp57V0.net] >>34 後置インクリメント演算子(a++)は+演算子や前置インクリメント演算子(++a)より優先順位高い
38 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 12:12:51.85 ID:Vosr5hkL0.net] >>34 VC++の場合 a = (a + a)++; GCCの場合 a = ++(a + a); int a = 10; printf("%d\n", a); // a=10 printf("%d\n", a=a+++a); // a=20 (VC++の場合)、a=21 (GCCの場合) printf("%d\n\n", a); // a=21
39 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 12:55:00.64 ID:FMK+ZQcW0.net] 右辺値のインクリメントが出鱈目過ぎる
40 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 13:04:41.31 ID:m4iBjxKl0.net] >>36 演算子の優先順位と構文解析は関係ねーよ 前方から最長になるように字句解釈するから、 a=a+++aは、a = a ++ + aになる
41 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 13:26:43.15 ID:Z3hdp57V0.net] >>39 えっ? 関係ないの?
42 名前:デフォルトの名無しさん [2017/05/15(月) 14:05:11.81 ID:KBSLJwGw0.net] >>37 // GCCの場合 a=10; printf("1: %d\n", a = a++ + a); // a=21 a=10; printf("2: %d\n", a = ++a + a); // a=22 a=10; printf("3: %d\n", a = a + a++); // a=21 a=10; printf("4: %d\n", a = a + ++a); // a=22 1と2は予想通りだけど3と4は予想が外れた。 GCCは素直に前方から評価すると思っていたが、 インクリメント演算がある項を先に評価するようだ。
43 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 14:08:51.26 ID:ITGYMTaF0.net] >>39 なるほど先頭から最長一致か ありがとう a = a+++a; // 21 a = a+ ++a; // 22 a = a++ +a; // 21 gccだとこんな感じになったわ
44 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 14:28:56.88 ID:m4iBjxKl0.net] >>40 関係ない 演算子の優先順位はトークンが確定した後の話 構文解釈とは一切関係ない
45 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 14:50:03.73 ID:k1YI7zCW0.net] 知ったかぶりしないで 副作用完了点を検索してからレスしようね
46 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 15:08:26.82 ID:m4iBjxKl0.net] さすがに、a=a+++a が未定義なことぐらいわかってるだろ そのうえで、どう動作してるのだろうかって話じゃねーの?
47 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 15:17:45.01 ID:ugjsGD9A0.net] どう字句解析されるのかって話だろ
48 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 15:41:11.64 ID:+h60b5kha.net] 初めから()で囲んで優先つけた方がいいね
49 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 15:48:46.87 ID:Vosr5hkL0.net] VC++での逆アセンブルコード (Visual Studio 2017 debugモード) // a=a++ a = 10; 004037DE mov dword ptr [a],0Ah a = a++; 004037E5 mov eax,dword ptr [a] 004037E8 mov dword ptr [a],eax 004037EB mov ecx,dword ptr [a] 004037EE add ecx,1 004037F1 mov dword ptr [a],ecx // a=++a a = 10; 004037F4 mov dword ptr [a],0Ah a = ++a; 004037FB mov eax,dword ptr [a] 004037FE add eax,1 00403801 mov dword ptr [a],eax 00403804 mov ecx,dword ptr [a] 00403807 mov dword ptr [a],ecx // a = a+++a a = 10; 0040380A mov dword ptr [a],0Ah a = a+++a; 00403811 mov eax,dword ptr [a] // aの値と 00403814 add eax,dword ptr [a] // aの値を加算して (a+a) 00403817 mov dword ptr [a],eax // 一時保存(評価)して 0040381A mov ecx,dword ptr [a] // 評価結果に対して 0040381D add ecx,1 // 1を加算して (a+a)++ 00403820 mov dword ptr [a],ecx // 最終結果をaに代入
50 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 16:01:51.35 ID:Vosr5hkL0.net] GCCは逆コンパイラが使える環境を持っていないので誰か頼みます
51 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 16:17:06.14 ID:vCh6HJnv0.net] -S付けるとアセンブラソース出力してくれるよ
52 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 16:17:38.49 ID:k1YI7zCW0.net] >>45 未定義とされているものの実装を調べる意味は一片たりとも無い b = a+++a; ならば文法どおりに解釈されてなければ、コンパイラのバグなので検証する意味はある
53 名前:デフォルトの名無しさん [2017/05/15(月) 16:26:58.46 ID:K4VlRHcT0.net] >>49 https://godbolt.org
54 名前:デフォルトの名無しさん [2017/05/15(月) 16:38:44.35 ID:K4VlRHcT0.net] >>51 a+++a;は未定義動作でしょ?
55 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 16:55:22.96 ID:m4iBjxKl0.net] >>53 そこだけで未定義 2つ目のaを別の変数に退避し上で加算しないとアウト
56 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 17:14:07.00 ID:Vosr5hkL0.net] >>52 を利用して逆アセンブルコードを調べてみた スタックを使って細工するところとかコードの展開内容としては結構トリッキーだけど GCCの場合のa=a+++a のイメージとしては { tmp = a, a=(++a) + tmp; } といった感じかな >>54 の言う通り内部的には別変数を利用しているとも言える 逆アセンブルコード push rbp mov rdp, rsp a = 10; mov DWORD PTR [rbp-4], 10 a = a+++a; mov eax, DWORD PTR [rbp-4] // aの値に lea edx, [rax+1] // 1を加算して mov DWORD PTR [rbp-4], edx // aに保存 add DWORD PTR [rbp-4], eax // aに元のaの値を加算 pop rbp
57 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 17:17:38.16 ID:Vosr5hkL0.net] レイアウト崩れたので修正 逆アセンブルコード push rbp mov rdp, rsp a = 10; mov DWORD PTR [rbp-4], 10 a = a+++a; mov eax, DWORD PTR [rbp-4] // aの値に lea edx, [rax+1] // 1を加算して mov DWORD PTR [rbp-4], edx // aに保存 add DWORD PTR [rbp-4], eax // aに元のaの値を加算 pop rbp
58 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 17:33:28.21 ID:FMK+ZQcW0.net] 無能な働き者
59 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 18:48:03.94 ID:k1YI7zCW0.net] >>53 ああすまん、そのとおりだね なに寝ぼけてたんだろう
60 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 20:47:42.32 ID:l6TF2MzAM.net] >>33 ありがとうございます! すっきりしました!
61 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 21:40:37.62 ID:ITGYMTaF0.net] >>53 b = a++ +a ならギリギリセーフかなーと思ってた。 これもアウトなんか
62 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 22:35:38.71 ID:m4iBjxKl0.net] ざっくりだけど C99以前だとaの変更とその変更と関係ないaの評価を行っているからアウト C11だとa++でのaへの1加算と、2つ目のaの評価に順序性がないからアウト
63 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 22:43:52.12 ID:KR9fXitY0.net] おいQZお前はC向いてないからやめろ このスレを荒らすなクソマニア
64 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 02:46:28.46 ID:8VX1hNny0.net] a = f(x) + g(x); とした場合、f(x)とg(x)の関数呼び出しで どちらが先になるのかは未定義ってこと?
65 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 03:27:48.17 ID:lv7gi33v0.net] >>63 関数呼び出しの順序の問題ではなくて、インクリメント演算子を自分自身に適用した場合の副作用の問題 f(x)の副作用としてg(x)の状態を変化させ、g(x)の副作用としてf(x)の状態を変化させるような場合、(f(x) + g(x))の評価は未定義ということ
66 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 03:34:54.85 ID:lv7gi33v0.net] 「インクリメント演算子を自分自身に適用した場合」は説明不足だった 「同じ式の中でインクリメント演算子を自分自身に繰り返し適用した場合」の方が適切だった
67 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 04:11:10.64 ID:8VX1hNny0.net] 回答ありがとう
68 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 12:24:07.64 ID:hxKx6VJm0.net] C言語でVBA
69 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 14:51:29.95 ID:uP7i9rQE0.net] >>63 a++ + a 右のaがどうなるか考えてみ
70 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 18:02:14.83 ID:9umlqZ68M.net] a=a+++++aはエラーなの?
71 名前:デフォルトの名無しさん [2017/05/16(火) 18:26:04.60 ID:j2WgBIQo0.net] 大学の講義でc言語やってるのですが、行き詰まってしまったので質問させていただきます 分割コンパイルしているのですが、全部書いてあります コメント文で分割コンパイルの区切りを表しています codepad.org/VplJG9tZ これによって表示されるものを左に90度回転させたいのですが条件としてmain関数しかいじってはいけないというものがあります 2次元配列でいけるのかと思ったのですが、どうしたらいいかわからず手詰まりです よろしくお願いします
72 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 18:28:00.76 ID:7Qb0OzW/0.net] 宿題スレにいけ
73 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 19:46:46.04 ID:GFMW00ds0.net] a = a----a; ってコンパイルできないのね a = a-- - -a; にすればコンパイルはできるが
74 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 20:26:25.96 ID:fevd2QwgM.net] >>69 エラーになるかどうかもわからない それが未定義動作
75 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 20:48:15.67 ID:8VX1hNny0.net] >>64 >>68 レスもらっておいて何ですが、やっぱりなんか引っ掛かってたので自分でも調べてみました www.soum.co.jp/misc/tom/programmer/4.html#id9 https://mattn.kaoriya.net/software/lang/c/20130426110223.htm あたりを読んで理解した気になりました C言語テラコワス
76 名前:デフォルトの名無しさん [2017/05/16(火) 21:05:08.54 ID:j2WgBIQo0.net] >>71 すみません宿題スレとはどこでしょうか
77 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 21:41:19.00 ID:9umlqZ68M.net] >>74 問題はグローバル変数を使うからじゃないの?
78 名前:デフォルトの名無しさん [2017/05/16(火) 22:17:40.57 ID:Ag35s8j3D.net] >>68 swiftだとa++は廃止された 分かりやすく書くってこと
79 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 22:33:27.46 ID:Slyc8zwMd.net] d.hatena.ne.jp/THE_MIND/touch/20090205/1233845661 これ真似たけどExcel開かない
80 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 22:33:48.78 ID:Slyc8zwMd.net] あ、間違えましたすみません
81 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 23:02:13.38 ID:OtKe4ieo0.net] わからなかったの間違えだろ 正直に言えよ無職無能QZ
82 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 23:06:19.27 ID:OtKe4ieo0.net] QZ怒りの他スレ進出ww
83 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 23:07:01.08 ID:OtKe4ieo0.net] 宿題スレはどこでしょうかw おいQZこのスレまで宿題スレ化しようと企んでるのかよ
84 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 23:09:40.58 ID:OtKe4ieo0.net] 最近の宿題スレで質問者演じてるやつと口調が見事に一致
85 名前:デフォルトの名無しさん [2017/05/16(火) 23:17:13.00 ID:f+nf4d790.net] インクリメントが無い言語はクソ
86 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 23:18:04.22 ID:OtKe4ieo0.net] QZ怒りの負け惜しみ発言開始
87 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 23:25:44.32 ID:OtKe4ieo0.net] QZ怒りのC絶賛
88 名前:デフォルトの名無しさん mailto:sage [2017/05/16(火) 23:56:41.57 ID:hxKx6VJm0.net] QZってなに
89 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:12:22.70 ID:trROhyaD0.net] QZ怒りの自己紹介
90 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:16:07.98 ID:t3IXdrQL0.net] C言語って、機械に分かりやすい言語なんじゃないかな
91 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 00:34:30.07 ID:Y+yL8XVsM.net] 何をいまさら
92 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 06:54:51.29 ID:wJf0VzTx0.net] >>87 エディタじゃね?
93 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 11:14:31.02 ID:trROhyaD0.net] QZ怒りのエディタ自慢
94 名前:デフォルトの名無しさん [2017/05/17(水) 16:12:39.52 ID:IVbqBIIG6.net] #include <stdio.h> #include <stdlib.h> #include <math.h> void main() { int i, j, a; //int 整数 FILE *fout; //FILE ファイルの管理用 errno_t error; if ((error = fopen_s(&fout, "output.txt", "w")) != 0){ printf(" エラー:ファイルの出力ができませんa \n"); exit(1); } a = 0; for (i = 0; i<5; i++){ for (j = 0; j<10; j++){ a = a + 1; fprintf_s(fout, "%d ", a); } fprintf_s(fout, "\n"); } fclose(fout); } これにIf文使って 0 0 0 0 0 0 0 0 0 0 0 0 0 14 15 16 17 0 0 0 0 0 0 24 25 26 27 0 0 0 0 0 0 34 35 36 37 0 0 0 0 0 0 0 0 0 0 0 0 0 にするにはどうすればいいの?おしえてエロい人
95 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 16:18:48.87 ID:bdvqA1ry0.net] >>93 なかなか良い問題だな。大学生?
96 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 16:23:04.39 ID:se1pH3p/0.net] a = a + 1; if (1 <= i && i <= 3 && 3 <= j && j <= 6) fprintf_s(fout, "%d ", a); else fprintf_s(fout, "0 ");
97 名前:デフォルトの名無しさん [2017/05/17(水) 16:24:58.51 ID:IVbqBIIG6.net] >>94 大学生です。 指定場所以外も数字が出てしまいます
98 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 16:32:34.86 ID:t3IXdrQL0.net] if (4 <= (a % 10) && (a % 10) <= 7) printf("%d ", a); else printf("%d ", 0);
99 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 16:35:45.80 ID:smeqz8ba0.net] >>93 エロい人への質問は板違い phoebe.bbspink.com/hneta/ へ移動しなさい
100 名前:デフォルトの名無しさん [2017/05/17(水) 16:45:05.44 ID:IVbqBIIG6.net] >>95 ベン図的な考え方ですか......!! ありがとうございます。 >>97 なぜか0〜50全て表示されてしまってます! >>98 エロ魔人になるにはまだ早いです!
101 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 16:47:44.21 ID:smeqz8ba0.net] >>99 キミがなるんじゃ無い キミが質問したがってるエロい人の住処に移れと言っている
102 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 18:12:03.01 ID:sXGKWmUcM.net] >>93 どうでもいいけどコメント酷すぎ > int i, j, a; //int 整数 > FILE *fout; //FILE ファイルの管理用
103 名前:デフォルトの名無しさん [2017/05/17(水) 18:52:23.54 ID:81y1dPE2M.net] 初心者にありがちな無意味なコメントだね
104 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 19:04:10.40 ID:+kjRc1QwH.net] 各行コメントつけろという教育の成果
105 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 22:14:49.58 ID:trROhyaD0.net] QZ怒りのクソコメント
106 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 06:55:44.12 ID:Zs9E6Q4t0.net] 俺なら条件部分は↓のように書くかな。 if ((a >= 10) && (a < 40) && ((a % 10) >= 4) && ((a % 10) <= 7)) { 「表示する値、表示しない値を条件に判断」という雰囲気。 普段は表組みの行と列の番号(変数i, j)で制御するけど、 この問題だとaの1の桁の値とjの値が一致しないから何やら座りが悪い感じ。 a = 10*i + j + 1; みたいに「行と列の表示位置から表示すべき値を算出」なら馴染むんだけど。
107 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 09:33:34.39 ID:9pl130wuM.net] if(i==0&&j==9) printf(" 0¥n); else if(i==1&&j==3) printf(" 14"); else if(i==1&&j==4) printf(" 15"); : else printf(" 0");
108 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 12:47:56.59 ID:Zif2rhHOM.net] >>105 > if ((a >= 10) && (a < 40) && ((a % 10) >= 4) && ((a % 10) <= 7)) { なんかちょっとイラッとくる if ((10 <= a) && (a < 40) && (4 <= (a % 10)) && ((a % 10) <= 7)) { の方が分かりやすいじゃん って思うのは俺だけかな まあそもそも >>95 でいいと思うが
109 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 12:52:54.23 ID:Bcm8Uos60.net] 数直線的な並べかたやね a が10〜40 を 10 <= a <= 40 と思考して その並びを Cの文法に適合させて 10 <= a && a <= 40
110 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 20:50:09.48 ID:V+1hCye70.net] >>104 森にお帰り
111 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 21:51:10.32 ID:pFlTikPN0.net] int 変数 = 0; do{ if(変数 != 0) printf("0〜100違う"); scanf("%d",&変数); } while (変数 < 0 || 変数 > 100); みたいな感じのやつどういう仕組み?
112 名前:デフォルトの名無しさん [2017/05/19(金) 08:23:29.86 ID:/7Hxktnz0.net] if (10 <= a && a < 40 && 4 <= a % 10 && a % 10 <= 7) { ほらすっきり。
113 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 10:32:30.55 ID:xPzfUm9BM.net] if (a/10&3&&a%10&4) { ...
114 名前:デフォルトの名無しさん [2017/05/19(金) 13:22:27.31 ID:/7Hxktnz0.net] 10で剰余したものをビットマスクって、おまえ何屋? ビット演算子はB言語の名残で変な結合するから気をつけたほうがいいが その話と>>111 のコードは関係ないぞ
115 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 15:12:35.10 ID:xPzfUm9BM.net] 悔しかったらもっと短くしてみ。
116 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 15:26:11.54 ID:nQP05M7h0.net] >>110 (1) 入力 (2) 判定 範囲外の場合、警告表示して (1)に戻る を並べ替えたもの (1) 条件付(初回以外)は 警告表示 (2) 入力 (3) 範囲外なら (1)へ戻る
117 名前:デフォルトの名無しさん [2017/05/19(金) 15:34:27.30 ID:7FyDjLQd0.net] WannaCryの裏で「駐禁報告書」メール21万件超が大量拡散、添付ファイルは ウイルス、銀行・カード情報など盗み取る https://headlines.yahoo.co.jp/hl?a=20170519-00000094-impress-sci
118 名前:デフォルトの名無しさん [2017/05/19(金) 15:36:33.74 ID:9d9oZwpEM.net] >>112 それ14の判定結果からして偽じゃね?
119 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 15:46:59.07 ID:nQP05M7h0.net] きっちり優先順位をケアすれば合ってるんでないの? 10の位 & 3 (. 1 2 3 . 5 6 7 . 9 1の位 & 4 (. . . . 4 5 6 7 . .
120 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 16:12:46.81 ID:huxogVYI0.net] >>114 特定の値域でしか正常に動作しない欠陥コード晒して、何粋がってんの?
121 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 16:37:44.71 ID:xPzfUm9BM.net] え? i と j が20兆でも動く必要があるの? で、短くできた?
122 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 16:41:42.81 ID:xPzfUm9BM.net] >>119 if (a/10&3&&a%10&4&&(a<38)) { ... これでいいか?
123 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 16:48:56.31 ID:huxogVYI0.net] 絶望的にセンスが悪い > a=>10 比較一回を > a/10&3 除算一回, 論理積一回に改悪 しかも文字数でも1文字増えている
124 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 16:53:29.16 ID:nQP05M7h0.net] i,j で分離すべきなのか a で分離すべきなのか元質問からは読み取れんし・・・ a がたまたま正の整数で良かった (負数の剰余は考えたくないw)
125 名前:デフォルトの名無しさん [2017/05/19(金) 17:08:03.89 ID:/7Hxktnz0.net] >>122 =は右 これ豆なw
126 名前:デフォルトの名無しさん [2017/05/19(金) 17:10:52.81 ID:9d9oZwpEM.net] >>118 あ、そうか。確かに。
127 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 18:23:28.28 ID:fvUmn17Y0.net] >>122 何言ってんだコイツ
128 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 19:00:41.98 ID:rnjvvj6OM.net] まあまあ。 動作に関係ない仕様を思い込みで追加するのは良くないな。 「今不要なら、今書くな」だっけか。
129 名前:デフォルトの名無しさん [2017/05/19(金) 21:31:34.84 ID:91iCt1N+M.net] yagniかkissかってところ?
130 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 21:48:07.18 ID:dqcfAkCR0.net] C言語ってEclipseの補完が動かないのがデフォなの?
131 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 22:17:08.26 ID:ibFM4KQv0.net] >>128 そうそう。ソフト屋なら知ってるもんかな? "Keep it simple, stupid" まさに。
132 名前:デフォルトの名無しさん [2017/05/19(金) 23:37:00.55 ID:jsPxGdeJ0.net] Cは、ライブラリがすくない。おぼえることがすくない
133 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 06:07:10.11 ID:ZnY/c9+20.net] 関数にinlineをつけて外部定義を無くせば インライン展開されなければinline staticと違って リンカエラーになるとおもってたんですけど、 inline staticを使ったときにはインライン展開される関数が inlineをつけて外部定義の無くすとリンカエラーになります なぜですか?
134 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 08:13:36.98 ID:Ykf9CvnEa.net] >>131 野良ライブラリが多いのは多分Cが一番だろうけどな。 何かしらの言語の野良ライブラリの元はCの野良ライブラリが必要で〜とかで、Linuxじゃないと集めてられない。 Win32APIもC前提だけど、多分MSの中の人もいくつあるか把握出来てないんじゃないかな。
135 名前:デフォルトの名無しさん [2017/05/20(土) 18:45:47.54 ID:AtO1B5PX0.net] ISO/IECだってしょせんはブランドの1つでしかなく 別に数学的な公理とかじゃないからな
136 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 19:07:14.30 ID:cC3hGZmH0.net] 無矛盾な公理的集合論は自己そのものの無矛盾性を証明する事ができない
137 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 22:15:46.49 ID:d/44g1et0.net] ./a.outって入力すると'.'は認識されてないと言われました 何が問題でしょうか?
138 名前:片山博文MZ mailto:sage [2017/05/20(土) 22:21:46.82 ID:3NdrFBG3d.net] >>136 コマンドプロンプトはMS-DOSのカルチャーで区切りはバックスラッシュで、MSYSやLinuxはbashのカルチャーで、スラッシュが区切りあるね。
139 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 22:38:50.18 ID:feiyOPgg0.net] >>136 区切りで「/」使いたいなら、パス全体を「"」で括る 「/」以降をオプション「.」をコマンドとして認識するから、全体で一つのコマンドと認識させる必要がある 「/」を区切りに使うのはunix windowsでも一応使えるけど普通はバックスラッシュ使う
140 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 22:52:55.54 ID:d/44g1et0.net] >>136 >>137 バックスラッシュということは¥ですよね?
141 名前:片山博文MZ mailto:sage [2017/05/20(土) 23:02:48.40 ID:3NdrFBG3d.net] bashではセキュリティ上の理由で、現在のディレクトリのプログラムを起動するのに、./が必要だが、Winのプロンプトでは不要。
142 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 23:12:15.43 ID:feiyOPgg0.net] >>139 日本語のwindowsならそう、円記号 コマンドプロンプトとかエクスプローラとかのパス表示には区切り文字に\使われてるでしょ
143 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 23:54:38.45 ID:HEZORyL40.net] 昔は.がデフォルトでPATHの先頭に入ってたな ホームディレクトリにls置いたら面白いことになった
144 名前:デフォルトの名無しさん [2017/05/21(日) 11:36:43.59 ID:p33VUuKu0.net] #include <stdio.h> int main(void){ char i[100]; printf("名前を入力してね。\n"); scanf("%s",i); printf("%sさんですね。\n",i); return 0; } 7行目scanf関数で、&iでなくて、iでいけるのはなぜですか?
145 名前: mailto:sage [2017/05/21(日) 11:43:49.79 ID:pUWFtSb10.net] >>143 i の型はポインタ,すなわち char *i だから
146 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 11:44:04.43 ID:JHzb8j250.net] >>142 &はアドレス演算子で、その変数がメモリ上のどのアドレスにあるかを示す scanf関数で&を使うのは、つまり、「この変数のアドレスに読み取ったものを書き込め」という意味になる。 しかし文字列などの配列は、配列名自身が「配列の一番最初の要素へのアドレス」を示すものになっているので 配列には&が不必要
147 名前:デフォルトの名無しさん [2017/05/21(日) 12:20:22.06 ID:EhbYbiNc0.net] >>144 printf("%u", sizeof i); これで4だか8だかになるとでも?
148 名前:デフォルトの名無しさん [2017/05/21(日) 12:22:40.28 ID:EhbYbiNc0.net] クズの言い方だと float a = 1.5f; printf("%f", a); これが問題なく動作するから、 よって a は double 型だと言っているようなものだ
149 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:23:47.67 ID:fDsf7qWsa.net] >>143 配列を関数に渡すと配列の先頭要素へのポインタになるから。 んで、&は参照なんだけど、参照ってざっくり言えば読み込み専用ポインタ。
150 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:27:36.21 ID:bYtGqajI0.net] >>146 ならない。 コンパイルエラー
151 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:32:18.38 ID:wd4rgPA1a.net] あ、読み込み専用ってのは値が変えられないんじゃなくて、アドレスを変えられないって意味ね。 関数に渡された配列iをi++ってするとi[a++]と同じ意味になる。 (Cでi[a++]なんて書き方許されたかは忘れたが意図は組んでくれ)
152 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:33:01.58 ID:wd4rgPA1a.net] ポインタなら上が出来て、参照は出来ないんよ。
153 名前: mailto:sage [2017/05/21(日) 12:41:04.19 ID:pUWFtSb10.net] >>146 そりゃ配列とポインタは振る舞いがまったく同一というわけではなく,はっきりいって別物だから,言い分はわからんでもない. >>143 訂正する,配列名を示す識別子は配列の先頭を示すポインタになる >>145 が丁寧な説明だ >>147 そのたとえは意味不明,可変長引数の可変部は float->double に格上げされることを隠すなんでひどい物言いだね
154 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:51:40.59 ID:EZ567Ylh0.net] 最近は初心者を騙すのが流行しているのか
155 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:33:41.41 ID:LBGUGIAq0.net] linuxでc言語開発したいんですが、IDE使わないのが一般的なんですか?
156 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:45:10.14 ID:2TTm6ATPa.net] はい。 CやJavaならEclipseが一般的かと。 Eclipseにサポートして貰ってないのはviやemacsカスタマイズしてIDEとして使う感じ。
157 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:45:35.47 ID:2TTm6ATPa.net] あ、はい。は忘れてw
158 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:31:07.21 ID:Mj8j7wxe0.net] >>132 もおねがいします
159 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:34:52.30 ID:kPjNSBDr0.net] >>157 質問文が酷すぎて、何を聞きたいのか理解されてないだけだぞ [] [ここ壊れてます]
161 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 16:54:32.37 ID:bYtGqajI0.net] >>154 最近は yacc じゃなくて何か新しいのあるんだよね。
162 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 17:27:25.62 ID:1Ubd4ETn0.net] >>159 最近じゃないけど bison とかか?
163 名前:デフォルトの名無しさん [2017/05/21(日) 17:32:24.58 ID:ViqOYprV0.net] 何でいきなり構文解析器の話になった?
164 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 17:53:33.03 ID:Qv//Z9+/0.net] >>152 >訂正する,配列名を示す識別子は配列の先頭を示すポインタになる >>145 が丁寧な説明だ なんねーよ カス int a[10]; a++; // お前の主張が正しいならエラーにはならないはずだ
165 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 17:53:37.15 ID:/ema5D/U0.net] c言語作るって言ってるからでしょ
166 名前:デフォルトの名無しさん [2017/05/21(日) 17:59:27.49 ID:EhbYbiNc0.net] >>149 コンパイルエラーって、どこが? https://ideone.com/VpAiLB >>152 147だが、最後ふじこってんじゃん 落ち着いてもっぺん日本語で書いてくれ
167 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 18:06:09.69 ID:zNfd0kUpa.net] >>162 横からと言うか流されてるんで。。。 飛び飛びになってるけど >>148 >>150 >>151 は、おいらなりに結構正確に書いたつもり。 参照はC++用語だからCだと&はアドレス演算子が正確だけど。
168 名前: mailto:sage [2017/05/21(日) 19:10:04.03 ID:pUWFtSb10.net] はいはい,そりゃ配列とポインタは互換じゃないよ 分かりやすい説明はないものかね‥
169 名前: mailto:sage [2017/05/21(日) 19:10:52.98 ID:pUWFtSb10.net] >>164 >147だが、最後ふじこってんじゃん ん?
170 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 19:20:07.02 ID:lXB+sVuE0.net] %f は 引数を double 仮定で引き出す 呼び出し側は (可変長引数の可変部なので) doubleに格上げしてから引数に詰んでる 詰んでるものと引き出すものの食い違いはおきてないんじゃないかね
171 名前: mailto:sage [2017/05/21(日) 19:28:27.25 ID:pUWFtSb10.net] >>168 >積んでるものと引き出すものの食い違いはおきていない そりゃ引数に積むときに float->double しているから,そうなって当然だが,その事実を隠したまま >>147 を主張されても,そりゃないよ,としかいいようがない.
172 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 19:29:57.61 ID:zNfd0kUpa.net] >>166 無いなー。。。 ここが変だよC言語とかもう廃刊だっけ。 あれじゃないと説明しきれん。
173 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 19:40:24.59 ID:kPjNSBDr0.net] 配列型の"式"は、一部のケースを除いてポインタ型の式に"型変換"される、それは配列の先頭要素を指す、また左辺値でもない 関数の実引数での使用についてなら、>>147 の既定の実引数拡張でfloatがdoubleに拡張(型変換)される例と同じような話だと思うんだけどな
174 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 20:10:14.64 ID:zNfd0kUpa.net] >>146 おいらはこれ、sizeofが関数じゃなくて演算子って呼ばれてるのが肝で、関数に配列渡しても何故かポインタのサイズじゃなくて配列サイズ返す謎な奴って解釈してるな。
175 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 20:19:46.42 ID:8VZiX6Z0a.net] んあ。 ごめん。 >>172 は無し。 嘘付いた。 配列関数に渡す時、配列の大きさも別で関数に渡してたの思い出した。
176 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 20:24:04.46 ID:8VZiX6Z0a.net] >>146 これは配列宣言した場所と同じスコープなら配列のサイズ返すけど、配列を関数に渡した先(関数の中)でこれするとポインタのサイズが返ってくる。
177 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 21:28:16.83 ID:LBGUGIAq0.net] >>155 ありがとう
178 名前:デフォルトの名無しさん [2017/05/21(日) 21:39:54.59 ID:EhbYbiNc0.net] >>174 int main(void) { char i[100]; wanker(&i); return 0; } void wanker(char (*j)[100]) { /* ここは、「配列を関数に渡した先(関数の中)」だが? */ printf("%u", sizeof *j); }
179 名前:デフォルトの名無しさん [2017/05/21(日) 21:45:09.31 ID:EhbYbiNc0.net] >>169 隠している? それは聞き捨てならんな 公文書に書かれていることを俺がどう隠したとぬかす?
180 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 21:53:31.38 ID:8VZiX6Z0a.net] >>176 それ、文字配列だからヌル文字(0)で数えられるっしょ。 intの配列とか無理だから。
181 名前:デフォルトの名無しさん [2017/05/21(日) 22:00:12.54 ID:EhbYbiNc0.net] >>178 どう無理なんだ? int main(void) { int i[100]; booger(&i); return 0; } void booger(int (*j)[100]) { printf("%u", sizeof *j); }
182 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 22:02:18.84 ID:lXB+sVuE0.net] いやいや sizeof はコンパイル時に確定する演算だから strlen みたいにポインタの指し先追っかけてデリミタ見つかるまでのバイト数とか 実行時依存じゃない
183 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 22:08:35.89 ID:8VZiX6Z0a.net] >>179 ん? 出来てんの? よく見たら宣言だけで初期化(確保)はしてないのな。 うーん。。。 ちょっとおいらの方でも書いて検証してみるわ。
184 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 22:10:30.59 ID:lXB+sVuE0.net] だから sizeof は型さえ類推できれば、変数の実態なくてもいいんだって なんなら () 付けて 型をかけばいい
185 名前:デフォルトの名無しさん [2017/05/21(日) 22:10:36.85 ID:EhbYbiNc0.net] 176でも初期化はしてないが
186 名前:デフォルトの名無しさん [2017/05/21(日) 22:13:36.56 ID:EhbYbiNc0.net] >>182 型をかけばいいって、こうか? if (sizeof i != sizeof(char*)) puts("ahem!!");
187 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 22:15
] [ここ壊れてます]
188 名前::17.46 ID:lXB+sVuE0.net mailto: >>184 ごめん、すべて ID:8VZiX6Z0a 君向け (>>178 他) [] [ここ壊れてます]
189 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 22:39:46.18 ID:fA6hmJLUa.net] >>179 分かってきたかも。 そのコードだと int *i; ってポインタ宣言すると iのままがポインタで、*iがポインタの指す中身だから。。。 配列の実体になるんだ。 もっとシンプルに初心者のやりがちな int main(void) { int i[100]; booger(i[100]); return 0; } void booger(int i[100]) { printf("%u",sizeof a[100]); } こう言うコードだとポインタのサイズが返ってくる。
190 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 22:41:32.99 ID:fA6hmJLUa.net] ちゅーか十何年ぶりのCだったわ。。。
191 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 22:44:28.27 ID:fA6hmJLUa.net] sizeof a[100]はタイポだけど許してね。 配列の変数名にiとか普通使わんのよ。 インデックス変数に使うからさ。 a[i]
192 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 06:47:21.18 ID:3isejMaU0.net] void f(void * v, int size, void * x){ *v=*x; } 上のコードで x の指し示す値のサイズが size であるとき どのようにvの指し示す場所にxが指し示す値を一度に代入できますか?
193 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 07:31:20.24 ID:uEzgaoxk0.net] memcpy(*v, *x, size);
194 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 07:34:49.91 ID:uEzgaoxk0.net] 訂正 memcpy(v, x, size);
195 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 07:37:02.82 ID:qnT1Y5yL0.net] >>189 学校の宿題か?
196 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 08:26:47.95 ID:jL5+dSxZ0.net] for (i=0; i<size; i++) ((int8_t*)v)[i] = ((int8_t*)x)[i];
197 名前:デフォルトの名無しさん [2017/05/22(月) 09:21:02.66 ID:uUtJqX7+0.net] while(size--) *(char*)v++ = *(char*)x++;
198 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 11:15:09.22 ID:jL5+dSxZ0.net] >>194 文法エラー (v, x のインクリメント操作は void * で評価されてる)
199 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 11:57:30.90 ID:WXjICEY9M.net] size の単位が何なのか分からんなぁ。
200 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 12:02:49.26 ID:HD7uOEeF0.net] (`・ω・´) ?
201 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 12:44:29.59 ID:+BU32a3i0.net] 最近はCMakeを使うのが普通なの? GNU Make覚える必要があるかな 話変わるけど、MakeFileってソース1つ追加するたびに、変更する必要がある?
202 名前:デフォルトの名無しさん [2017/05/22(月) 13:11:20.22 ID:uUtJqX7+0.net] >>195 すまん、素でボケてたw しかしこれ構文規則には違反してないぞ 意味論においてvoid*の増分が禁止されているって話で
203 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 13:14:30.22 ID:jL5+dSxZ0.net] >>199 あー コンパイルエラーと言えばよかったかw
204 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 13:14:54.60 ID:CEFnqLB20.net] Makefileを作らなくてもmake出来るケースがある事を最近は知らない奴が多い
205 名前:デフォルトの名無しさん [2017/05/22(月) 17:02:12.42 ID:uUtJqX7+0.net] cc love.c じゃなく make love でいい件か?
206 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 19:00:44.22 ID:J9ejs7e9M.net] makeのデフォルトルールだね .c.o はよく使う
207 名前:デフォルトの名無しさん [2017/05/22(月) 19:41:32.06 ID:h9CxmUP8M.net] >>201 まじか、知らなかった
208 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 19:45:14.71 ID:yWHDUG7V0.net] 作って覚えるVisual C#のようなゴールを設定して色々学ぶC言語の書籍はありますか?
209 名前:デフォルトの名無しさん [2017/05/22(月) 20:02:28.46 ID:uUtJqX7+0.net] 便利にゃ違いないけど ロクに指示も与えずよきに計らえってスタンスで 何が出来てくるのかに受動的でいることに 俺は我慢できないな 無関心な大将を有能な部下がフォローして事なきを得たってことだろ
210 名前:デフォルトの名無しさん [2017/05/22(月) 20:02:58.11 ID:uUtJqX7+0.net] だからスタックサイズのデフォも知らない馬鹿が大量発生するわけだし
211 名前: mailto:sage [2017/05/22(月) 20:03:31.72 ID:Zgh5eQVH0.net] >>195 (void *)c++ は1だけインクリメントされる,c99 では規格で決まっている
212 名前: mailto:sage [2017/05/22(月) 20:04:10.12 ID:Zgh5eQVH0.net] >>199 >意味論においてvoid*の増分が禁止されているって話で そんな決まりはない,void * のインクリメントは正確に1だ
213 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 20:15:17.89 ID:5FlvGyv/0.net] *vがsize分確保されてないんじゃね? 普通こうだよな void f(void ** v, int size, void * x)
214 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 20:16:31.52 ID:2o5iWMtc0.net] >>208 しらなんだ C99 からなのかね
215 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 21:22:47.69 ID:d/63nSXI0.net] voidがサイズ持ってるとか無理やり過ぎ 便利だけど
216 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 21:22:49.29 ID:lKEcPOEA0.net] >>208 ,209 うそつき
217 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 21:31:07.71 ID:oluY6epY0.net] 1になるのはgcc拡張だろ
218 名前:デフォルトの名無しさん [2017/05/22(月) 21:42:16.48 ID:uUtJqX7+0.net] そういうオチか ばかたれぃっ!!
219 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 23:25:56.35 ID:klirxPDR0.net] 息をするように嘘をつかれた
220 名前: mailto:sage [2017/05/23(火) 06:44:54.44 ID:a7cn3COJ0.net] >>214 C99 からガチで
221 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 09:00:04.50 ID:BTD2Lf690.net] >>208-209 >>217 C99規格には「(void *)c++ は1だけインクリメントされる」という規定はない。 C99規格書(ISO/IEC 9899)は英語なのでそれを元にしたJIS X3010で説明する。 X3010は章番号を変えてないのでISO/IEC 9899の該当文章は自分で確認してくれ。 ISO/IEC 9899:TC2 www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf JIS X3010 kikakurui.com/x3/X3010-2003-01.html > 6.2.5 型 > 型は,オブジェクト型(オブジェクトを完全に規定する型),関数型(関数を規定する型), >及び不完全型(その大きさを確定するのに必要な情報が欠けたもの)に分類する。 > void型の値の集合は空とする。それは,完全にすることのできない不完全型とする。 > void へのポインタは,文字型へのポインタと > 同じ表現及び同じ境界調整要求をもたなければならない。 voidは不完全型だがvoid*はオブジェクト型でchar*と相互に代入可能だ。 > 6.5.3.4 sizeof 演算子 > sizeof演算子は,関数型若しくは不完全型をもつ式,それらの型の名前を括弧で > 囲んだもの,又はビットフィールドメンバを指し示す式に対して適用してはならない。 > 型char,unsigned char若しくはsigned char(又はそれらの修飾版)をもつ > オペランドに適用した場合の結果は,1 とする。 不完全型であるvoidにはsizeofを適用できない。 char派生はサイズ1と明確に規定されているがvoidのサイズは規定がない。 だから(void *)c++が元の値のままでもC99規格違反ではない。
222 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 09:33:11.13 ID:6xCmSTo3M.net] >>218 「void はサイズ1だけど、sizeof するなよ」ってことじゃね? 「適用してはならない」が何なのかわからんけど。
223 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 09:47:33.99 ID:Mt8tSRb/M.net] >>219 サイズ1ってどこからわかるの?
224 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 11:13:27.58 ID:ufwaINxg0.net] ウンコQz得意の炎上学習法か とっとと死ねよ
225 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 11:24:40.32 ID:ufwaINxg0.net] >>218 ポインタの算術演算なので参照するところが違う 6.5.6-2の定義で加算可能なポインタは「オブジェクトへのポインタ」であり、 void *はキミが引用した6.2.5によりこの条件を満たさない 従ってQzはうんこ 今すぐ死ね 6.5.6 Additive operators 2 For addition, either both operands shall have arithmetic type, or one operand shall be a pointer to an object type and the other shall have integer type. (Incrementing is equivalent to adding 1.)
226 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 11:31:22.03 ID:YiZYoA3+0.net] 規格のどこかにあったはず
227 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 11:45:51.13 ID:ENsR+rXL0.net] おいQZ都合悪くなったら自演で叩きかよ おまえもうム板に向いてないから一人でコードオナニーしてろよ
228 名前: mailto:sage [2017/05/23(火) 12:35:42.70 ID:F0rvxaiH0.net] この件、過去に私が書いたコードを元に議論されたんだよね、当時の書き込みが見つからない… >>218 >>222 ありがとうございます。感謝です。うれしいです。 >>218 >void へのポインタは,文字型へのポインタと >同じ表現及び同じ境界調整要求をもたなければならない。 というのだから >>222 当然、(char *)++ と (void *)++ は同じだよね
229 名前: mailto:sage [2017/05/23(火) 12:37:05.33 ID:F0rvxaiH0.net] >>255 = >>256
230 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:38:56.50 ID:fCVURflQ0.net] 配置アドレスのアライメント要求が等しいのと アドレスの算術演算で同じ結果になるのは別じゃ?
231 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:50:27.27 ID:ufwaINxg0.net] このバカは https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Pointer-Arith.html#Pointer-Arith すら読まずに、C99 からガチでキリッ とか言ってんのか 死ね死ね死ね今すぐ死ね
232 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:57:12.80 ID:fCVURflQ0.net] ideone の C99 でも(同じwarninngで)文句言ってるな https://ideone.com/fDNXlH
233 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:03:46.65 ID:BTD2Lf690.net] >>225 「同じ表現及び同じ境界調整要求」と同じ演算ができるかは別の話だ。 const変数は非const変数と「同じ表現及び同じ境界調整要求」だが変更できない。 >>222 のJIS X 3010:2003該当部分は下記の通りだ。 voidはオブジェクト型ではなく不完全型だからvoid*に加減演算するのは規格外だ。 > 6.5.6 加減演算子 > 制約 加算の場合,両オペランドが算術型をもつか,又は一方のオペランドがオブジェクト型への > ポインタで,もう一方のオペランドの型が整数型でなければならない。(増分は 1 の加算に等しい)
234 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 15:16:25.17 ID:Eouhg5rk0.net] gccでも-pedanticオプションを使えばgcc拡張を警告するぞ -std=c99オプションに頼るな gcc-8の警告文 warning: wrong type argument to increment [-Wpointer-arith] clang-5の警告文 warning: arithmetic on a pointer to void is a GNU extension [-Wpointer-arith]
235 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 17:10:14.54 ID:ENsR+rXL0.net] QZ怒りの暴走
236 名前:デフォルトの名無しさん [2017/05/23(火) 17:50:06.75 ID:YSxby3lha.net] >>225 char型へのポインタ型のオブジェクトとvoid型へのポインタ型のオブジェクトが同じ境界調整を持つという規格が なぜchar型のオブジェクトとvoid型のオブジェクトが同じサイズという話になるの?
237 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:08:28.42 ID:F0rvxaiH0.net] >>230 なるほど、感謝です。 この議論、以前にも(自分のコードを対象に)問題になって、そのときは void *p; に対して p + 3 が意味をもつのか、というあたりだったのですが、当時の議論に誤りがあったのかもしれません。 なお手元のgcc5.3.0 では -ansi -Wall で警告を出してくれませんでした。 >>228 あなたにもとっても感謝してますよ これからもどうかご教示ください :-) >>233 えっ、そう読むのか…
238 名前:デフォルトの名無しさん [2017/05/23(火) 18:17:27.01 ID:YSxby3lha.net] >>234 それ以外にどう読むの? 「同じ表現」はポインタ型のオブジェクトの内部表現の話だよね 並列で書いてある「同じ境界調整」もポインタ型のオブジェクトの境界調整の話と捉えるのが自然じゃないの
239 名前:デフォルトの名無しさん [2017/05/23(火) 18:22:45.88 ID:YSxby3lha.net] >>234 あと、-Wpointer-arithって言われてるのに、なんでWallで確認してるの? Wallを勘違いしてない?
240 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:32:25.29 ID:ufwaINxg0.net] >>230 >(増分は 1 の加算に等しい) ++を増分演算って訳した上に「演算」を省略すると意味不明になるね
241 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:40:44.02 ID:F0rvxaiH0.net] >>235 該当部分を読むと JIS 6.2.5 >void へのポインタは,文字型へのポインタと同じ表現及び同じ境界調整要求をもたなければならない ( 39 ) 。 >同様に,適合する型へのポインタ同士の場合,修飾版であるか又は非修飾版であるか(const とかのことby QZ) にかかわらず, >同じ表現及び同じ境界調整要求をもたなければならない。 >構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。 >共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。 >これ以外の型へのポインタは,同じ表現又は同じ境界調整要求をもつ必要はない。 これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない far とか near とかでもなさそうだ。 細分化するとすればむしろポインタが指す先に関することではないだろうか? >>236 え?-Wall って全部だすんじゃなかったんですかね。たぶん勘違いしていると思う。
242 名前:デフォルトの名無しさん [2017/05/23(火) 18:40:46.39 ID:wffizmnr0.net] 汎用ポインタのインクリメントは、 エラーが出るか1進むかだろう。
243 名前:デフォルトの名無しさん [2017/05/23(火) 18:41:11.96 ID:7CxjD8/v0.net] >>235 境界調整が同じでもサイズの違うオブジェクトへのポインタはあるだろ char *a, (*b)[2]; K&R C では char* でよかった用途に、 なぜ、わざわざ void* を持ち込んだのか考えてみれ サイズが 1 なのが気持ち悪くて、 サイズが不明ということにするためだろうが この期に及んで void* が指す先のサイズが 1 とか言い出す どスカタンがもしいたら死刑でいい話だぞ
244 名前:デフォルトの名無しさん [2017/05/23(火) 18:46:38.37 ID:YSxby3lha.net] >>240 安価先間違ってない? ポインタの指すオブジェクトのサイズが一緒なんて一言も書いてないんだけど
245 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:53:09.03 ID:F0rvxaiH0.net] >>240 よくわかる、その意見 でも memcpy(), memmove() の引数が void * であることが、ちらりと頭に過ぎるんです これらは C で実装できない、てことですかね?
246 名前: mailto:sage [2017/05/23(火) 18:56:05.69 ID:F0rvxaiH0.net] ID:F0rvxaiH0 = QZaw55cn4c
247 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:57:52.22 ID:07biNjOo0.net] >>242 何言ってんの?
248 名前:デフォルトの名無しさん [2017/05/23(火) 19:00:42.38 ID:7CxjD8/v0.net] >>241 IDで追ってみたら、おまえさんの疑いは晴れた すまんかった
249 名前: mailto:sage [2017/05/23(火) 19:01:37.22 ID:F0rvxaiH0.net] >>244 void *memmove(void *dst, const void *src, unsigned n); void *memcpy(void *dst, const void *src, unsigned n); にて char * ではなく void * になっている理由はなにか?
250 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:09:35.34 ID:ufwaINxg0.net] >>240 いや第一目的は、全ての型へのポインタと互換(キャストなしで変換できる)なポインタが欲しかったのだ
251 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:17:52.52 ID:07biNjOo0.net] >>246 汎用なのになんでstring.hかと思ったことはある
252 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:31:53.76 ID:ZdN5y2SH0.net] >>238 Wallは全ての警告が有効になるわけではない https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wall > これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない > far とか near とかでもなさそうだ。 > 細分化するとすればむしろポインタが指す先に関することではないだろうか? 思いつかないなら、同じにすれば良いだけでしょ そこからなぜ「同じ表現」はポインタの話なのに、「同じ境界調整要求」はポインタの先のオブジェクトの話になるの? >構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。 >共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。 構造体/共用体型のオブジェクトが等しい境界調整要求を持つほうが非現実的でしょ
253 名前:デフォルトの名無しさん [2017/05/23(火) 22:10:38.61 ID:7CxjD8/v0.net] >>247 K&R C では char* をキャストなしで変換できてたが? int *a = malloc(4);
254 名前:デフォルトの名無しさん [2017/05/23(火) 22:57:03.61 ID:7CxjD8/v0.net] >>246 バス幅が8bitでないハードでもったいないことしないためだろ
255 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 23:35:41.22 ID:ZdN5y2SH0.net] >>238 の通りQZは「構造体型のオブジェクトが全て同じ境界調整要求をもつ」と主張してるからな この世に存在する大多数のコンパイラが規格に準拠していないという新説を主張しているぐらいだら QZの脳内には、余人には考えつかない理屈があるんだろ
256 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 03:30:23.68 ID:lEIYBmmJ0.net] QZはサイコ自演厨 くりかえすQZはサイコ自演厨
257 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 13:17:30.92 ID:spHSYyT3M.net] >>250 なんかトートロジーみたいになってきたけど、K&Rの何でもポインタとして使われてたchar *は ANSI以降はvoid *になったってことでしょ
258 名前:デフォルトの名無しさん [2017/05/24(水) 15:28:53.02 ID:QjzRyjLLE.net] すいませんこのスレにワッチョイを導入した経緯ってなんですか?
259 名前:デフォルトの名無しさん [2017/05/24(水) 18:24:04.77 ID:yvqQkV490.net] >>254 言い忘れ 今のCだって void* を void* 以外のポインタに変換できるが あくまで推奨としてキャストする慣習があるだけで、 キャストが義務化されたのは C++ なので >>247 はかなり斜め上 あることを言い忘れているのだろうと好意的に解釈しても 互換とは何かについて考察が甘いと言わざるを得ない
260 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 18:28:35.29 ID:UdPLjxGk0.net] cuda Cコンパイラーは void*型からの代入にキャストが無いとエラーになる 多分MSのcl使ってるからそうなる
261 名前:デフォルトの名無しさん [2017/05/24(水) 18:36:39.06 ID:yvqQkV490.net] >>257 そりゃ、管の方言だろ cl, gcc, clang-cl どれもok
262 名前:デフォルトの名無しさん [2017/05/24(水) 19:26:19.45 ID:E7SQQ2iip.net] PStructA pstA[10]; に対して &pstA[1] と pstA+1 は同じ一番目のポインタを返すという認識で合ってるでしょうか? ポインタ演算と配列の違いが腑に落ちてないです
263 名前:デフォルトの名無しさん [2017/05/24(水) 19:45:56.66 ID:L7sKwR/z0.net] アドレス取得が後か先かの違いじゃない? あんまり深く考えるとハゲるよ
264 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 19:50:38.77 ID:/WrwABBj0.net] >>250 逆ができたか? できなかったと記憶してるが
265 名前:デフォルトの名無しさん mailto:sage [2017/05/24(水) 20:44:36.72 ID:tHoyeV8z0.net] NVIDIAのOpenCLコンパイラはvoid*を演算するコードをコンパイルしようとすると落ちる。
266 名前:デフォルトの名無しさん [2017/05/25(木) 10:12:33.17 ID:NxjYanVn0.net] >>261 できる/できないを、何を基準に言っている? K&R 仕様の cc は死ぬほど寡黙なコンパイラで だからこそ lint が別で用意されていたんだぜ
267 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 10:14:55.51 ID:PLr2HWak0.net] for(int i=0;i<a+3;++i) でaがループの中で使われなくても毎回計算されなおしますか?
268 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 10:50:22.52 ID:jD8c7u6va.net] され直す。
269 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 11:11:35.32 ID:1r4kIkVY0.net] >>264 volatileなら必ずされなおす volatileじゃなければされなおされない可能性がきわめて高い
270 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 11:25:49.00 ID:jD8c7u6va.net] そうか、最適化で定数になってる可能性が高いな。
271 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 12:50:12.06 ID:0WgUeo5I0.net] >>263 ああ、思い出して来た K&R(コンパイラ)では代入でポインタの型検査を行わなかった 関数呼び出し関数プロトタイプがないのでできなかった すなわち全てポインタ型は互換だった ここにポインタの型検査を持ち込むんだからK&Rでの「互換」はANSI Cか必要とした「互換」ではなく当然に役にたたない 従って、>>250 は的はずれな指摘
272 名前:デフォルトの名無しさん [2017/05/25(木) 14:30:16.20 ID:NxjYanVn0.net] 落ち着けよ 代入と関数原型は関係ないし 格助詞がふじこってるぞ
273 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 15:03:16.39 ID:0WgUeo5I0.net] わざとそのように誤読したがるのはわかるが > 関数呼び出し時の検査は関数プロトタイプがないのでできなかった だな、編集ミスだ
274 名前:デフォルトの名無しさん [2017/05/25(木) 15:59:46.97 ID:NxjYanVn0.net] いや、だから代入と関数原型は関係ねえってば 代入が関数なのはC++だぞ
275 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 19:12:03.32 ID:0WgUeo5I0.net] 代入と関数呼び出しで型検査が必要になった 関係大あり
276 名前:デフォルトの名無しさん [2017/05/25(木) 21:47:16.88 ID:NxjYanVn0.net] 代入には型検査がもともとあった double a = 1.5; int b; b = a; b には (int)a の値が正しく代入され 決して a の bit63-32 が切り裂きコピーされることはない
277 名前:デフォルトの名無しさん mailto:sage [2017/05/25(木) 23:12:03.91 ID:0WgUeo5I0.net] >>273 ポインタの型の検査の話だが お前の短期記憶には障害が発生してるぞ
278 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 01:40:06.53 ID:SIwotEYO0.net] またQZが自演を始めたよ
279 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 05:57:05.69 ID:gxtuHd510.net] -Wshift-op-parentheses これを守ろうとすると括弧だらけでコードが糞になるから切ることにするよ
280 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 08:18:33.58 ID:IXNjZ2pR0.net] >>276 ifの条件節に代入を直接書けないのもうざいな
281 名前:デフォルトの名無しさん [2017/05/26(金) 09:57:19.90 ID:qaraDccl0.net] >>274 char *a = "QZ"; int *b; b = a; で、これの何が関数呼び出しと関係があるんだ? 俺のページフォールトはいいから おまえのラッチアップを何とかしようや
282 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 10:14:22.69 ID:IXNjZ2pR0.net] >>278 ポインタの型検査の話だってなんども言ってんだろ ポインタの型検査は代入と関数呼び出しで行われる わかったかバーカ
283 名前:デフォルトの名無しさん [2017/05/26(金) 11:12:11.70 ID:qaraDccl0.net] >>279 わかんねえよデフェクト野郎 代入での型の検査の話だが お前の制御記憶にはショートモードの故障が発生してるぞ
284 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 11:15:48.33 ID:IXNjZ2pR0.net] >>280 アホウ ANSI-Cでの型検査の話だ
285 名前:デフォルトの名無しさん [2017/05/26(金) 11:33:23.33 ID:qaraDccl0.net] >>281 アホウはおまえ >>240 から始まって247-250と流れてるのが おまえにはANSI-Cの話に見えるのか どうでもいいがCの規格文書名はISO/IEC9899だろうが 未だにX3.159-1989を拠り所としている化石かおまえ?
286 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 13:06:41.64 ID:IXNjZ2pR0.net] アホウ ポインタの型検査が規格になったのはANSI-Cだ > K&R C では char* でよかった用途に、 > なぜ、わざわざ void* を持ち込んだのか考えてみれ > サイズが 1 なのが気持ち悪くて、 > サイズが不明ということにするためだろうが このバカ(お前?)が決定的に間違ってる void*が必要になったのはポインタ型検査に伴い発生する不都合を解消するためだ それがあらゆる型へのポインタと互角なポインタであり、その役割をvoid *に割り当てた
287 名前:デフォルトの名無しさん [2017/05/26(金) 15:24:42.21 ID:qaraDccl0.net] >>283 > ふじこふじこ >>250 もっぺん読め
288 名前:別に不都合なんか起きてなかったぜ どうでもいいが、あらゆる型へのポインタと互角に戦えるポインタがあったとして それ以外のポインタってつおい? compatibility を日本語では互換性だ ボビーオロゴンみたいな日本語を素でやるな池沼 [] [ここ壊れてます]
289 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 18:45:52.60 ID:IXNjZ2pR0.net] >>284 本当に頭悪いなお前 K&Rではポインタの型検査を行ってなかったので、char *(に限らず全てのポインタ)が互換だっただけだ
290 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 18:54:11.28 ID:IXNjZ2pR0.net] ここの文脈では相互に変換できるポインタを「互換」と呼んだ A pointer to void may be converted to or from a pointer to any incomplete or object type.
291 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 19:53:13.29 ID:SIwotEYO0.net] きえろQZ!
292 名前:デフォルトの名無しさん [2017/05/26(金) 22:00:35.72 ID:qaraDccl0.net] >>285 で、どんな「不都合」が生じたというんだ? 空想論を一切含まない具体的な例示をしてみろ
293 名前: mailto:sage [2017/05/26(金) 22:03:50.72 ID:EYAykb/80.net] K&R1 なんて今となってはどうでもいい‥ >>287 やだよ
294 名前:デフォルトの名無しさん [2017/05/26(金) 22:06:47.38 ID:qaraDccl0.net] K&R1はCの元々のコンセプトを純粋に美しく語っているもので これに嫌悪感を持ったり無関心な者はCの本質を知らないのではなく解りたくない者で 去る者は拒まずの消極的破門でいい
295 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 22:14:56.87 ID:efrj6x/y0.net] >>287 >>289 自演?
296 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 00:26:52.71 ID:XzB/9PvX0.net] >>288 バーカ void *のように他のポインタと互換なポインタが無けりゃ memcpyとか一々キャストしなきゃならないだろ 本当に頭が悪い
297 名前:デフォルトの名無しさん [2017/05/27(土) 06:58:12.92 ID:ucevWPfX0.net] >>292 戯れ言も、せめて事実に基づいてぬかせシャブ中野郎 キャストなんかいらねえのに おまえが何か思い込んでるのは コンパイラに警告されたからだろうが 警告って何かわかってねえのまる出しだな
298 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 12:56:06.47 ID:XzB/9PvX0.net] ANSI-CはK&Rで書かれたソースがそのままコンパイルできるように作られたので、エラーではなく警告にしたのは当たり前だ バカすぎるぞ お前
299 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 15:45:49.87 ID:4RTqTK2k0.net] >>285 >K&Rではポインタの型検査を行ってなかったので、char *(に限らず全てのポインタ)が互換だっただけだ が事実だったら >>292 >memcpyとか一々キャストしなきゃならないだろ
300 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 15:46:27.40 ID:4RTqTK2k0.net] >>285 >K&Rではポインタの型検査を行ってなかったので、char *(に限らず全てのポインタ)が互換だっただけだ が事実だったら >>292 >memcpyとか一々キャストしなきゃならないだろ ではないのではないだろうか?
301 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 19:48:36.25 ID:bhlzwwxY0.net] QZ怒りの自演がバレるwwww
302 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 20:24:35.80 ID:jOh20AuV0.net] voidポインタでもキャストしてるわw
303 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 22:37:43.80 ID:y4s2F+UB0.net] freeの戻り値って普通キャストしていたよね
304 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 23:30:24.62 ID:3hOJokwS0.net] (*´ω`*)?
305 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 23:45:53.19 ID:vBffp2jh0.net] (* ͡° ͜ʖ ͡°*)=3
306 名前:デフォルトの名無しさん [2017/05/28(日) 07:21:49.29 ID:cMxKlmAA0.net] >>294 ほらな、警告とは何かがわかってない X3.159-1989ではエラーも警告も定義していない それらは特定のコンパイラ製品の挙動だ 特定のコンパイラにdisられたら 自分が悪いんだろうとしか思えない ど初心者の心理からいつまで経っても 卒業できないポンコツPG乙
307 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 20:40:53.29 ID:5m3UytZ+0.net] さあQZが自演するぞ
308 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 20:44:17.90 ID:5m3UytZ+0.net] ゴミ無職QZのクソコード自演は本当に気持ち悪い
309 名前:デフォルトの名無しさん [2017/05/28(日) 21:50:21.98 ID:HrcHJfqb0.net] >>299 いつの時代のfreeは値返したの?
310 名前:デフォルトの名無しさん [2017/05/28(日) 21:54:08.04 ID:QPUrPhGM0.net] ANSI C以外を語るじじいが居座るスレかよw
311 名前:デフォルトの名無しさん [2017/05/28(日) 21:55:27.91 ID:cMxKlmAA0.net] K&Rにはvoidがなく返却値の型を省略すればintと見なされた returnがないか空のreturn;は不定を返した これだけ言えばわかるな?
312 名前:デフォルトの名無しさん [2017/05/28(日) 22:01:09.82 ID:QPUrPhGM0.net] C言語はUNIXの仕様が前提だから、そこまで含めて移植しなかったから混乱した。
313 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 22:04:17.46 ID:VrUpCcMk0.net] (void)free(ptr) ?
314 名前:デフォルトの名無しさん [2017/05/28(日) 22:10:09.67 ID:HrcHJfqb0.net] >>307 いや、freeが何返してたのか解らんけど。それをcastする理由も。 まぁ、一生使うことのない知識だからどうでも良いけどね。
315 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 22:37:19.96 ID:7TA+N7360.net] >>307 でvoidもないのに何にキャストしてたって? w
316 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 23:16:58.78 ID:KL+xXoJsM.net] 只の釣りだな
317 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 01:09:58.10 ID:lyV0c6X20.net] >>307 たびたび見受けられるけれど、『返却値』を使うのはやめて欲しい 関数に与えた値をそのまま返すとは限らないんだから 普通に返り血、戻り値じゃあかんの?
318 名前:デフォルトの名無しさん [2017/05/29(月) 01:16:09.85 ID:j0cmL5ae0.net] 返却値と返り値で、何が違うの? 確かに返却値って言葉はあまり使わない気がするけど、そんなこだわるほどのもん?
319 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 01:17:52.13 ID:zS+u+zXg0.net] 排泄値にしよう
320 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 01:27:03.01 ID:lyV0c6X20.net] >>314 返却って人から借りた物をそのまま返すという印象が強い 個人の見解と言ってしまえばそれまでだけれども
321 名前:デフォルトの名無しさん [2017/05/29(月) 01:53:50.29 ID:j0cmL5ae0.net] >>316 その君の言うところの意味が、「返す」と何が違うの?って話。 「返す」を大辞林で引いたら一番目の意味に「返却」と書いてある事実をどう考える? 所詮その程度の主観的な印象に過ぎない物を、人に押し付けられても… まあ、2chだし、言うのも勝手か。
322 名前:デフォルトの名無しさん [2017/05/29(月) 02:14:29.26 ID:JtPPrjAE0.net] >>317 返すの意味の一つに返却があるというだけでイコールでは無いと思うけどね。 例えば”上げる”とか辞書引いたら色んな意味が載ってて一番目に載ってる意味と関連するわけではないということは解るよね。
323 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 02:20:02.64 ID:lyV0c6X20.net] >>317 返すって言うところを返却に置き換えることが出来るのは限定されるでしょうに あなたは釣り銭を返却するって言うつもり? 受けた恩を返却するの?
324 名前:デフォルトの名無しさん [2017/05/29(月) 05:18:14.60 ID:6wk42oha0.net] >>313 それは日本鉱業標準審査会に言え 俺に言うな、わかった?
325 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 06:20:41.78 ID:RCqUfmRt0.net] >>313 スプラッターな言語やね
326 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 06:24:13.95 ID:KA+g5PFR0.net] $$$4.3$$$ "V"="1.3335412","0","1","3Q",
327 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 07:45:45.57 ID:cJoa6MEM0.net] >>320 石炭でも掘るのかよ?
328 名前:デフォルトの名無しさん [2017/05/29(月) 09:05:50.24 ID:j0cmL5ae0.net] >>319 おかしくないと思うけど?
329 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 09:08:17.15 ID:m6wef0Zf0.net] 釣り銭がでてくる所は返却口って呼称してることが多いが まぁ
330 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 09:15:26.79 ID:kbe0Kudi0.net] まさかと思って調べてみれば JIS X3010 では本当に返却値になっているんだな
331 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 09:38:12.28 ID:5HzXgXAz0.net] おいQZそれ以上発狂するな お前の無知がバレるぞ
332 名前:デフォルトの名無しさん [2017/05/29(月) 09:40:08.06 ID:3z87Obs+0.net] ここまで「却」という漢字の調べた者なしw 「却」の意味は答えると「返却値」はおかしいが、英語でReturnと言ってるので返却と翻訳したのだろう。
333 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 10:07:07.99 ID:h1ztVJLm0.net] 返すのは制御で、その時に渡す値くらいに思ってたな
334 名前:age [2017/05/29(月) 11:00:15.37 ID:T5H0S0Nm0.net] Windows環境のHANDLE型について教えて下さい。 Windows10/64環境下とWindows7/64環境ではHANDLE型の扱いは異なるのでしょうか? HANDLE型が使用できない処理系の為に HANDLE型を返すWindowsのAPIにラッパする形でHANDLE型を整数(unsigned long)にキャストするDLLを作成し、 HANDLE型が使用できない処理系から作成したDLLを通して目的のAPIを使用していました。 Windows7の32/64ビット環境では動作しているのですが、 Windows10の64ビットでは動作しません。 (Windows10/32ビットでは動作しています。)
335 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 11:13:27.19 ID:TgEUVyWp0.net] 戻り値を捨てるときはvoidにキャストしてるな
336 名前:デフォルトの名無しさん [2017/05/29(月) 11:27:00.44 ID:JtPPrjAE0.net] >>330 https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx HANDLEはPVOID PVOIDはvoid* つまり64bitのWindowsアプリケーション(LLP64環境)では64bit 同環境でunsigned longは32bit つまりWindows7ではたまたま動いてるだけ。
337 名前:デフォルトの名無しさん [2017/05/29(月) 13:16:39.33 ID:6ZDN/iGxa.net] >>330 Windows SDKの話をここでするなというやつがいるから、Windows SDKスレを探したらないんだなw
338 名前:653 mailto:sage [2017/05/29(月) 13:22:41.71 ID:BOg3kn5n0.net] win32apiスレがあるじゃん
339 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 19:29:40.57 ID:5HzXgXAz0.net] おいQZ下手に知識をひけらかそうとするなよ 無知がバレるぞ
340 名前:片山博文MZ mailto:sage [2017/05/29(月) 19:51:26.34 ID:EYaE0z6gd.net] マイケルソフトは標準化を破壊し、混乱をもたらす者。
341 名前:片山博文MZ mailto:sage [2017/05/29(月) 19:57:52.02 ID:EYaE0z6gd.net] パソコンの中に主権があるとしたら、我々の主権はマイケルソフトに蹂躙され続けている。
342 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 20:21:44.72 ID:mrHKi14mM.net] なら使うのやめたら?
343 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 20:38:58.27 ID:5HzXgXAz0.net] QZ怒りのLinux
344 名前:デフォルトの名無しさん [2017/05/29(月) 20:55:21.03 ID:zjgINM2w0.net] ここの過半数が訳語「返却値」を知らないわけか マジでアホの集まりだな
345 名前:デフォルトの名無しさん [2017/05/29(月) 21:35:32.81 ID:j0cmL5ae0.net] │ │ し
346 名前:片山博文MZ mailto:sage [2017/05/29(月) 21:45:39.05 ID:EYaE0z6gd.net] ぶらぶらうざい、ブラウザ
347 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 21:49:57.04 ID:ZHccw+L90.net] 返却値知ってる俺カッケー ってか w
348 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 22:27:06.81 ID:6SN6+L3k0.net] 少なくとも返り血というなら返却血だな
349 名前:デフォルトの名無しさん [2017/05/29(月) 22:54:17.27 ID:hRA+Cftk0.net] returnは、他動詞だから、返す値だろ。返された値 シェーン、カムバック!
350 名前:330 [2017/05/30(火) 09:45:25.55 ID:Kzko1WIk0.net] >>332 ありがとうございました。 「たまたま動いているだけ」が妙に納得しました。
351 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 20:02:22.03 ID:C+7xWm9c0.net] このスレきも!って思ったらQZが自演しまくてるのか
352 名前:デフォルトの名無しさん [2017/05/31(水) 05:42:53.04 ID:89AX9+Wb0.net] >>343 知らないおまえは最悪に格好悪い これだけは間違いない
353 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 06:38:16.67 ID:/NpZlBRIM.net] >>348 だれも「知らない」なんて言ってないんだが... 思い込みでバグ作り込むタイプやね w
354 名前:デフォルトの名無しさん [2017/05/31(水) 06:57:32.87 ID:g7bIgogk0.net] 俺は知らんなぁ。 知ってると何か良いことあんの?
355 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 09:15:02.98 ID:jPWlNl/x0.net] 異なる翻訳単位に存在するtypedefで定義された型を参照するには どうやればできますか?
356 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 11:27:45.76 ID:tgfSYh/d0.net] typedef した部分を分離独立して、必要に応じて #include とかは普通にアリだけど。 この場合、#include した時点で同じ翻訳単位になってしまいそうだし。 A.できません(たぶん
357 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:08:17.16 ID:BjVTieBy0.net] 参照する必要が出た時点で共有しなきゃならんでしょ 適当なヘッダで宣言して必要に応じてincludeだな 逆に、その型を公開できない理由があるの?
358 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:21:23.09 ID:9Uam09Ht0.net] 何でインクルードすると同じ翻訳単位になるの?
359 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:33:24.61 ID:cF3ZhhKb0.net] プリプロセス終了後の1ソースの範囲が翻訳単位だし ソース中の #include によって展開されたものは同じ単位内だべさ
360 名前:デフォルトの名無しさん [2017/06/01(木) 22:22:53.65 ID:iiFY2Tb80.net] >>349 いや、おまえは知らない そうでなければ343のような発言には至りえない
361 名前:デフォルトの名無しさん [2017/06/01(木) 22:23:46.02 ID:iiFY2Tb80.net] 知ってても、このやりとりで知っただけのくせに それ以上に訳知り顔すんじゃねえぞ
362 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 22:50:17.11 ID:JcXv0anO0.net] >>356 > いや、おまえは知らない って大見得切ったのに >>357 > 知ってても っていきなりトーンダウンするチキン乙 w
363 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 23:19:34.58 ID:Dt+iD1aba.net] 相変わらずどうでもいい言い争いをしてるな
364 名前:デフォルトの名無しさん [2017/06/01(木) 23:36:18.95 ID:Gz+/nkqG0.net] 知ってたからといって、どうというものでもないものをよくここまで引っ張れるよね。
365 名前:デフォルトの名無しさん [2017/06/02(金) 05:53:52.88 ID:3GNvn+Lb0.net] 効いてる効いてるw 俺、別に言ってること変えてねえぜ まあ、そういうことにしなきゃ立場ねえのはわかるが
366 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 07:14:07.93 ID:ROv7EaIxM.net] 自分だけが知ってるスッゴい知識 をバカにされた老害発狂 w
367 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 11:34:32.62 ID:pA0XtcoN0.net] 同じファイルをインクルードしたところで .cが違えば翻訳単位も違うだろ
368 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 12:19:23.31 ID:V1/OI3VR0.net] 異なる翻訳単位に存在するtypedefで定義された型を参照するには 自分の翻訳単位に同じ定義を持ち込むしかない
369 名前:デフォルトの名無しさん [2017/06/02(金) 13:28:22.87 ID:fUQLBdQr0.net] 関数側から見て返す値がリターン(Return)値 関数を呼び出した側が受け取る値をリザルト(Result)値 私はこの二つでしか理解しておりませぬ
370 名前:デフォルトの名無しさん [2017/06/02(金) 19:53:55.49 ID:4eAI2C8m0.net] はあ? 無知をバカにされて発狂してんのはおまえだろw
371 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 21:04:53.84 ID:kW0O8rcbM.net] >>365 Pascal だと関数側が result だけどね。 Cしか知らないなら仕方ないけど。
372 名前:デフォルトの名無しさん [2017/06/03(土) 19:01:35.82 ID:d/bMfhNd0.net] 「自分だけが知ってる」すっごい知識だっておバンバン 自分の国の公文書に書いてあることなんだが あ、自分の国じゃなかったか なるほどそのようで
373 名前:デフォルトの名無しさん [2017/06/03(土) 20:31:14.37 ID:ez6eSYjJ0.net] >>368 公文書に書いてあるんだ。それって何の公文書?
374 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 23:15:17.12 ID:0mDMXJvk0.net] >>369 JIS X3010:2003のことだろ C99のISO規格(ISO/IEC 9899:1999)を翻訳して日本工業規格(JIS)に標準化したもの
375 名前:デフォルトの名無しさん [2017/06/03(土) 23:29:36.08 ID:ez6eSYjJ0.net] >>370 JIS規格票は公文書だったのか。それは知らなかった。
376 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 23:39:27.80 ID:0mDMXJvk0.net] >>371 一応JISは法令に基づいて制定される日本の標準規格だし公文書と言ってもいいんじゃないの? https://ja.wikipedia.org/wiki/%E5%B7%A5%E6%A5%AD%E6%A8%99%E6%BA%96%E5%8C%96%E6%B3%95
377 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 00:25:08.91 ID:X8vsjvHi0.net] 私文書じゃないだろ。
378 名前:デフォルトの名無しさん [2017/06/04(日) 02:48:19.44 ID:0v3tAx3a0.net] 公文書なら無料にするべきだ
379 名前:デフォルトの名無しさん (ワッチョイ f9d1-N+Y+) mailto:sage [2017/06/04(日) 08:52:49.42 ID:aIMLeetf0.net] 複写に費用や手数料取られるのは当たり前だろ。 図書館で借りれば無料なんだし。
380 名前:デフォルトの名無しさん (ワッチョイ 6a37-1CPh) [2017/06/04(日) 11:22:12.97 ID:QtczELPi0.net] 公文書の無料と言うのは、国民全員の負担になるということなので、実はあまり良くない。 ほとんどの人が損をするという意味で、携帯の新規機種変無料とかと似たような問題。
381 名前:デフォルトの名無しさん (ワッチョイ f9d1-N+Y+) mailto:sage [2017/06/04(日) 21:48:59.17 ID:uAW2AjVo0.net] 0円携帯禁止したせいでケータイメーカ全滅したけどな。 エコポイントのせいかも知れんが。
382 名前:デフォルトの名無しさん (ワッチョイ 66e3-rLqX) mailto:sage [2017/06/04(日) 22:00:00.35 ID:xWX/pEI60.net] >>377 ツートップなんてやったもんだから、 対象外のメーカー製造取りやめたしな
383 名前:デフォルトの名無しさん (ワッチョイ 09aa-V2gy) mailto:sage [2017/06/04(日) 22:17:29.69 ID:EH/r73Ar0.net] >>375 コピーしてるの?
384 名前:デフォルトの名無しさん (ワッチョイ 6a37-1CPh) [2017/06/05(月) 00:56:05.33 ID:9KIhNzrG0.net] >>377 それは0円なんて言う訳のわからんガラパゴス作戦に乗っからんと売れないようなゴミを作ってたからでしょ。
385 名前:デフォルトの名無しさん (ワッチョイ ed23-zUMb) mailto:sage [2017/06/05(月) 01:20:59.03 ID:/8LBEV6v0.net] おいQZ自演しないでゴミコードを晒せよ
386 名前:デフォルトの名無しさん (ワッチョイ ed23-zUMb) mailto:sage [2017/06/05(月) 04:45:59.05 ID:/8LBEV6v0.net] QZって無知を指摘されるとすぐ自演でかき消すよな お前もう気持ち悪いだけだから消えろよム板から
387 名前:デフォルトの名無しさん (ワッチョイ ed23-zUMb) mailto:sage [2017/06/05(月) 04:49:01.59 ID:/8LBEV6v0.net] おいQZゴミ煽りはもうやめろ おまえはさっさとウンコードマニア殿堂入り級のゴミコードを貼ってろよ
388 名前:デフォルトの名無しさん (ワッチョイ ed23-zUMb) mailto:sage [2017/06/05(月) 04:50:02.91 ID:/8LBEV6v0.net] 過去にすがるだけのゴミ無職がご高説垂れるなよ無職が
389 名前:デフォルトの名無しさん (ワッチョイ 66a2-zUMb) mailto:sage [2017/06/05(月) 16:44:47.93 ID:bGR3O5j30.net] おまえのゴミコードじゃ何も語れないから
390 名前:デフォルトの名無しさん (ワッチョイ 91db-/x3A) mailto:sage [2017/06/05(月) 16:51:56.25 ID:9PUOi1A/0.net] >>367 resultはボーランドが始めた方言だろ
391 名前:デフォルトの名無しさん (ワッチョイ 25aa-YsH8) [2017/06/05(月) 23:06:28.96 ID:s9HDUBeH0.net] お前ら書いたプログラムをaddressSantizerやThreadSantizer、valgrindとかでチェックしながらテスト実行してる?
392 名前:デフォルトの名無しさん (ワッチョイ 3511-YtzE) mailto:sage [2017/06/05(月) 23:45:19.00 ID:agBnyIwY0.net] Cで書かれたプログラムがどのように機械語に翻訳され実行されるのかについて書いてある資料ってありませんか? C言語の書き方的なWebサイトや本は腐るほどありますがCのコースコードがコンパイルされリンクされ実行可能なバイナリが出来上がり そのバイナリ(必要なら関連する動的リンクライブラリも)がメモリにロードされ実行される過程をある程度詳しく解説している物はまず見かけません この過程で良く使用されるファイルフォーマットの情報も欲しいです 当然実行環境や開発環境によって差異はあると思いますが基本的なところは変わらないはずですよね? 今のところターゲットはWindowsのPEと組み込み向けのバイナリファイル(メモリイメージ)で、開発環境はひとまずVC++とGNU系を考えています 最近C/C++を本格的に使わざるを得なくなり調べているのですがこのへんの情報が得られずに悩んでいます スレ違いだったらすみません
393 名前:デフォルトの名無しさん (ワッチョイ dd9f-CnD/) mailto:sage [2017/06/06(火) 01:06:07.57 ID:uiQBRp2m0.net] コンパイラの実装がどうなってるかを知りたいのか、 それとも機械語がどう実行されているのかを知りたいのか 後者ならアセンブリ言語を勉強すればいい気がする 参考書も探せばありそう
394 名前:デフォルトの名無しさん (ブーイモ MM49-CnD/) mailto:sage [2017/06/06(火) 01:20:44.75 ID:aIR29BXyM.net] >>388 本読むのが一番 おすすめは、コンピュータの構成と設計、パターソン他著
395 名前:デフォルトの名無しさん (ワッチョイ 91db-/x3A) mailto:sage [2017/06/06(火) 01:48:28.43 ID:MUdbHmDP0.net] x86ならアセンブルソース出すオプションあるだろ
396 名前:デフォルトの名無しさん (ワッチョイ 91db-/x3A) mailto:sage [2017/06/06(火) 01:50:16.07 ID:MUdbHmDP0.net] GNUだとx64もあるのかな? まだやったことないや
397 名前:デフォルトの名無しさん (ワッチョイ 66a2-zUMb) mailto:sage [2017/06/06(火) 03:59:12.40 ID:hzSn699I0.net] QZはうざいから黙ってて
398 名前:デフォルトの名無しさん (ドコグロ MMed-Tm/A) mailto:sage [2017/06/06(火) 07:16:30.22 ID:rRaTvlwzM.net] >>388 > 最近C/C++を本格的に使わざるを得なくなり調べているのですがこのへんの情報が得られずに悩んでいます 使うだけならそんな情報は要らんだろ ネタでないならもっとピンポイントで聞かないと本読めと言うような回答しか返しようがない
399 名前:デフォルトの名無しさん (ワッチョイ 66aa-7ey3) mailto:sage [2017/06/06(火) 07:48:32.18 ID:Q6prYP2u0.net] LLVM 言語マニュアル(Langu
400 名前:age Reference Manual) 日本語訳 http://www.h3.dion.ne.jp/~mu-ra/llvm/LangRefJ.html [] [ここ壊れてます]
401 名前:デフォルトの名無しさん (ワッチョイ b96f-rLqX) mailto:sage [2017/06/06(火) 10:44:02.61 ID:euIMzFdw0.net] >>388 デバッガーの使い方かアセンブリ言語を調べたらいいんじゃない? 「C言語をアセンブリ言語に翻訳してどうやってコンピュータを動かすか見てみよう」 っていう企画はネットや紙面でたまに見かける gccならオプションでアセンブリ言語を出力できたはず
402 名前:デフォルトの名無しさん (アウアウカー Sad5-6jhl) mailto:sage [2017/06/06(火) 12:13:04.78 ID:HfSY3J2pa.net] >>388 「ハロー"Hello, World"」っていう本が面白い linuxでの話だがシステムコール呼び出しやmain関数の前に行われる処理、共有ライブラリの仕組み、elfフォーマットなどCプログラミングの裏にあるものについて詳しく書かれてる まあ他の人も言ってるように普通にプログラミングするのにそんな情報は当分いらないけどな
403 名前:デフォルトの名無しさん (ワッチョイ 91db-/x3A) mailto:sage [2017/06/06(火) 20:27:56.37 ID:MUdbHmDP0.net] デバッグやリバーs
404 名前:388 (オッペケ Sr3d-YtzE) mailto:sage [2017/06/06(火) 20:33:35.53 ID:5Y/t1Obrr.net] レスありがとうございます C/C++コンパイラに与える物に関する情報は沢山あるのですが、その先で何をやっているかについて解説されている資料は一気に減る気がします リンカについて解説されている資料もあまり見ませんし、ほとんどはリンカはコンパイラが勝手に呼び出す物とされているように思います 今のところやりたいのはAPIフックやラッパーDLLなどを利用した既成アプリケーションへの介入と、組み込み系のアセンブラとCを混合した開発です 後者の場合は純正の開発ツールを使う場合に限りそれなりの資料がありますがgccなどで開発する場合の情報は多くない上に錯綜していたりします >>389 昔組み込み系のソフトウェアをアセンブラで書いたことがあるのでアセンブラは多少読めますがCとの繋がりが見えてきません アセンブラは違っていなければ何でもOKな所があるというか、特に生で動かす場合はレジスタの使い方からコードの配置やジャンプの方法まで 好きに決められますけど、Cだとその辺は全てブラックボックスですよね >>391 ,396 アセンブルリストを出せるのは知っていますが出てきたコードはそのまま実行出来る物ではないですよね?たとえば別のソースコードの関数を 呼ぶようなケースでは呼び出し元が呼び出し先のアドレスを把握できていないと動かないはずです >>397 おぉ、探していた物一つはまさにそんな感じの情報です。Windows向けのがあれば理想的でしたがその本を探してみます
405 名前:デフォルトの名無しさん (ワッチョイ dd11-zUMb) mailto:sage [2017/06/06(火) 20:38:47.84 ID:xjZg+i4X0.net] Advanced windows かの?
406 名前:デフォルトの名無しさん (ドコグロ MM12-TiZ7) mailto:sage [2017/06/06(火) 21:05:10.62 ID:i8rk4NdIM.net] 知りたいことは言語じゃなくてOSの仕様なのに 言語の延長だと思い込んでるから情報にたどり着けないんだろう
407 名前:デフォルトの名無しさん (ワッチョイ 9e7e-SN6U) mailto:sage [2017/06/06(火) 21:18:01.76 ID:vqgdCAO10.net] ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ が挙げられているが、その著者の坂井さん関連で本屋で実際手に取って みて好きなのを選んだらどうだろうか。 12ステップで作る組込みOS自作入門 www.amazon.co.jp/dp/4877832394/ リンカ・ローダ実践開発テクニック www.amazon.co.jp/dp/4789838072/ 熱血! アセンブラ入門 www.amazon.co.jp/dp/479804180/
408 名前:デフォルトの名無しさん (ドコグロ MM12-Tm/A) mailto:sage [2017/06/06(火) 21:33:57.74 ID:6cAGm0S8M.net] >>399 > ほとんどはリンカはコンパイラが勝手に呼び出す物とされているように思います コンパイラとコンパイラドライバの区別もついてないのに背伸びしすぎ w そもそもgccでもアセンブラを混在させたきゃインラインアセンブラで充分だしドキュメントも揃ってる
409 名前:デフォルトの名無しさん (アウアウカー Sad5-rT7Q) mailto:sage [2017/06/06(火) 23:03:45.40 ID:1lY7TIjFa.net] https://www.amazon.co.jp/Linkers-Loaders-JohnR-Levine/dp/4274064379
410 名前:デフォルトの名無しさん (ワッチョイ 2997-8pkt) [2017/06/06(火) 23:37:37.16 ID:Qy4U0ic00.net] >>403 言ってることが嘘くさいよな。コンパイル、リンクの流れを知らないのは。
411 名前:デフォルトの名無しさん (ワッチョイ f9cf-q7dZ) [2017/06/07(水) 01:45:32.01 ID:MW2os+Jx0.net] ヒカル TV出演「年間5億は稼ぐ勢いですね」 https://www.youtube.com/watch?v=G7qL6ftpets 第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ! https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s ユーチューバーの儲けのカラクリを徹底検証! https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s 【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開! https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s 誰も言わないなら俺がYouTuberのギャラ相場を教えます https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法 https://www.youtube.com/watch?v=Fr0WXXZRMSQ 最高月収5000万円だとさ。年収じゃなくて「月収」な おまえらもyoutubeに動画投稿したほうがいいぞ。副業にぴったしだ やろうと思えばスマホがあればできるぞ 最低2年はやらないとここまではいかないだろうけど才能とアイデアと 企画力と継続力があればが大儲けできる可能性がなくもない まだまだ他の職種に比べれば競争率は低いからオススメ 顔出したくないならラファエルみたいに仮面つければいい
412 名前:デフォルトの名無しさん (ワッチョイ f9cf-q7dZ) [2017/06/07(水) 01:46:59.80 ID:MW2os+Jx0.net] ヒカル TV出演「年間5億は稼ぐ勢いですね」 https://www.youtube.com/watch?v=G7qL6ftpets 第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ! https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s ユーチューバーの儲けのカラクリを徹底検証! https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s 【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開! https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s 誰も言わないなら俺がYouTuberのギャラ相場を教えます https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法 https://www.youtube.com/watch?v=Fr0WXXZRMSQ 最高月収5000万円だとさ。年収じゃなくて「月収」な おまえらもyoutubeに動画投稿したほうがいいぞ。副業にぴったしだ やろうと思えばスマホがあればできるぞ 最低2年はやらないとここまではいかないだろうけど才能とアイデアと 企画力と継続力があればが大儲けできる可能性がなくもない まだまだ他の職種に比べれば競争率は低いからオススメ 顔出したくないならラファエルみたいに仮面つければいい ハロウィン用でいろいろな仮装マスク売ってるからオヌヌメ
413 名前:388 (オッペケ Sr3d-YtzE) mailto:sage [2017/06/07(水) 07:27:30.60 ID:ahDmd+gPr.net] 一番使用経験があるのがインタプリタで、次がアセンブラです。この二つは一から実用になる物を作ったことがありますが コンパイラは既存のコードを改造するのがせいぜいで何かを一から作ったことがありません C/C++はVC++にプロジェクトを読み込んでビルドしたり、configure→makeやgccのコマンドを叩くくらいしかできないです >>400 ,402,404 全部買える余裕はないのでまずは本屋で眺めてみます >>403 組み込み系だとアセンブラからCで書かれたコードを呼び出す例も普通にあるようです リセットベクタから最初に実行されるコードはアセンブラで書くのが一般的みたいですし >>401 あ、なるほど。実行する部分はOSの仕事ですね
414 名前:デフォルトの名無しさん (ワッチョイ 250d-k7rq) mailto:sage [2017/06/07(水) 11:32:37.62 ID:F8quZWoL0.net] >一から実用になる物を作ったことがあり を指してるのは (自作した)インタプリタと (自作した)アセンブラ じゃなく 既存のインタプリタと既存のアセンブラによって得られた生成物 だよな?
415 名前:デフォルトの名無しさん (ワッチョイ 66aa-7ey3) mailto:sage [2017/06/07(水) 11:49:04.14 ID:SSzPpmQQ0.net] 情報処理資格の組み込み・エンベッドのテキストに書いてある 宇宙産業・医療機器・産業機械などは、組み込みの高資格を持っていないと無理。 この領域では、すぐに人が死ぬから、MISRA-C に準拠していないと、使えない。 国際的に、MISRA-C 無しのCは、製品には使えない 各人が、個別のアセンブラで学ぶことは、 各人が個別の言語で話すことと同じになり、分断される だから日本の情報処理資格では、CASL2 という抽象的なアセンブラで、議論する。 それをまねたのが、LLVM。 だから外国が、LLVMに飛びついた >>395 を参照
416 名前:デフォルトの名無しさん (アウーイモ MMa1-8pkt) [2017/06/07(水) 12:42:49.70 ID:AU15h8rIM.net] >>408 Cで作られたかどうかは関係ないだろw
417 名前:デフォルトの名無しさん (ワッチョイ ea1e-N+Y+) mailto:sage [2017/06/07(水) 19:23:59.78 ID:vdjoMcEt0.net] >>408 大概の言語ならコンパイラもあるんじゃないの?py2cとかperl2cなんかもあるし。
418 名前:デフォルトの名無しさん (ワッチョイ 66a2-zUMb) mailto:sage [2017/06/07(水) 20:09:08.11 ID:sUBS3aGw0.net] QZ怒りの流れを無視した無知晒しレス
419 名前:デフォルトの名無しさん (ワッチョイ eaea-q7dZ) [2017/06/07(水) 23:18:34.34 ID:Mt8hQ3L40.net] 鶴亀算のプログラムが違うと言われたのですが、どこが違うか教えてくださいm(_ _)m #include <stdio.h> int main(void){ int a;//足の合計 int b;//頭の合計 int c;//鶴1羽の足の数 int d;//亀1匹の足の数 int x,y; scanf("%d %d %d %d",&a,&b,&c,&d); //全部が鶴だとする x = c * b; //実際の足数の合計-全部が鶴の場合の足数 x = a-x; //亀の数 x = x / 2; //鶴の数 y = b - x; printf("%d %d\n",x,y); return 0; } そもそも鶴亀算の計算方法がネットで調べてもよく分かりませんでした
420 名前:デフォルトの名無しさん (ワッチョイ eaaf-wUaA) mailto:sage [2017/06/07(水) 23:36:19.43 ID:SnVv1syS0.net] それだとd使ってないから正しいはずないよね もはやC言語関係ないが //亀の数 x=x/(d-c); てか連立一次方程式解けないってガチな小学生?
421 名前:デフォルトの名無しさん (ワッチョイ dd48-D9zB) mailto:sage [2017/06/08(木) 00:38:33.35 ID:g5GXU2ST0.net] またQZが自演工作を始めたよ
422 名前: ◆QZaw55cn4c (ワッチョイ 859a-1pl6) mailto:sage [2017/06/08(木) 06:54:57.70 ID:XoSqWmPA0.net] Hello!!
423 名前:デフォルトの名無しさん (ワッチョイ 0bcb-Fz1p) [2017/06/08(木) 17:37:09.59 ID:JhfPMuMm0.net] https://ideone.com/iVXO9e 上のコードのどこが間違っているのか分かりません 動くようにするにはどのようにしたらよろしいですか?
424 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-QXxp) mailto:age [2017/06/08(木) 17:55:38.25 ID:B37qUMHpd.net] >>418 引数の個数
425 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-QXxp) mailto:sage [2017/06/08(木) 17:58:25.99 ID:B37qUMHpd.net] https://ideone.com/OyxrXn
426 名前:デフォルトの名無しさん (ワッチョイ dd48-D9zB) mailto:sage [2017/06/08(木) 19:15:57.89 ID:g5GXU2ST0.net] おいQZゴミコード投下をこのスレでもやるのかよ また臭くなったなこのスレ
427 名前:デフォルトの名無しさん (ワッチョイ 0bcb-Fz1p) mailto:sage [2017/06/08(木) 19:22:01.48 ID:JhfPMuMm0.net] >>419 マクロの使い方じゃなくて定義の方を改変してほしいです
428 名前:デフォルトの名無しさん (ワッチョイ 9d97-Eb90) [2017/06/08(木) 19:40:15.68 ID:HjFtHmDJ0.net] >>422 結局、何がしたいのか?
429 名前:デフォルトの名無しさん (ワッチョイ 1d32-kOr2) mailto:sage [2017/06/08(木) 19:40:15.97 ID:vowgkzVG0.net] https://ideone.com/rXDfUM f3の仕様知らんから適当だけど、こんな感じか?
430 名前:デフォルトの名無しさん (ワッチョイ 0bcb-Fz1p) mailto:sage [2017/06/09(金) 04:09:12.83 ID:tFl0611n0.net] >>424 ありがとうございます それを求めてました
431 名前:デフォルトの名無しさん (ワッチョイ 0ba2-D9zB) mailto:sage [2017/06/09(金) 11:40:03.51 ID:i7mtMiOg0.net] おいQZ 宿題スレと同じようなレスするなよゴミ
432 名前:デフォルトの名無しさん (ワッチョイ 0ddb-iuPl) mailto:sage [2017/06/09(金) 16:20:13.99 ID:vSS0Y+fX0.net] マクロ地獄w
433 名前: ◆QZaw55cn4c (ワッチョイ 859a-1pl6) mailto:sage [2017/06/09(金) 20:25:14.30 ID:CAB9wzmf0.net] >>426 Hello World!
434 名前:388 (オッペケ Sr71-MZAq) mailto:sage [2017/06/09(金) 23:48:48.50 ID:IBAe8Zr/r.net] まだ一冊も買っていませんが>>397 ,402両氏に感謝 坂井氏の記事は判りやすくて良いですね。別件でググっていたらITmedia系列で連載しているのを発見しまして 今読んでいるところですけど大変為になります ttp://www.itmedia.co.jp/author/174171/
435 名前:デフォルトの名無しさん (ワッチョイ 0ba2-D9zB) mailto:sage [2017/06/10(土) 01:59:22.10 ID:zs39aG6C0.net] QZ怒りの感謝芸
436 名前:デフォルトの名無しさん (ワッチョイ 859a-1pl6) mailto:sage [2017/06/10(土) 08:08:29.71 ID:pb8IN1oh0.net] >>430 巣から出てくるな
437 名前:デフォルトの名無しさん (ワッチョイ 85aa-TziR) mailto:sage [2017/06/10(土) 19:50:14.54 ID:SZlbpMsi0.net] なんか禁止文字があるようなので画像で質問します i.imgur.com/ZotbBm5.jpg
438 名前:デフォルトの名無しさん (ワッチョイ 0be3-yTT2) mailto:sage [2017/06/10(土) 20:03:35.22 ID:WN3QcUIY0.net] >>432 同一IPアドレスで複数のホストを割り当てているのだろう だから、IPアドレスで要求しても答えられないことになる https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%9B%E3%82%B9%E3%83%88
439 名前:デフォルトの名無しさん (ワッチョイ 0be3-yTT2) mailto:sage [2017/06/10(土) 20:24:27.55 ID:WN3QcUIY0.net] >>432 バーチャルホストへの対応は http 1.1からなので、リクエストヘッダーを作成し その中にどのホストへの要求かをサーバーに伝える必要があります。 このページを参考にしてみて。 tomosoft.jp/design/?p=3636 サンプルソースはローカルネットワークでやっているので、 変数 httphost にはIPアドレスが指定していますが、 ここに求めるホスト名を指定すれば良いはずです。
440 名前:デフォルトの名無しさん (スププ Sd43-kmoq) mailto:sage [2017/06/10(土) 20:26:42.82 ID:ya4F889pd.net] ありがとうございます ちょっと出てしまったので家に戻ったら もらった情報を元に解決頑張ってみます
441 名前:デフォルトの名無しさん (ワッチョイ 3523-D9zB) mailto:sage [2017/06/10(土) 20:45:37.76 ID:gQtHq0zi0.net] ありがとうございますwww QZの自演感謝芸は本当にわかりやすい
442 名前:デフォルトの名無しさん (ワッチョイ 0daa-kmoq) mailto:sage [2017/06/10(土) 23:40:32.38 ID:IgPZpOJ50.net] 誰が誰を煽ってるのかは分かりませんが リクエストヘッダの記述をHTTP1.1にして 1.1の必須ヘッダのHostを設定して試してみたら 無事動作しました ありがとうございました
443 名前:デフォルトの名無しさん (ワッチョイ 3523-D9zB) mailto:sage [2017/06/11(日) 01:17:53.70 ID:3YYJxHfi0.net] おいQZ自演範囲拡大かよ気持ち悪い
444 名前:デフォルトの名無しさん (ワッチョイ 859a-1pl6) mailto:sage [2017/06/11(日) 09:55:13.67 ID:IXRoGBtM0.net] >>438 巣から出てくるな
445 名前:デフォルトの名無しさん (ワッチョイ 0bc0-6OcZ) mailto:sage [2017/06/11(日) 11:01:28.44 ID:jDqQVEke0.net] C99の識別子について質問です。 構造体のメンバ命を「アンダーバー + 小文字アルファベット」で始まるものにするのは 仕様上、予約語と名前衝突しないことになっていますか? 「アンダーバー + 大文字アルファベット」で始まる識別子は予約されてるという記事がいくつかありましたが、小文字の場合に言及している情報は見つけられませんでした。
446 名前:デフォルトの名無しさん (ワッチョイ d59f-zqzl) mailto:sage [2017/06/11(日) 11:12:15.08 ID:8e5gqfxU0.net] >グローバル スコープを持ち、_ で始まる名前 >_ で始まり、その次が大文字の名前 >__ で始まる名前 この3つだけなんで、アンダースコア+小文字かつメンバ名なら大丈夫 まぁ個人的には2連アンダースコアと先頭アンダースコアは避けるけど
447 名前:440 (ワッチョイ 0bc0-6OcZ) mailto:sage [2017/06/11(日) 11:58:31.34 ID:jDqQVEke0.net] >>441 素早い回答有難うございます。 安心しました。 でも、ご指摘の通り使用は最小限にとどめたいと思います。 ありがとうございました
448 名前:デフォルトの名無しさん (ワッチョイ 3523-D9zB) mailto:sage [2017/06/11(日) 15:12:12.69 ID:3YYJxHfi0.net] QZいかりの焦り
449 名前:デフォルトの名無しさん (ワッチョイ 3523-D9zB) mailto:sage [2017/06/12(月) 01:04:21.12 ID:yvrc7Cbj0.net] QZはム板から消えろ
450 名前:デフォルトの名無しさん (ワッチョイ 3523-D9zB) mailto:sage [2017/06/12(月) 01:07:04.82 ID:yvrc7Cbj0.net] でも、ご指摘の通り使用は最小限にとどめたいと思います。www QZ落第のときのセリフがこれ
451 名前:デフォルトの名無しさん (ワッチョイ 0ddb-iuPl) mailto:sage [2017/06/12(月) 11:24:14.92 ID:tv4YfZMV0.net] ワッチョイとD9zBでNGすりゃいいのか?
452 名前:デフォルトの名無しさん (ワッチョイ 85aa-vEzb) [2017/06/12(月) 11:46:58.72 ID:gcWGi0lu0.net] QZをNGにすりゃいいんじゃない?
453 名前:デフォルトの名無しさん (ワッチョイ 3523-D9zB) mailto:sage [2017/06/12(月) 18:10:03.52 ID:yvrc7Cbj0.net] QZ怒りのNG推奨
454 名前:デフォルトの名無しさん (ワッチョイ 3523-D9zB) mailto:sage [2017/06/12(月) 18:11:22.02 ID:yvrc7Cbj0.net] おいQZ自演オナニーに飽き足らず 他スレで無知披露かよ お前のような永久無職が議論できるような場所じゃないから
455 名前:デフォルトの名無しさん (ワッチョイ 859a-1pl6) mailto:sage [2017/06/12(月) 18:54:22.58 ID:3CfNjtZc0.net] >>449 おいそれどこだよ?
456 名前:デフォルトの名無しさん (ワッチョイ e511-yTT2) [2017/06/12(月) 19:34:00.50 ID:5L3xq22d0.net] %%%MC+7,8%%% } 000-"M","LES","TUV=0.13325&/0\7&%&", 001-"23","1","0","2","7.14",[\b%7/1444*%812%2.3%7&6111\end\\]{%3%12%\br
457 名前:デフォルトの名無しさん (ワッチョイ 0bcb-Fz1p) mailto:sage [2017/06/13(火) 17:20:53.30 ID:kTA8yB7D0.net] よくいろいろなホームページにinlineは付けなくてもコンパイラーが最適化で自動で決めるので 付けなくていいと見かけるけれど、重要なのはinlineを書くかどうかじゃなくて 定義をヘッダーファイルにかいてinlineに出来るかソースファイルに書いて 出来ないようにするのかってことでしょ。 inlineが出来るようにするのか出来ないようにするのかの話を inlineを書くか書かないかの話にすり替えている汚いやり方だと思いませんか?
458 名前:デフォルトの名無しさん (ワッチョイ 231b-eQak) mailto:sage [2017/06/13(火) 18:10:46.25 ID:TlpR08p20.net] >>452 翻訳単位という括りで見たらヘッダーファイルとかの区別は無意味だから あなたの意見には同意しかねる
459 名前:デフォルトの名無しさん (ドコグロ MM13-Hznn) mailto:sage [2017/06/13(火) 19:22:36.04 ID:7vUqF+ijM.net] register 変数だって、本当にレジスタに割り当ててるか怪しいもんだ。
460 名前:デフォルトの名無しさん (JP 0Ha1-zqzl) mailto:sage [2017/06/13(火) 19:32:28.37 ID:fqqPhx3LH.net] 当たり前の話であって怪しくもなんともないんだが
461 名前:デフォルトの名無しさん (スププ Sd43-BT4T) [2017/06/13(火) 19:45:37.31 ID:+kV5cJp9d.net] Cって関数オブジェクト的な動作ってできるっけ?
462 名前:デフォルトの名無しさん (ワッチョイ 236f-aKgA) mailto:sage [2017/06/13(火) 20:05:20.23 ID:co8+PZUE0.net] 第一級関数 https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%95%B0 >CやC++、Pascalなどのプログラミング言語は関数ポインタをサポートしており、データ構造に含めたり他の関数に引数として渡したりすることができる。 >しかし、それらの関数は一般にリフレクションなしではプログラムの実行時に動的に生成することができないため、第一級関数をサポートしているとは見なされていない。
463 名前:デフォルトの名無しさん (ドコグロ MM13-W6lL) mailto:sage [2017/06/13(火) 20:37:39.64 ID:siDT5/O8M.net] >>454 今時ヒントにもしてないだろ
464 名前:デフォルトの名無しさん (ワンミングク MMa3-vEzb) [2017/06/13(火) 22:14:31.00 ID:fqqtkiftM.net] registerとか、メジャーなコンパイラで同じオプティマイザーを使用するC++では無くなっちゃったしな。
465 名前:デフォルトの名無しさん (スププ Sd43-BT4T) [2017/06/13(火) 22:26:08.47 ID:+kV5cJp9d.net] >>457 ないってことか。ありがとうございます
466 名前:デフォルトの名無しさん (ワッチョイ 23ea-kOr2) mailto:sage [2017/06/13(火) 23:50:32.05 ID:Vyd7kh0w0.net] -O3つければ関係ナッシング -O2でもいいかも
467 名前:デフォルトの名無しさん (ワッチョイ 9511-LnFi) [2017/06/14(水) 02:09:06.53 ID:cctIdNvV0.net] i.imgur.com/b3A3YWl.jpg この(お)がよく分からん 最初の段階でi=j=0だからswapさせても意味なくね? だったら(お)でiとjずらすのか? とも思ったが反応なし 教えてくれると嬉しい
468 名前:デフォルトの名無しさん (ワッチョイ 9511-LnFi) mailto:sage [2017/06/14(水) 02:17:07.73 ID:cctIdNvV0.net] 自己解決した
469 名前:デフォルトの名無しさん (スップ Sd03-+jJi) mailto:sage [2017/06/14(水) 10:41:57.78 ID:xDw396a4d.net] 出力変換指定子について教えてください printf("16進のffを10進に変換すると%dです\n", 0xff); 実行結果→16進のffを10進に変換すると15です %dなどの出力変換指定子というのは、数値を文字列に変換して出力している、という理解でよろしいのでしょうか? それとも数値を数値のまま、文字列の間に挟み込んで出力してくれている、という理解の方が合っていますでしょうか?
470 名前:デフォルトの名無しさん (ワッチョイ 850d-OlK+) mailto:sage [2017/06/14(水) 11:28:08.77 ID:cB3KRwiX0.net] 前者
471 名前:デフォルトの名無しさん (ワッチョイ 0ddb-iuPl) mailto:sage [2017/06/14(水) 11:36:10.60 ID:H04nBmO80.net] linuxjm.osdn.jp/html/LDP_man-pages/man3/printf.3.html %dは文字列に変換する 15じゃなく255になるかと 数値のままってのがよくわからんけど printf( "%c", 0x41); ならほとんどの処理系で大文字Aが表示される %cでcharのビット数より上位のビットが 立っていた場合の挙動は知らん
472 名前:デフォルトの名無しさん (ワッチョイ 0ddb-iuPl) mailto:sage [2017/06/14(水) 11:37:07.78 ID:H04nBmO80.net] 失礼しますた
473 名前:デフォルトの名無しさん (JP 0Ha1-zqzl) mailto:sage [2017/06/14(水) 11:38:27.87 ID:iafztWleH.net] >>464 前者。文字列にしないと文字として表示できない。 ちなみに15じゃないけどな
474 名前:デフォルトの名無しさん (ワンミングク MMa3-E03C) mailto:sage [2017/06/14(水) 12:41:52.28 ID:Xahf6/YZM.net] >>468 補足すると、0xffは引数にした場合 0xffffffff に拡張される (32bit機の場合)
475 名前:デフォルトの名無しさん (ドコグロ MM13-Hznn) mailto:sage [2017/06/14(水) 12:49:16.05 ID:jUBU+j0AM.net] >>469 255 じゃなくて、4294967295 になるってこと? 変なの。
476 名前:デフォルトの名無しさん (ワンミングク MMa3-E03C) mailto:sage [2017/06/14(水) 12:57:53.53 ID:Xahf6/YZM.net] >>470 符合が付いているから255じゃない。で466のレスに繋がる(^_^)ノ
477 名前:デフォルトの名無しさん (ワッチョイ 850d-OlK+) mailto:sage [2017/06/14(水) 12:58:00.19 ID:cB3KRwiX0.net] 符号付で -1 とみなし、そこから符号を維持したまま拡張して引数に詰む 引数を引っ張り出して 符号付評価で値を文字化の結果 "-1 " (char 型変数に 0xff を入れてて、それを printf に渡したケース) ところでリテラルの 0xff が符号付か否かは何か規定あったっけ?
478 名前:デフォルトの名無しさん (ドコグロ MM13-Hznn) mailto:sage [2017/06/14(水) 13:30:59.38 ID:jUBU+j0AM.net] >>471 どこに符号が付いてるの? (符合と符号は違うの?) 255 にしかならないけど。 >>472 char が符号付きかどうかは処理系依存なはず。
479 名前:デフォルトの名無しさん (ワッチョイ 850d-OlK+) mailto:sage [2017/06/14(水) 13:41:28.06 ID:cB3KRwiX0.net] >>473 リテラル文字列中の文字が signed か unsigned か とは別だっけか? あんまり出くわさないのでルーズになってるわ・・・
480 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 18:52:36.33 ID:ROBFB8K40.net] 0xffの型はintだよ
481 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 18:54:17.69 ID:ROBFB8K40.net] int a = 255; の時に、aが-1になったら不便でしょ?
482 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 18:56:15.18 ID:ROBFB8K40.net] int a = (signed char)255; の場合は-1になる
483 名前:デフォルトの名無しさん (ワッチョイ d511-D9zB) mailto:sage [2017/06/14(水) 19:07:02.19 ID:wXdIbuq80.net] 比較演算子の左辺 右辺 でやらかしそうだ・・・
484 名前:デフォルトの名無しさん (ドコグロ MM13-Hznn) mailto:sage [2017/06/14(水) 19:25:17.22 ID:jUBU+j0AM.net] >>471 とりあえず >>469 を説明して!
485 名前: ◆QZaw55cn4c (ワッチョイ 859a-1pl6) mailto:sage [2017/06/14(水) 19:56:00.75 ID:7MR8m8vU0.net] >>464 本当に試したのか? https://ideone.com/yMxt39 >>469 本当かね?int なんだけれども >>472 リテラルは int なんじゃないかな?で int は別に符号拡張しない >>479 >>469 は誤り
486 名前:デフォルトの名無しさん (ワッチョイ 859a-ryUj) mailto:sage [2017/06/14(水) 21:51:54.69 ID:ROBFB8K40.net] リテラルが無条件でintなわけじゃない intで表現出来る範囲はint intを越えた場合には基本的には表現出来る最小の型になる u, l, ul, ll, ullなどのサフィックスで明示的に変更も可能 サフィックスで作れない型はキャストして作る
487 名前:デフォルトの名無しさん (ワッチョイ bb11-3r0c) mailto:sage [2017/06/15(木) 03:30:56.19 ID:foJhra+T0.net] 数値リテラルはこの辺参照 www.bohyoh.com/CandCPP/FAQ/FAQ00074.html あと、-100とかは数値リテラル100と単項-となることに注意
488 名前:デフォルトの名無しさん (ドコグロ MMda-C/u3) mailto:sage [2017/06/15(木) 09:30:50.85 ID:dX1k+/c2M.net] >>482 表が分かりにくすぎる。
489 名前:464 (スッップ Sdda-2SNu) mailto:sage [2017/06/16(金) 13:48:41.24 ID:6HI1EFfUd.net] >>465 >>466>>467 >>468>>480 をはじめとした皆様 ご解答していただきありがとうございました(_ _) お礼遅くなりすみませんでした
490 名前:デフォルトの名無しさん (スッップ Sdda-2SNu) mailto:sage [2017/06/16(金) 13:50:22.93 ID:6HI1EFfUd.net] >>481 ulって書く人とluって書く人がいますがどちらが正しいのですか?
491 名前:デフォルトの名無しさん (アウアウカー Sa33-yC4D) mailto:sage [2017/06/16(金) 14:04:02.57 ID:ZbWJ164Ea.net] どちらも正しいです
492 名前:デフォルトの名無しさん (スッップ Sdda-2SNu) mailto:sage [2017/06/16(金) 14:10:39.42 ID:5SN0StmUd.net] >>486 ありがとうございます
493 名前:デフォルトの名無しさん (ワッチョイ aea2-2WTa) mailto:sage [2017/06/16(金) 16:33:55.37 ID:lEbqssrF0.net] QZ潜伏スレッド
494 名前:デフォルトの名無しさん (オイコラミネオ MMe6-yBMi) mailto:sage [2017/06/16(金) 17:03:31.61 ID:15uCJDWTM.net] switch(c) case no: これで、ケースnoに入った際に、もう一度switch文を繰り返す方法はありませんか? goto文使わないと無理ですかね?
495 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-adb9) mailto:sage [2017/06/16(金) 17:06:02.86 ID:qjls6Rocd.net] >>489 do { switch(c) { case no: continue; ... } while (0);
496 名前:デフォルトの名無しさん (オイコラミネオ MMe6-yBMi) mailto:sage [2017/06/16(金) 18:55:58.83 ID:OzysmJdyM.net] >>490 ありがとうございます case yes: ほにゃらら case no: break; yesの場合もbreakしたいのですが、noに流れさせてbreakするのと、yeaにbreakも書くのとどちらがいいんですかね?
497 名前:デフォルトの名無しさん (ワッチョイ 8b9a-FPX1) mailto:sage [2017/06/16(金) 19:13:28.04 ID:exN5gWxV0.net] お好きなように caseはbreakする事がほとんどなので、コードを読むときにbreakがあると勘違いしないように、ほにゃららの後とcase no:の後の両方にコメントを忘れずに
498 名前:デフォルトの名無しさん (スッップ Sdda-2SNu) mailto:sage [2017/06/16(金) 22:34:26.38 ID:jRm/huKjd.net] 変換仕様とデータ型との関係について質問させてください 例 int a; scanf("%c", &a); printf("%c\n", a ); 考え方として、intと%cのどちらが優先されるでしょうか?
499 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-adb9) mailto:sage [2017/06/16(金) 22:41:33.61 ID:qjls6Rocd.net] >>493 > scanf("%c", &a); これは入力された文字の文字コードをaに入れる。 > printf("%c\n", a ); これは、aが表す文字コードの文字を出力する。
500 名前:デフォルトの名無しさん (ワッチョイ 8b9a-FPX1) mailto:sage [2017/06/16(金) 23:09:12.38 ID:exN5gWxV0.net] >>493 scanfの方は、&a を charへのポインタとして処理をする 結果は環境依存 printfも基本的には書式と引数が合っている必要があるが、intより小さい引数は全ていったんintに変換されてからコールされるので、この場合は問題なし
501 名前:493 (スッップ Sdda-2SNu) mailto:sage [2017/06/16(金) 23:37:22.59 ID:jRm/huKjd.net] >>494 >>495 すごい勉強になります 詳しい興味深く書いていただきありがとうございます
502 名前:デフォルトの名無しさん (ワッチョイ aea2-2WTa) mailto:sage [2017/06/17(土) 03:37:57.37 ID:O3DVEcmT0.net] さっきからここQZ自演だらけだぞ
503 名前:デフォルトの名無しさん (ワッチョイ 8b9a-FPX1) mailto:sage [2017/06/17(土) 05:36:36.60 ID:4Gyw35tF0.net] QZとは?
504 名前:デフォルトの名無しさん (ワッチョイ e36d-FyNN) mailto:sage [2017/06/17(土) 12:08:22.44 ID:ir1eTLN60.net] >>498 peace.2ch.net/test/read.cgi/tech/1408962564/53
505 名前:93 (スップ Sd7a-2SNu) mailto:sage [2017/06/17(土) 16:45:24.10 ID:Znj/bctpd.net] >>497 私は自演とかはしてないです スレの先輩方への感謝とともに申し添えます
506 名前:デフォルトの名無しさん (ワッチョイ aea2-2WTa) mailto:sage [2017/06/17(土) 19:52:46.57 ID:O3DVEcmT0.net] QZ怒りの自画自賛ww 本当はマ気取りの無職無能のおっさん 誰にも相手されないから自演で賞賛してる
507 名前:デフォルトの名無しさん (ワッチョイ aea2-2WTa) mailto:sage [2017/06/17(土) 19:53:20.24 ID:O3DVEcmT0.net] こういう自画自賛してるあたり 自演がバレバレ
508 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-adb9) mailto:sage [2017/06/17(土) 20:07:29.95 ID:mM98wL1Bd.net] ここに書き込む前にマニュアル見ろよ。
509 名前:デフォルトの名無しさん (ワッチョイ aea2-2WTa) mailto:sage [2017/06/17(土) 21:04:59.42 ID:O3DVEcmT0.net] 老害無職QZはきえろ
510 名前:デフォルトの名無しさん (オイコラミネオ MMe6-yBMi) mailto:sage [2017/06/20(火) 17:20:58.36 ID:En99E4tcM.net] 自作関数でファイルオープンする際に、ファイルが存在しなかったらその関数を強制終了したいのですが、どうすればいいんですか? exit(0)を使うとプログラムごと強制終了されてしまいますよね?
511 名前:デフォルトの名無しさん (オイコラミネオ MMe6-yBMi) mailto:sage [2017/06/20(火) 17:24:57.70 ID:En99E4tcM.net] exit(-1)でした
512 名前:デフォルトの名無しさん (ワッチョイ 8b0d-VgqF) mailto:sage [2017/06/20(火) 17:35:35.16 ID:mOitPqgi0.net] 自作関数の戻りの型を void にしてるならしかるべき場所で return ; て書くだけ
513 名前:デフォルトの名無しさん (オイコラミネオ MMe6-yBMi) mailto:sage [2017/06/20(火) 17:45:00.45 ID:YsGmXvJhM.net] >>507 それでいいんですか? void型の関数なんですが、エラーが発生した事を明示しなくていいんですかね?
514 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-adb9) mailto:sage [2017/06/20(火) 17:59:48.83 ID:RGtVeD1Gd.net] printf("エラーが発生したんだぜ、この野郎。やんのか?\n");
515 名前:デフォルトの名無しさん (ワッチョイ 4fe3-yC+1) mailto:sage [2017/06/20(火) 18:12:33.50 ID:hyzgnXlk0.net] 紙のメモ用紙に書き込むサブルーチン作って、そいつにやらせたらどうだろう
516 名前:デフォルトの名無しさん (ワッチョイ 8b9a-FPX1) mailto:sage [2017/06/20(火) 18:16:22.54 ID:3WBJr6kg0.net] >>508 それでいいです それで目的は達成出来ます
517 名前:デフォルトの名無しさん (ワッチョイ 4fdb-hAah) mailto:sage [2017/06/20(火) 18:39:43.32 ID:tAZ0INkH0.net] 言語関係無いな
518 名前:デフォルトの名無しさん (ワッチョイ b311-2WTa) mailto:sage [2017/06/20(火) 18:48:54.06 ID:RHsT5Eol0.net] >>508 目的が変わっている 自作関数でファイルオープンする際に、ファイルが存在しなかったらその関数を強制終了したい ↓↓↓↓↓↓↓↓↓↓ 自作関数でファイルオープンする際に、ファイルが存在しなかったらその旨を通達して抜けたい 戻りの型を int にして 成功は 0 失敗はそれ以外のエラーコードにして戻る ポインタでエラーコードを指す引数受けて、その指し先に値を渡す (errorno 等のグローバル変数でエラーを伝える) 呼び出し元のほうでエラーの有無で分岐
519 名前:デフォルトの名無しさん (アウアウイー Saeb-yC+1) [2017/06/20(火) 22:46:25.81 ID:bX2tlMgna.net] ちょっと直接C言語に関係ない話なのですが、 コマンドプロンプトから、標準入力からデータを受け取る必要のある Cのプログラムを実行する際、「<」を使ってファイルから入力しています。 あるデータファイルのショートカットファイルから「<」を使って データファイルのデータを入力するにはどうしたらいいでしょうか?
520 名前:デフォルトの名無しさん (ドコグロ MM32-rl9t) mailto:sage [2017/06/21(水) 06:56:18.44 ID:tmnPHhmOM.net] >>514 > ちょっと直接C言語に関係ない話なのですが、 ならよそに行けよ
521 名前:デフォルトの名無しさん (ワッチョイ 4fdb-hAah) mailto:sage [2017/06/21(水) 11:47:59.41 ID:x++JJuQ30.net] >>514 どこに誘導すればいいかわからんなw filter(仮).exe < %1 ってバッチファイルじゃダメなのか?
522 名前:デフォルトの名無しさん (ワッチョイ 8b0d-VgqF) mailto:sage [2017/06/21(水) 12:03:23.32 ID:P8lmP+eo0.net] ショートカットファイルということは windows の話かねぇ? 渡ってきてる .lnk ファイルの中身から本当のパス文字列を知って さらにその指し先のファイルを標準入力に流す なんてことが コンマンドラインシェルはやらんだろうな
523 名前:デフォルトの名無しさん (ワッチョイ 3a1b-iuF1) mailto:sage [2017/06/21(水) 14:51:27.68 ID:mT0xXfH20.net] 入力を受け取るコマンドがやればいい
524 名前:デフォルトの名無しさん (ワッチョイ aea2-2WTa) mailto:sage [2017/06/21(水) 22:27:31.29 ID:7+kf0Fyw0.net] またQZがほざいてる
525 名前:デフォルトの名無しさん (ワッチョイ 576f-dFnT) mailto:sage [2017/06/22(木) 13:44:42.49 ID:LmRn3xN/0.net] ショートカットファイルをリ
526 名前:ダイレクトしても 単に中身を標準入力として読み取るだけで、 解釈するわけじゃない [] [ここ壊れてます]
527 名前:デフォルトの名無しさん (JP 0H3f-ZLad) mailto:sage [2017/06/22(木) 13:46:53.43 ID:lDx6Yk3FH.net] 初心者です 構造体の使い回しができないというのは、どういう意味ですか? structがない場合です
528 名前:デフォルトの名無しさん (ドコグロ MMdf-7Pwj) mailto:sage [2017/06/22(木) 14:03:59.21 ID:l/KIobDzM.net] >>521 構造体の使い回しとは何のこと? 文脈がわからないと答えられない
529 名前:デフォルトの名無しさん (ワッチョイ 7f6c-ZLad) mailto:sage [2017/06/22(木) 15:01:01.41 ID:nVwUJlKa0.net] >>521 構造体の使いまわしはできるよ
530 名前:デフォルトの名無しさん (ドコグロ MMdf-6no4) mailto:sage [2017/06/22(木) 15:16:04.77 ID:iuy16AyXM.net] struct のない構造体は難しいな。 自分で実装するのかな?
531 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 16:34:33.27 ID:6ZKlzltP0.net] すいません初学者ですが質問です #include<stdio.h> double add(double i,double j){return i+j;} double sub(double i,double j){return i-j;} double mul(double i,double j){return i*j;} double div(double i,double j) {if(j!=0.0) return i/j; else return 0.0;} int main(void){ double a=39.0,b=12.0; double (*func)(double x,double y); func=add; printf("add:%f\n",(*func)(a,b)); func=sub; printf("sub:%f\n",(*func)(a,b)); func=mul; printf("mul:%f\n",(*func)(a,b)); func=div; printf("div:%f\n",(*func)(a,b)); return 0; } 8行目の(*fanc)の意味が解りません 例えばfunc=addで代入すると(double *add(double i,double j){return i+j;})(a,b)になるんですか? (double add(double i,double j){return i+j;})(a,b)になってadd(double i,double j){return i+j;}の部分で プロトタイプ宣言が呼び出されるからおkなんですか?そうなると(*fanc)の*の意味が解らなくなります。 ちょっと、頭が混乱してて訳の解らない文章になってるかもしれませんが上記プログラムで何故スムーズに行くのかがいまいちよく解りません
532 名前:デフォルトの名無しさん (ワッチョイ 574b-EHt8) mailto:sage [2017/06/22(木) 16:39:23.60 ID:XYYNYBrF0.net] >>525 関数ポインタの普通の使い方やん。 それよりゼロで割った場合にゼロ帰すのは変だと思う。
533 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 16:40:28.01 ID:6ZKlzltP0.net] もうちょっと言うと8行目の*がポインタ宣言として何でfuncにaddとかmulとか代入すると関数を参照できるのかよく解りません *が無いとコンパイラからエラーを指摘されるんですが*がなくても関数のプロトタイプ宣言と同じ形になるのに関数が呼び出されないのが納得いきません
534 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 16:42:15.27 ID:6ZKlzltP0.net] >>526 うーん、なんていうか普通だとしてもなんか納得できないって言うか理屈の順序がわからないというか
535 名前:デフォルトの名無しさん (ワッチョイ 170d-NIhq) mailto:sage [2017/06/22(木) 16:45:03.29 ID:LDtj9GzU0.net] double (*func)(double,doube); [double を 2つ受けて double を返す関数] の場所を覚えるための変数 が func プロトタイプ宣言ではなく 長ったらしいけど変数宣言 int *func; と本質的に同じ
536 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 17:05:19.55 ID:6ZKlzltP0.net] >>529 でもint *fancの場合だとfanc=&a見たいに&をつけてアドレスを入れるんじゃないですか? この場合&が省略されてもいいのは何でですか? 代入もaddとかsubと短くなってますけど いつadd=double add(double i,double j){return i+j;}になったんでしょうか? 理解力や理解度が低いのもあると思いますがいまいちよく解りません・・・
537 名前:デフォルトの名無しさん (ワッチョイ 170d-NIhq) mailto:sage [2017/06/22(木) 17:19:00.14 ID:LDtj9GzU0.net] >>530 前半の疑問 関数へのポインタ変数 func に 関数を代入する際の記述に限り & を省略できる という文法にしちゃった そしてそう記述するのが古くからの慣わし 関数宣言 double add(double i, double j); 関数の実装 double add(double i, double j) { return i+j; } 宣言した関数の呼び出し add(i,j); 宣言した関数のポインタを得る add (もしくは &add でも同じ)
538 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 17:46:27.25 ID:6ZKlzltP0.net] >>531 > 関数へのポインタ変数 func に 関数を代入する際の記述に限り & を省略できる > 宣言した関数のポインタを得る add (もしくは &add でも同じ) 凄く頭がすっきりしました。コンパイルで実行してみてもaddと%addどちらでも通りました。 printfの(*fanc)も&addの実態を参照してるわけですね。 ありがとうございました
539 名前:デフォルトの名無しさん (ワッチョイ 9fd7-M5hL) mailto:sage [2017/06/22(木) 17:46:30.59 ID:dMWz8j2D0.net] >>530 8行目 double (*func)(double x,double y); は変数funcの宣言 型は double(*)(double,double) の関数ポインタ 変数funcに各関数のアドレスを代入して呼び出してる 代入される関数には&を付けても付けなくても動作は同じ
540 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 17:47:38.20 ID:6ZKlzltP0.net] >>533 ありがとうございます!ここ数日悩んでたんですがすっきりしました。
541 名前:デフォルトの名無しさん (ワッチョイ 9fd7-M5hL) mailto:sage [2017/06/22(木) 18:07:18.42 ID:dMWz8j2D0.net] >>534 呼び出すときのデリファレンスはいらないよ これでいい printf("add:%f¥n", func(a,b));
542 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 18:33:38.45 ID:6ZKlzltP0.net] >>535 それは 1。ポインタ側から見たら*fancになってfancの実体をみている 2.fanc=addと代入されているんだからfancと書かれていてもaddという変数(代入済み)に読み替えて実体を見ている という意味で同じだという捉え方で大丈夫でしょうか?
543 名前:デフォルトの名無しさん (ワッチョイ d711-NIhq) mailto:sage [2017/06/22(木) 18:39:12.10 ID:9RPI8PPS0.net] 関数へのポインタを得るのに & を省略できるのと同じように ポインタの指し先の関数を呼び出すのに (*func)(引数) と書いても func(引数) と書いても同じ という文法にしちゃった ※ Cは短く書けるならそっちを使う って歴史なので func(引数) って書くことが多い
544 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/22(木) 18:42:56.92 ID:6ZKlzltP0.net] >>537 ほへー 勉強になります ありがとうございます そういうところがみんながポインタが難しいというゆえんなのかもですね
545 名前:デフォルトの名無しさん (ワッチョイ 179a-VrB2) mailto:sage [2017/06/22(木) 18:43:53.42 ID:Ep4mqRnU0.net] >>525 divの中身が気にくわない
546 名前:デフォルトの名無しさん (ドコグロ MMbf-Stqb) mailto:sage [2017/06/22(木) 19:20:58.14 ID:n4zvfmL3M.net] >>531 > 関数へのポインタ変数 func に 関数を代入する際の記述に限り & を省略できる しれっと嘘書くなよ 代入関係なく関数名だけ(後ろにカッコをつけない)なら関数へのポインタとして扱う 比較とかでも使える
547 名前:デフォルトの名無しさん (ワッチョイ d711-NIhq) mailto:sage [2017/06/22(木) 19:44:37.36 ID:9RPI8PPS0.net] あ ごめんなさい ごめんなさい ごめんなさい
548 名前: ◆QZaw55cn4c (ワッチョイ 179a-jSYe) mailto:sage [2017/06/22(木) 20:51:10.41 ID:vBYXjCtX0.net] Hi !
549 名前:デフォルトの名無しさん (ワッチョイ d711-NIhq) mailto:sage [2017/06/22(木) 20:53:54.63 ID:9RPI8PPS0.net] bye
550 名前:デフォルトの名無しさん (ワッチョイ 9f1e-6no4) mailto:sage [2017/06/22(木) 21:42:29.54 ID:xapmI+EN0.net] exit(1)
551 名前:デフォルトの名無しさん (ワッチョイ d7b6-q+YL) mailto:sage [2017/06/23(金) 00:26:19.17 ID:Txr7HE8G0.net] >>539 俺も最初にそう思った。j != 0.0 て
552 名前:デフォルトの名無しさん (ワッチョイ ff91-ZLad) mailto:sage [2017/06/23(金) 09:04:15.74 ID:pzaENb+m0.net] 浮動小数点の四則演算で例外が起きないようにするには、どこを注意したらいいんだろう
553 名前:デフォルトの名無しさん (ブーイモ MM3b-nmmA) mailto:sage [2017/06/23(金) 09:13:50.88 ID:OUZ9ZG4GM.net] 普通の設定なら0で割っても例外は起きないよ。Infになるだけ。 Infも計算できる。Inf/InfとかはNaNになったりするけど。
554 名前:デフォルトの名無しさん (ラクッペ MMcb-bZFw) mailto:sage [2017/06/23(金) 09:28:01.22 ID:7CKItQkCM.net] 柴田さんの本でアルゴリズム勉強したいんだけど、c言語とjavaどっちがいいんですか? 目的は基本情報技術者試験午後対策と競技プログラミング用です どっちも読むのがいいのでしょうか?
555 名前:デフォルトの名無しさん (ワッチョイ f7db-XubJ) mailto:sage [2017/06/23(金) 10:45:37.79 ID:HJ43MjWq0.net] ここか ここの1に書いてあるスレで mevius.2ch.net/test/read.cgi/tech/1194614600/
556 名前:デフォルトの名無しさん (ラクッペ MMcb-bZFw) mailto:sage [2017/06/23(金) 12:39:03.49 ID:7CKItQkCM.net] プログラマー板で聞いてみます!
557 名前:デフォルトの名無しさん (JP 0H3f-ZLad) mailto:sage [2017/06/23(金) 12:40:24.54 ID:bga0zZR5H.net] アルゴリズムならC言語かなぁ 理由は、再帰があるから
558 名前:デフォルトの名無しさん (ラクッペ MMcb-bZFw) mailto:sage [2017/06/23(金) 12:51:15.76 ID:7CKItQkCM.net] >>551 ありがとうございます
559 名前:デフォルトの名無しさん (アウアウカー Sa6b-m1nn) mailto:sage [2017/06/23(金) 13:09:18.89 ID:s9DU3vr6a.net] ? 再帰なんてほとんどの言語でできるだろ できない言語探すほうが難しいのでは
560 名前:デフォルトの名無しさん (スップ Sd3f-VrB2) mailto:sage [2017/06/23(金) 13:17:04.39 ID:jGFBZEPId.net] >>547 例外が発生するかどうかは環境依存
561 名前:デフォルトの名無しさん (アウーイモ MM9b-+bbG) [2017/06/23(金) 17:25:39.99 ID:zs9t5gljM.net] >>552 Javaは難しいものを作り込む言語ではないからね。
562 名前:デフォルトの名無しさん (ブーイモ MM3b-nmmA) mailto:sage [2017/06/23(金) 18:36:24.35 ID:9AlljSA6M.net] >>554 もちろん。 だから、普通ってかいた。 ところでデフォルトで例外になる環境教えて。
563 名前:デフォルトの名無しさん (ワッチョイ 179a-VrB2) mailto:sage [2017/06/23(金) 18:43:11.28 ID:cLuj8vNR0.net] Infの演算決めたヤツアホだよな せっかくの異常値検出が糞仕様のせいで出来ない InfなんてほとんどNaN扱いでいいんだよ 1/(1-1) > 0 > 1/-(1-1) とか決めたヤツ、頭おかしい
564 名前:デフォルトの名無しさん (ワッチョイ d711-NIhq) mailto:sage [2017/06/23(金) 18:45:50.11 ID:KSkSHD0C0.net] 0 > -1/(1-1) ではなく 0 > 1/-(1-1) で?
565 名前:デフォルトの名無しさん (ワッチョイ 179a-VrB2) mailto:sage [2017/06/23(金) 19:12:15.59 ID:cLuj8vNR0.net] そう 頭おかしいでしょ?
566 名前:デフォルトの名無しさん (ワッチョイ 9711-LvKX) [2017/06/23(金) 19:27:42.95 ID:vbPiU/7d0.net] %%%5,7$$$ } 000-[[[%ER,D,A%%~
567 名前:デフォルトの名無しさん (ブーイモ MM3b-nmmA) mailto:sage [2017/06/23(金) 19:34:32.39 ID:9AlljSA6M.net] ん?整数?じゃないよね。 そりゃ、ieee754には正のゼロと負のゼロがあるからな。
568 名前:デフォルトの名無しさん (ワッチョイ d711-NIhq) mailto:sage [2017/06/23(金) 19:44:07.40 ID:KSkSHD0C0.net] ああ 負のゼロの意図で -(1-1) か
569 名前:デフォルトの名無しさん (アウアウウー Sa9b-h10b) [2017/06/23(金) 21:30:08.71 ID:DRFAk1dca.net] >>548 十数年挫折してやっと分かってきたおいらに言わせれば、アルゴリズムは何でも良いから関数型言語で勉強した方がいい。 アルゴリズムの殆どがリストを基本にしてるけど、CもJavaも配列が基本だから挫折しやすい。 一旦リストが基本の言語でアルゴリズム勉強して、それを配列で実現するには?って考えた方がいい。
570 名前:デフォルトの名無しさん (ラクッペ MMcb-bZFw) mailto:sage [2017/06/23(金) 22:03:37.03 ID:gW02JZGeM.net] >>563 基本情報技術者試験を受かりたいので、関数型言語では無くcかJavaで覚えたいんです 仕事で他の言語覚えなきゃいけないので、関数型言語を覚える時間が無いです すみません
571 名前:デフォルトの名無しさん (アウアウウー Sa9b-h10b) [2017/06/23(金) 22:57:40.45 ID:DRFAk1dca.net] >>7 エクセルのだとエクセル立ち上げないとだからな。。。 WSHのVBSでエクセル操作するのを呼び出すとかならSystem関数で一発だろ。
572 名前:デフォルトの名無しさん (アウアウウー Sa9b-h10b) [2017/06/23(金) 22:59:45.35 ID:DRFAk1dca.net] >>18 改行するならputsだが、改行したくないならprintfしかあるまい。 ある意味立派なフォーマットだ。
573 名前:デフォルトの名無しさん (アウアウウー Sa9b-h10b) [2017/06/23(金) 23:04:15.20 ID:DRFAk1dca.net] >>564 うん。 文法は覚えられるけど、コードがどう言うことしてるのか理解出来ないと思うんだよね。。。 その為の関数型言語なんだが。。。 まあ、CやJavaでコード読めないってなったら関数型言語においで。 そしたら読めるようになるから。
574 名前:スッキリ厨 (ワッチョイ ffaa-4OJu) mailto:sage [2017/06/23(金) 23:16:54.40 ID:tdHTYauf0.net] スッキリわかる Java入門 第2版、2014 Cは、ポインタがあるので、ややこしい。 この本を3回読んで、オブジェクト指向をみっちりと学ぶ
575 名前:デフォルトの名無しさん (ワッチョイ 9711-yPTS) mailto:sage [2017/06/23(金) 23:53:50.89 ID:afzAOFtI0.net] >>566 fputs("hoge",stdout)
576 名前:デフォルトの名無しさん (ワッチョイ f7e3-LvKX) mailto:sage [2017/06/24(土) 02:23:58.77 ID:sW+IRv2v0.net] >>564 システム深く入り込んで、いろいろ弄りたいならC言語の方がいいと思うが アルゴリズムを学ぶことが主要な目的なら、Javaの方がいいように思う
577 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/24(土) 05:52:05.44 ID:AiSsJYjg0.net] >>570 そのアルゴリズムがどんな高度なものかによるから答えにくいんだろうが。 基本情報技術者試験用の言語というあたりでたいしたことをしないのはわかるが。 まだどの言語もまともに使えないレベルなんだろう。CとJavaならCをやってからJavaをやった方がコンピュータの理解にはいいけど。
578 名前:デフォルトの名無しさん (ワッチョイ bf93-bZFw) mailto:sage [2017/06/24(土) 07:48:16.71 ID:SFTuX/e+0.net] >>570 今はC言語にしようかなって思ってます >>571 C言語とJavaなら基本的なものは使えます レベルとしては蟻本くらいです
579 名前:デフォルトの名無しさん (アウアウエー Sadf-h10b) [2017/06/24(土) 07:50:04.53 ID:TrIYg7wba.net] Cだとリスト必要な時リストそのものを作らないといけないけど、Javaだとリストクラスのインスタンス作ればいいだけだしね。
580 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/24(土) 07:54:12.89 ID:AiSsJYjg0.net] >>572 アルゴリズムというのがどこまで高度なものを言ってるのかわからないが、Cは適度なところで抑えないと時間切れで他のことができなくなるぞ。
581 名前:デフォルトの名無しさん (ワッチョイ 179a-VrB2) mailto:sage [2017/06/24(土) 08:02:26.86 ID:i0vCbpkL0.net] ソートとか検索とか簡単な計算とか 超基本的なやつでしょ? 言語なんて何でもいいよ
582 名前:デフォルトの名無しさん (ワッチョイ bf93-bZFw) mailto:sage [2017/06/24(土) 09:05:31.01 ID:SFTuX/e+0.net] >>574 蟻本レベルを目指してます >>575 一つの目標としては、そうです あともう一つは、競技プログラミングにも参加したいです
583 名前:デフォルトの名無しさん (ワッチョイ bf93-bZFw) mailto:sage [2017/06/24(土) 09:10:20.82 ID:SFTuX/e+0.net] 基本情報技術者はC出行こうと思うんですけど、競技プログラミングもC言語でいいのでしょうか?
584 名前:デフォルトの名無しさん (ワッチョイ 576f-CZMg) mailto:sage [2017/06/24(土) 14:53:17.50 ID:Px3P/nJx0.net] >>570 ZDDとか展開出来る? クヌース本とかJAVAで実装し直すの?
585 名前:デフォルトの名無しさん (ワッチョイ 178e-Lvcy) [2017/06/24(土) 17:35:51.09 ID:GiFMFqzr0.net] アルゴリズムを勉強することが目的なら、言語は何でもいいに一票。 使い慣れたやつじゃないと、言語自体の使い方とかに気を取られて、アルゴリズムの勉強がはかどらない。 ただ、C言語はいろいろと手順が多い傾向があるので、「言語初心者」には適さないと思う。
586 名前:デフォルトの名無しさん (ワッチョイ f7db-XubJ) mailto:sage [2017/06/24(土) 19:57:34.57 ID:7Dka8Eta0.net] 昔はpascalだったが oberonとかどうなってるんだろ
587 名前:デフォルトの名無しさん (ワッチョイ ffaa-4OJu) mailto:sage [2017/06/24(土) 23:21:27.81 ID:BBTzLwWV0.net] アルゴリズムは、Ruby で説明する。 型の記述が無いから、Rubyが圧倒的に楽 競技プログラミングでは、Java, C++ 基本情報技術者は、Java でいい。 C にはポインタがある分、時間を食うから損
588 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/24(土) 23:33:11.12 ID:AiSsJYjg0.net] >>581 競技プログラミングは仕様をみたすプログラム作りだから言語は関係ない。 Cについてはキミがポインタを理解してないだけじゃないか。 基本情報技術者試験ではなぜかC言語が一番難しい問題になっているのは謎だが。
589 名前:デフォルトの名無しさん (ワッチョイ bf93-bZFw) mailto:sage [2017/06/25(日) 09:19:10.07 ID:PrMsbOwj0.net] >>582 C言語が一番難しいってどういう基準なのでしょうか
590 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/25(日) 09:33:58.41 ID:wnVI7vr50.net] >>583 問題をみればわかるでしょ?
591 名前:デフォルトの名無しさん (スププ Sdbf-VLv6) [2017/06/25(日) 09:53:15.23 ID:LyAyGbQ7d.net] Cは一番単純明快でわかりやすいでしょ
592 名前:デフォルトの名無しさん (ワッチョイ bf93-bZFw) mailto:sage [2017/06/25(日) 10:05:18.30 ID:PrMsbOwj0.net] 問題見てもどれも一緒に見えるけど…
593 名前:デフォルトの名無しさん (ワッチョイ 9f1e-6no4) mailto:sage [2017/06/25(日) 10:43:25.62 ID:OKoNwt4v0.net] >>579 CASL II でもいいでつか?><
594 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/25(日) 11:14:35.21 ID:wnVI7vr50.net] >>586 そうかCもまだよくわからないレベルだったな。
595 名前:デフォルトの名無しさん (ワッチョイ bf93-bZFw) mailto:sage [2017/06/25(日) 11:20:49.47 ID:PrMsbOwj0.net] >>588 Cは分かるんですけど、CとJavaの難しさの比較が出来ません
596 名前:デフォルトの名無しさん (ワッチョイ 9f1e-6no4) mailto:sage [2017/06/25(日) 12:44:21.11 ID:OKoNwt4v0.net] 基本情報技術者試験の過去問見たけど、 COBOL でもいいんじゃね?
597 名前:デフォルトの名無しさん (ワッチョイ bf93-bZFw) mailto:sage [2017/06/25(日) 13:04:19.37 ID:PrMsbOwj0.net] >>590 基本情報技術者試験はCで受けます
598 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/25(日) 15:21:31.61 ID:wnVI7vr50.net] 一番簡単なのは昔からアセンブラなんだよな。
599 名前:デフォルトの名無しさん (ラクッペ MMcb-bZFw) mailto:sage [2017/06/25(日) 17:09:12.90 ID:+wWOGC6CM.net] 何故アセンブラ…
600 名前:デフォルトの名無しさん (ワッチョイ d77f-ZLad) mailto:sage [2017/06/25(日) 17:18:27.51 ID:crK74dJZ0.net] 問題文に仕様書が付いてくるから暗記がいらない。あまり重箱の隅をつつくような問題が出ない。
601 名前:デフォルトの名無しさん (アウアウエー Sadf-h10b) [2017/06/25(日) 18:04:37.90 ID:pYBZiqDJa.net] >>593 言語の難易度と問題の難しさでバランス取ってたりして。。。
602 名前:デフォルトの名無しさん (ワッチョイ ff6f-QH9v) mailto:sage [2017/06/26(月) 05:39:11.26 ID:nrkIqgVb0.net] 単純な仮想CPUのアセンブリ言語だから割と簡単
603 名前:デフォルトの名無しさん (スプッッ Sdcb-wk8E) mailto:sage [2017/06/26(月) 06:34:56.32 ID:XtO3Dk5zd.net] 受験生に愛されるコメットさん
604 名前:デフォルトの名無しさん (ドコグロ MMdf-6no4) mailto:sage [2017/06/26(月) 14:59:45.01 ID:nH0wW7kQM.net] カシオのポケコン
605 名前:デフォルトの名無しさん (オッペケ Sr0b-mj4H) mailto:sage [2017/06/26(月) 19:43:30.58 ID:TF0F3xMAr.net] アセンブラが簡単というのは同意。アーキテクチャにもよるけど単純で罠も少ない
606 名前:デフォルトの名無しさん (ワッチョイ 179a-VrB2) mailto:sage [2017/06/26(月) 20:41:11.90 ID:GM19K0OY0.net] ふーん じゃあアセンブラでテトリス作ってみて
607 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/26(月) 20:58:03.95 ID:Ntea+VQr0.net] >>600 なんの話かまったく読まずにレスw
608 名前:デフォルトの名無しさん (アウアウカー Sa6b-m1nn) mailto:sage [2017/06/26(月) 21:13:56.64 ID:DVB4gtQza.net] 基本情報技術者試験のことだとすると「アーキテクスチャにもよるけど」っておかしくね? >>599 は一般にアセンブラが他の言語より簡単だと言ってるようにみえるんだが
609 名前:デフォルトの名無しさん (ワッチョイ b797-+bbG) [2017/06/26(月) 21:47:17.10 ID:Ntea+VQr0.net] >>602 CASLUではないとしてもあの程度のコンピュータのアセンブラなら言語としては単純。
610 名前:デフォルトの名無しさん (ワッチョイ 576f-CZMg) mailto:sage [2017/06/26(月) 23:17:34.88 ID:PKYMbkgl0.net] 並列動作とか遅延ジャンプとか出てこないし レジスタの塊みたいな奴に比べりゃ可愛いよな
611 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/26(月) 23:19:06.55 ID:31mN8SV/0.net] Visual Studio community 2017をC言語のコンパイラとして使えないんでしょうか?
612 名前:デフォルトの名無しさん (ワッチョイ d77f-ZLad) mailto:sage [2017/06/26(月) 23:21:42.03 ID:Th5Kxani0.net] >>602 当然、COMP-XかCOMETかという話だろう。
613 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6) mailto:sage [2017/06/26(月) 23:27:10.92 ID:go0auT85d.net] >>605 C言語にしたいなら、拡張子を.cにしろよ。
614 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/26(月) 23:47:45.66 ID:31mN8SV/0.net] >>607 コンパイラとしてどうやって使っていいのかわかりません。 コードを書いてもどうやって実行すればいいのか解りません・・・ 今は勉強用にEasyIDECって言うのを使ってますがこれはプログラムの実行はできるんですが ファイルを読み込むタイプのプログラムを実行できないしexeファイルも作れません。 勉強しながら早いうちからexeファイルとか作れる環境で慣れたいんですがやりかたがわからなくて・・・ よければ教えてください
615 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6) mailto:sage [2017/06/27(火) 00:20:49.40 ID:aHvsmlwPd.net] >>608 IDE使う前にMSYS2+MinGWのコマンドラインでhello would書いて特訓しろ。
616 名前:デフォルトの名無しさん (ワッチョイ ffa2-ZLad) mailto:sage [2017/06/27(火) 00:37:59.30 ID:1mHdD+S50.net] またQZが自演してるな たのむからゴミコードは出すなよ
617 名前:デフォルトの名無しさん (ワッチョイ 376c-dFnT) [2017/06/27(火) 08:53:16.46 ID:ucAV+SpP0.net] >>564 試験対策ならJavaだろうなぁ 俺はJavaで合格した。 派遣のプログラマーで仕事もらうには、合格必要だぜ。 今は、派遣はヤメたけど、派遣の経験は良い勉強になったわぁ。
618 名前:デフォルトの名無しさん (ドコグロ MMdf-6no4) mailto:sage [2017/06/27(火) 09:31:49.14 ID:jtm5ziJ2M.net] >>609 MSX2+ とか笑かすわ。
619 名前:デフォルトの名無しさん (ワッチョイ 376c-dFnT) [2017/06/27(火) 10:00:06.40 ID:ucAV+SpP0.net] >>609 トグル・スイッチをパチパチやってプログラミングするところからやる? パチパチやってBoot Loaderを打ち込むのからやると、全てが判るよ。
620 名前:デフォルトの名無しさん (ワッチョイ 376c-dFnT) [2017/06/27(火) 10:03:11.75 ID:ucAV+SpP0.net] 十進カウンタや、JKフリップ・フロップをNANDを組み合わせて作る事は今でもやるんだろ?大学で。 学生実験とか?最近の大学では無いの?
621 名前:デフォルトの名無しさん (ワッチョイ f7db-XubJ) mailto:sage [2017/06/27(火) 10:47:01.95 ID:ZcFCap/E0.net] 加算器とか情報算数かな
622 名前:デフォルトの名無しさん (ワッチョイ 376c-dFnT) [2017/06/27(火) 10:57:18.19 ID:ucAV+SpP0.net] >>615 それ、なんちゅう授業?授業のタイトルは?
623 名前:デフォルトの名無しさん (スップ Sd3f-VrB2) mailto:sage [2017/06/27(火) 12:53:23.72 ID:GRUOkSLcd.net] >>612 ジジイ乙
624 名前:デフォルトの名無しさん (ワッチョイ 170d-NIhq) mailto:sage [2017/06/27(火) 12:54:46.79 ID:/HeVfsPd0.net] ハーフアダー フルアダー を論理回路で
625 名前:デフォルトの名無しさん (ワッチョイ 176f-f4dT) mailto:sage [2017/06/27(火) 13:05:58.64 ID:IF4g2E0D0.net] 演算器の設計 - 加算器(Adder) news.mynavi.jp/column/architecture/070/ 演算器の設計 - キャリールックアヘッドアダー news.mynavi.jp/column/architecture/071/ 演算器の設計 - キャリールックアヘッドアダー(2) news.mynavi.jp/column/architecture/072/ パラレルプリフィックスアダー news.mynavi.jp/column/architecture/073/ パラレルプリフィックスアダー(2) news.mynavi.jp/column/architecture/074/ パラレルプリフィックスアダー(3) news.mynavi.jp/column/architecture/075/ Lingアダー news.mynavi.jp/column/architecture/076/ アダーの実装に関して news.mynavi.jp/column/architecture/077/
626 名前:デフォルトの名無しさん (ワッチョイ 9fc1-NIhq) [2017/06/27(火) 17:08:46.44 ID:HjxjU0LK0.net] exeの作り方は結局わかりませんでしたが textファイルを読み込んで結果を吐き出すプログラムはvisual stadioで何とか実行できました スレ汚しすみませんでした
627 名前:デフォルトの名無しさん (ドコグロ MMdf-6no4) mailto:sage [2017/06/27(火) 17:43:30.17 ID:jtm5ziJ2M.net] プロジェクトの下の debug か release の下に出来てるだろ。
628 名前:デフォルトの名無しさん (ドコグロ MMdf-Stqb) mailto:sage [2017/06/27(火) 17:57:16.27 ID:HOHNeZU7M.net] >>616 こんなやつじゃね? risyu.is.it-chiba.ac.jp/syllabus/syplssb302
629 名前:デフォルトの名無しさん (ワッチョイ 9fc1-NIhq) [2017/06/27(火) 18:21:29.40 ID:HjxjU0LK0.net] >>621 よく見たらdebugフォルダの中にアプリケーションって言うのがありました これがexeファイルなんですね(*´ェ`*)
630 名前:デフォルトの名無しさん (オイコラミネオ MM4f-hFIA) mailto:sage [2017/06/27(火) 19:29:10.53 ID:eugTAuNDM.net] char *hoge にファイル名が入っていて、 printf("%s",hoge);とするとファイル名が表示されます このファイル名を dqn.sakusakutto.jp/2013/04/c_kr_stack.html のpush()に引数として入れたいのですが、型が合いません どなたか教えて下さい
631 名前:デフォルトの名無しさん (オイコラミネオ MM4f-hFIA) mailto:sage [2017/06/27(火) 20:00:27.36 ID:7v0X4ZTWM.net] すみません自決しました
632 名前:デフォルトの名無しさん (ワッチョイ 179a-VrB2) mailto:sage [2017/06/27(火) 20:07:10.41 ID:bJ//gE7J0.net] 自決しちゃったのか
633 名前:デフォルトの名無しさん (ワッチョイ 576f-CZMg) mailto:sage [2017/06/27(火) 22:36:09.51 ID:pewKiBDj0.net] 御冥福を
634 名前:デフォルトの名無しさん (ワッチョイ f7e3-LvKX) mailto:sage [2017/06/27(火) 22:38:45.02 ID:YYgE0wDj0.net] せっかくだから辞世の句を詠んでからにしよう
635 名前:デフォルトの名無しさん (ワッチョイ 5723-LvKX) mailto:sage [2017/06/28(水) 01:29:20.62 ID:CBwCtPCV0.net] >>608 EasyIDEC ってこれのことだよな? 9cguide.appspot.com/p_9cide.html だったらこれはコンパイラがtccだからちゃんとexe作った上で実行している筈だしファイルの読み書きも全く問題なくできる筈だぞ。
636 名前:デフォルトの名無しさん (アウアウウー Sa9b-h10b) [2017/06/28(水) 07:58:22.81 ID:na5KYPACa.net] >>608 コマンドラインからコンパイルしたいならVCは何かバッチ実行したらclでコンパイル出来たはず。 面倒だったらbccに乗り換えて見ては。 setbccってツールも併せて検索して使えばパス通しまでしてくれる。
637 名前:デフォルトの名無しさん (ワッチョイ f7db-XubJ) mailto:sage [2017/06/28(水) 10:17:50.38 ID:xb2y2Mwj0.net] ベン図とかカルノー図とか スレチ過ぐる
638 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/28(水) 17:26:43.67 ID:duiTP6800.net] >>629 自分ではtxtファイルの読み込み方が解りませんでした・・・ あとこんな感じで使えたらいいんですけど 9cguide.appspot.com/easyidec7.jpg
639 名前: 自分の環境(win7)だと立ち上げた後 http://light.dotup.org/uploda/light.dotup.org459505.jpg こんな感じでスクリプトエラーが9個ぐらい出るし理想の使い方ができないんです・・・ >>630 Borland C++ Compiler 5.5がもう配布されてなくて代わりに https://www.embarcadero.com/jp/free-tools?redirect=http://www.codegear.com/jp/downloads/free/cppbuilder こんなのが配布されていてこれのC++Compilerをダウンロードしてみたんですがなんか違う気がします。 http://forest.watch.impress.co.jp/article/2002/10/24/cwohajimeyou.html これもBorland C++ Compiler 5.5を要求されますが参考サイトと同じような設定ができなくてあきらめた経緯もあります。 今はvisual studio community 2017を使っていますがエラーを山のように吐いてくれて勉強になるしテキストファイルを読み込んだり吐き出したりする プログラムも作れたりととりあえず初心者として目指すレベルには十分やりたい事ができるのでこれでいいかなと思っています。 レスありがとうございました。 [] [ここ壊れてます]
640 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/28(水) 18:02:23.14 ID:duiTP6800.net] >>632 はこっちじゃなくて forest.watch.impress.co.jp/article/2002/10/24/cwohajimeyou.html こっちでした forest.watch.impress.co.jp/article/2007/02/07/cwohajimeyou2.html EasyIDECも写真のように右にいろいろ出るなら使いたいんですけど、よく解らないんですよね・・・
641 名前:デフォルトの名無しさん (アウアウウー Sa9b-h10b) [2017/06/28(水) 20:06:32.41 ID:AA6Kh2Ana.net] >>632 setbcc新しい方に対応してないんか。 フォルダ名書き換えるだけやから対応すりゃ良いのにね。 gccとかは-oファイル名ってしないとa.exeになっちゃうけど、確かインストール時にパス通してくれるはず。 (最悪、binだけ自分でパス通せば行けたはず。ライブラリのパスをコンパイラの設定ファイルに通すとか、そういう面倒はなかった)
642 名前:デフォルトの名無しさん (ワッチョイ d723-ZLad) mailto:sage [2017/06/28(水) 22:11:54.96 ID:SRIFWNkc0.net] >>633 ずぶの素人なんだろ? だったら、そういうのはチュートリアルを一つずつやっていくもんだ。 https://msdn.microsoft.com/ja-jp/library/szatc41e(v=vs.110).aspx https://msdn.microsoft.com/ja-jp/library/zftbwa2b(v=vs.110).aspx ただしMSはVC++にはやる気を出してない(基本あれはプロ用)なので、 チュートリアルが整備されているC#等を使ってIDEの使い方を学んだ方がいい。 https://msdn.microsoft.com/ja-jp/library/jj153219.aspx https://msdn.microsoft.com/ja-jp/library/dd492135.aspx https://msdn.microsoft.com/ja-jp/library/dd492171.aspx IDEに関してはVSがかなりいいから、そんな古いマイナーIDEなんて使わずに、 最初からVSでやったほうがいい。 ただ、環境整備をずぶの素人がやるのは辛い。 というか、周りに誰かいないのか?居るのなら拝み倒してやってもらえ。 そんなところで苦労しても何の足しにもならない。 とっとと実行環境を整備して、ガンガンコード書いて動かして試さないと意味が無い。 周りに誰も居ないのなら、マジでチュートリアルを頭から全部一つずつやっていけ。 そしたらいつか、ああもういいか、って思うときが来るから、 その時にチュートリアルを卒業し、自分のプロジェクトの開発を始めろ。
643 名前:デフォルトの名無しさん (ワッチョイ d723-ZLad) mailto:sage [2017/06/28(水) 22:28:47.16 ID:SRIFWNkc0.net] >>633 ああごめん、VC++もチュートリアルあったわ。 いつもどおりハロワだが。 https://msdn.microsoft.com/ja-jp/library/jj620919.aspx C++だからstdafx.hになっているが、 VC++はそこらへんごちゃ混ぜに出来るので(この意味は今は分からなくていい) #include "stdio.h" すれば printf とかも普通に使えるはず。 まあがんばれ。
644 名前:デフォルトの名無しさん (ワッチョイ d7c1-NIhq) [2017/06/28(水) 23:04:41.12 ID:duiTP6800.net] >>636 ありがとうございます チュートリアル読みました。 エラーが出るとはいえEasyIDECを使ってある程度流れがわかっていたのとvisualstudioを何時間か弄っていたので チュートリアルは多分理解できたと思います 今はwin32コンソールアプリケーションの空のプロジェクトを作ってソースファイルのところに.cファイルやtextファイルを追加する感じで使っていて それなりに自分の目的にあうようには使えてるとは思います・・・多分 だからコードをひたすら書いて、理解を深めようと思っているところです。 また解らないことがあったら質問させてください!!
645 名前:デフォルトの名無しさん (ワッチョイ d723-ZLad) mailto:sage [2017/06/28(水) 23:55:03.72 ID:SRIFWNkc0.net] >>637 いや見りゃ分かるが君はこのスレで質問すべきレベルに達してない。 つっても他に聞く相手が居ないのならどうしようもないが、 質問されてもさすがに相手するのが嫌になるレベルだというのは自覚しろ。 だから質問したところで回答があるかどうかはまた別の話だ。 君は分かっていないだろうが、 レベルの低い奴(今回は君)に対して回答することはスレに悪影響を及ぼす。 単純には、そういうレベルの奴が集まる方向に圧力がかかり、結果的に上級者が逃げ出す。 俺はこのスレの常連ではないから、俺がこのスレに対して影響を及ぼすのは本意ではない。 だから今後は俺は君の質問は無視する。 それでも君が質問するのも自由だし、それに対して回答するのも他住民の自由だが、 見たとおり、適当にあしらわれて終わりになるはずだ。 それがスレのレベルを下げないための適切な行動だからだ。 ところが君はどうやら本気で学びたいようだ。 だからとりあえず回答したが、今後は俺は回答しない。自分で勝手に学べ。 今はそれが出来るだけのリソースがWeb上にある。 最新IDEとWebを使うのが一番無駄に引っかからなくていいからそうしろ。 IDE自体の質問なら、VSならスレがある。 というかバージョン毎に12スレもあるからそっちで聞け。 mevius.2ch.net/test/read.cgi/tech/1491618774/ > win32コンソールアプリケーション 多分、1-100まで足してみようとか、そういうのからやってるんだろ? それならこれで合ってるから、まあがんばれ。 とりあえずブレークポイント/ステップ実行/ウオッチが使えれば何とかなるだろう。 後は適当に弄繰り回していれば分かるようになる。 IDEなんて基本的に使い方は同じだから、最初から高機能IDE(今回はVS)に慣れたほうがいい。
646 名前:デフォルトの名無しさん (ワッチョイ 2ea2-wjSU) mailto:sage [2017/06/29(木) 00:08:02.54 ID:GSOqdYxT0.net] こんな感じでQZが煽られ発狂
647 名前:デフォルトの名無しさん (ワッチョイ 2d6c-ddzC) [2017/06/29(木) 08:26:00.68 ID:7eb8fA4L0.net] >>635 すげぇなぁ、Microsoft. 日本語チュートが充実じゃん。
648 名前:デフォルトの名無しさん (ワッチョイ 2d6c-ddzC) [2017/06/29(木) 08:43:40.13 ID:7eb8fA4L0.net] stdafx.hをみて恐れをなしてVisual Basicを選択したのを思い出した。 その後、Obj-C -> Swiftに流れたが、今VC++さわれば楽しめるかもしれん。 ただし、Microsoft仕様のC++が今どうなってるのか?不安。 それと、Windows環境ってAPI Referenceを気軽に検索する方法があるのか? 俺がVC++触っていた時は、msdn developer’s networkっていう重いAPI Viewerがインストールされて、ちょっと検索する
649 名前:にもエライ待たされて閉口したんだが。 [] [ここ壊れてます]
650 名前:デフォルトの名無しさん (ワッチョイ 2d6c-ddzC) [2017/06/29(木) 08:48:30.60 ID:7eb8fA4L0.net] VC++って、C++11/14/17に準拠してるんだって。部分的に。 VC++も進化してるんだ。知らんかった。
651 名前:デフォルトの名無しさん (スップ Sd62-Pf3w) mailto:sage [2017/06/29(木) 08:49:10.03 ID:kjfsQTVLd.net] そう、部分的に
652 名前:デフォルトの名無しさん (アウアウエー Sa4a-kiAr) [2017/06/29(木) 09:07:42.11 ID:OIGMpkDEa.net] その辺の準拠率はg++かclangだな。 c99対応コンパイラは皆無だっけ?
653 名前:デフォルトの名無しさん (ワッチョイ 6e6f-UtiB) mailto:sage [2017/06/29(木) 09:09:29.51 ID:NPwerNyC0.net] C++/CLI https://ja.m.wikipedia.org/wiki/C%2B%2B/CLI
654 名前:デフォルトの名無しさん (スプッッ Sdc2-upg+) mailto:sage [2017/06/29(木) 09:19:32.95 ID:Tswd9qCud.net] emacsから離れられん
655 名前:デフォルトの名無しさん (ワッチョイ 2d6c-ddzC) [2017/06/29(木) 09:20:48.70 ID:7eb8fA4L0.net] CCmdTarget UIResponder CWnd UIWindow CView UIView CEditView UITextView CButton UIButton CWinApp UIApplication MFCとUIKitの対応関係はこんな感じか? クラス階層図はかなり違うなぁ。継承を使ってカスタマイズしていく設計と、デリゲートを使ってカスタマイズしていく設計との違いから来るのかな?
656 名前:デフォルトの名無しさん (ワッチョイ 2d6c-ddzC) [2017/06/29(木) 09:26:19.20 ID:7eb8fA4L0.net] VC++がプロ仕様と言うのだったら、Xcodeも同じ様なもんだな。 String構造体が、 Conforms To Comparable CustomDebugStringConvertible CustomPlaygroundQuickLookable CustomReflectable CustomStringConvertible CVarArg Equatable ExpressibleByExtendedGraphemeClusterLiteral ExpressibleByStringLiteral ExpressibleByUnicodeScalarLiteral Hashable LosslessStringConvertible TextOutputStream TextOutputStreamable こんだけのプロトコルに準拠しているって、仕様を見て、どれだけのヤツがピントくるかな? おまけに山ほどイニシャライザがあって、初心者はびっくりするだろなぁ。 C++から来た奴は、構造体にイニシャライザ?って思うのかな!
657 名前:デフォルトの名無しさん (ワッチョイ 6e6f-UtiB) mailto:sage [2017/06/29(木) 09:37:55.49 ID:NPwerNyC0.net] https://msdn.microsoft.com/ja-jp/library/system.string(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1
658 名前:デフォルトの名無しさん (ワッチョイ 2d6c-ddzC) [2017/06/29(木) 10:36:02.44 ID:7eb8fA4L0.net] >>649 あのぉー。Visual Studioのリファレンスって、offlineでも引く事できますか? 例えば、4Gの携帯回線が細い場所でも、リファレンスを閲覧出来るのでしょうか? リファレンスをローカルの開発機へインストールできますか?
659 名前:デフォルトの名無しさん (ワッチョイ 6e6f-UtiB) mailto:sage [2017/06/29(木) 10:52:35.22 ID:NPwerNyC0.net] オフラインのヘルプビューアもあるけどコンテンツ内容が古い オンラインでもそれほど重くはないので4G回線ならWebでも問題ないだろ
660 名前:デフォルトの名無しさん (ワッチョイ 1911-CicO) [2017/06/29(木) 17:10:15.78 ID:wGgfLCtF0.net] ***SLAMO*** } 000-"F","TAP","0","1M","L","E-07"/0B"[9BA%]"^"2*73B"="0"/"9GA" 001-"Do"[[[%9DE=HUF%%!%$0B1OTU"NE"]]]<\b> 002-<<%!!!HNDEL%!0DAI@$7[1B]!0#!@>> 3000-{{1\B%HUF!0$$\%6/0Q\%6/GA[[7BU]]%9TE!%$en$}} --- [[[C%%]]] } 000-"5802"/"α"="0.1888412376155482"%en{
661 名前:デフォルトの名無しさん (ワッチョイ e23d-t7cX) mailto:sage [2017/06/30(金) 00:41:38.72 ID:OFeLP1+80.net] 以下のコードように、呼び出し先の関数で作った配列をポインタとしてmain関数に返すプログラムでwarningが出るので、調べてみたところ ・呼び出し先の変数は一時的に保管される領域に入っている ・一時的に保管される領域はmain関数に戻ると消える ・main関数にリターンされるのはあくまで配列の開始位置なので、この書き方では配列が消える恐れがある という情報を目にしました。 以下のようなコードであればどのように改善すればいいでしょうか。 宜しくお願いします。 /*main.c*/ int main() { int *hoge=sub(); } /*sub.c*/ int *sub() { int b[10]; return b; }
662 名前:デフォルトの名無しさん (アウアウカー Sae9-MMk3) mailto:sage [2017/06/30(金) 01:03:42.29 ID:obNwHzFda.net] mainにbの配列を宣言してsubにポインタを渡し中身を書き換える もしくは sub内のbをstatic intにする
663 名前:デフォルトの名無しさん (ブーイモ MM62-iZ7+) mailto:sage [2017/06/30(金) 01:17:27.06 ID:RtmcppLUM.net] もしくは mallocで確保した領域を返し、freeするのは呼び出し元の責任にする
664 名前:デフォルトの名無しさん (スップ Sdc2-HpRm) mailto:sage [2017/06/30(金) 04:27:36.41 ID:8CWbZ/OEd.net] null pointer
665 名前:デフォルトの名無しさん (ワッチョイ 62d7-8IVh) mailto:sage [2017/06/30(金) 05:56:01.96 ID:sS6ajRjO0.net] 呼び出し元で寿命を管理すべきなので、 mainに int b[10]; と宣言してsubにbのポインタを渡す
666 名前:デフォルトの名無しさん (ドコグロ MMe1-oSf6) mailto:sage [2017/06/30(金) 08:37:20.11 ID:Zx9hbpt8M.net] 別にどっちで管理してもいい
667 名前:デフォルトの名無しさん (ワッチョイ e23d-t7cX) mailto:sage [2017/06/30(金) 09:33:09.99 ID:OFeLP1+80.net] >>654 >>655 >>657 ありがとうございます!!
668 名前:デフォルトの名無しさん (ワッチョイ cd82-nP2k) mailto:sage [2017/06/30(金) 09:40:38.20 ID:b/sHRIH80.net] 構造体で包んで値返し typedef struct { int b[10]; } foo_t; foo_t sub(void) { foo_t a; return a; }
669 名前:デフォルトの名無しさん (ブーイモ MM62-iZ7+) mailto:sage [2017/06/30(金) 09:44:31.82 ID:RtmcppLUM.net] >>657 strdup使わない派?
670 名前:デフォルトの名無しさん (スプッッ Sdc2-upg+) mailto:sage [2017/06/30(金) 10:43:50.08 ID:12icUynjd.net] Cでprintfみたいな可変引数関数のラッパー を可変引数で作りたいです。 コンパイラの実装に依存しない書き方って 有りますか?
671 名前:デフォルトの名無しさん (JP 0Hc9-iZ7+) mailto:sage [2017/06/30(金) 11:24:03.18 ID:zIElKXKqH.net] >>662 それができないからvprintfみたいなラップされる専用の関数ができた
672 名前:デフォルトの名無しさん (スプッッ Sdc2-upg+) mailto:sage [2017/06/30(金) 11:37:38.99 ID:12icUynjd.net] やっぱそうですか、残念。 ターゲットの関数はソース無いし、 vprintfみたいなのは用意されてないです。
673 名前:デフォルトの名無しさん (スップ Sd62-HpRm) mailto:sage [2017/06/30(金) 11:51:41.54 ID:vgqCM8Lxd.net] >>656 ガッ
674 名前:デフォルトの名無しさん (ワッチョイ c90d-nP2k) mailto:sage [2017/06/30(金) 12:52:04.96 ID:X/gd7WZi0.net] 可変引数関数を記述するだけなら stdarg.h で事足りるけど printf のフォーマット文字列解釈して 文字に置き換える部分を そのまま利用したいとなると、vsprintf の有無次第だよな・・・
675 名前:デフォルトの名無しさん (ワッチョイ 62d7-8IVh) mailto:sage [2017/06/30(金) 17:00:50.82 ID:sS6ajRjO0.net] >>661 状況によるけど、malloc/freeはコストが大きいので、使わなくて済むなら使わない
676 名前:デフォルトの名無しさん (ワッチョイ 2d6c-ddzC) [2017/06/30(金) 17:07:02.99 ID:BBkM2EA10.net] >>667 コスト高いの?本当に! 高いのはSystem Callのこれじゃぁ? sbrk/mmap/VirtualAlloc等
677 名前:デフォルトの名無しさん (ワッチョイ 62d7-8IVh) mailto:sage [2017/06/30(金) 17:27:47.82 ID:sS6ajRjO0.net] >>668 不必要なら避ける癖ついてたなあ 厳密に検証してないが、確保するサイズにもよるけど10%ぐらい違う しかし関数コールは減らした方がいいのは明らか
678 名前:デフォルトの名無しさん (ドコグロ MM0a-zH8r) mailto:sage [2017/06/30(金) 18:45:37.58 ID:I/Y6yRYUM.net] >>668 高い場合がある と言う方がより正確かと なので組み込みだと禁止してたり独自のルーチン
679 名前:組み込んでたりする [] [ここ壊れてます]
680 名前:デフォルトの名無しさん (ワッチョイ c123-wjSU) mailto:sage [2017/06/30(金) 20:10:41.26 ID:caqhD/Ov0.net] int b[10]とmallocではmallocの方が常にコストは高いけどな。 前者は最適化無しで1命令、最適化後は0命令。 後者はK&R的軽量実装でも10〜1000命令は必要になる。 10%ってのは他含めてコミコミの計測結果だろ。確保のみなら喧嘩にならん。
681 名前:デフォルトの名無しさん (オッペケ Sr71-OZRj) mailto:sage [2017/06/30(金) 20:23:10.05 ID:Hz970lyir.net] ガベージコレクタだって高コストだしな。自分でメモリを管理するのが一番安いw
682 名前:デフォルトの名無しさん (ワッチョイ 6df4-nP2k) mailto:sage [2017/06/30(金) 20:33:40.33 ID:APIJ3en80.net] アセンブラ時代思い出すなぁ。
683 名前:デフォルトの名無しさん (ワッチョイ b16f-pT0u) mailto:sage [2017/06/30(金) 23:38:17.22 ID:yb1eWQ160.net] コストが高いからalloca()が出来たんだし
684 名前:デフォルトの名無しさん (ブーイモ MMb6-DhWx) mailto:sage [2017/07/01(土) 00:12:13.52 ID:bUPyefPgM.net] >>638 もちつけ。おまいださいぜ
685 名前:デフォルトの名無しさん (スップ Sd62-HpRm) mailto:sage [2017/07/01(土) 02:56:34.34 ID:PLwoIwzod.net] Windows環境のMINGWです \nをASCII文字コードにするとASCII表の通り10になりますが、 Windowsの改行コードCR+LFですよね? UNIX環境ならLFつまり10になるのはわかりますが、何故Windows環境でも10なのでしょうか?
686 名前:デフォルトの名無しさん (ワッチョイ 017f-wjSU) mailto:sage [2017/07/01(土) 08:20:28.99 ID:PrUYVLVg0.net] \nをprintしたりした場合に改行になるだけであって、\nが10なのは変わらない。
687 名前:デフォルトの名無しさん (スップ Sd62-HpRm) mailto:sage [2017/07/01(土) 08:40:33.80 ID:EmOg/tlYd.net] >>677 ありがとうございます \nが10になるのはCR+LFでもLFでも同じだということですか?
688 名前:デフォルトの名無しさん (ワッチョイ 42af-2NZ/) mailto:sage [2017/07/01(土) 13:13:17.56 ID:FWbGo/9j0.net] \nは改行を表しその値は(ASCIIなら)10 printfとかの入出力するときにunixなら何もしないがwindowsではCR+LFと変換する
689 名前:デフォルトの名無しさん (ワッチョイ b16f-pT0u) mailto:sage [2017/07/01(土) 14:26:57.37 ID:jAe4uSb20.net] 出力先のファイルポインタがクックドモードの時だけ変換される
690 名前:デフォルトの名無しさん (スップ Sd62-HpRm) mailto:sage [2017/07/01(土) 15:56:17.04 ID:9IpZzPucd.net] >>679 >>680 ありがとうごぞいます クックドモードも調べてすっきりしました
691 名前:デフォルトの名無しさん (ワッチョイ 1911-CicO) mailto:sage [2017/07/04(火) 18:08:24.69 ID:K9JgJTrT0.net] [[[C++]]] } 001-GOM#\%71/#1,16,2,M,BL,SAJ%\*%U,615325,6,11,62,364,3,21,673,!\0.1,11.5,78,21,6%<<<\BSA\>0>>>%11.27,21,0,73.561,2,3,4,6,1,{\!end
692 名前:デフォルトの名無しさん (ワッチョイ 6997-hy1C) mailto:sage [2017/07/04(火) 23:36:19.93 ID:ydrc2aV60.net] テキストファイルは、CR + LFでも読み込んだらLFだけになる。書き込むときCR + LFになる バイナリファイルは、そんなことにならない テキストエリアで改行するなど、ファイルとは関係ない場合、CRが必要になる場合がある
693 名前:デフォルトの名無しさん (ドコグロ MM0a-oSf6) mailto:sage [2017/07/05(水) 12:59:27.11 ID:63hLHVD1M.net] 初心者の誤った回答の典型
694 名前:デフォルトの名無しさん (ワッチョイ 6e1c-4/kT) [2017/07/05(水) 15:35:27.26 ID:4h6UtxrL0.net] ファイルの属性じゃねえもんな
695 名前:デフォルトの名無しさん (ワッチョイ 7723-Y2Kr) mailto:sage [2017/07/06(木) 04:58:28.75 ID:pM9IP2NJ0.net] 教えて下さいm(_ _"m) size_t n; n = (int)n < 0 ? -n : n; /* quick absolute value check */ "<" や "? :" の演算子は調べて分かったのですが、(int)n の部分は どういう処理を行いますか? intって宣言するものが、かっこで囲まれていて、なんだこれ! っていう状態です。
696 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/06(木) 05:47:36.98 ID:CwAIhoRS0.net] キャストだよ 本来size_t型のnを、その場だけintてことにしてくれって要求 ただし本当にintになっちまうわけじゃないから (int)n = n < 0 ? -n : n; みたいに 代入先にしようとするとエラーだ コンパイラによっては通るのがあるけどそれは非標準
697 名前:デフォルトの名無しさん (ワッチョイ 7723-Y2Kr) mailto:sage [2017/07/06(木) 05:57:41.52 ID:pM9IP2NJ0.net] >>687 ありがとうです! キャストですね。 size_tからintに一時的な変換ですね。 双方のメモリー上の大きさが違う気がするんですけど、僕の環境でどうなるのか調べてみます。
698 名前:デフォルトの名無しさん (ワッチョイ d79a-0UkT) mailto:sage [2017/07/06(木) 08:10:55.85 ID:rcg+ZZ7N0.net] 何がしたいコードなのか意味がわからない
699 名前:デフォルトの名無しさん (ブーイモ MMbf-w3/P) mailto:sage [2017/07/06(木) 08:12:31.54 ID:TeNYF/iwM.net] nが負になりうるならなんでsize_tで宣言するんだろ
700 名前:デフォルトの名無しさん (ワッチョイ 9f8f-gRQY) [2017/07/06(木) 08:30:53.10 ID:KLsItAo20.net] ssize_t が標準に欲しいところだよね。
701 名前:デフォルトの名無しさん (ワッチョイ 176f-Fmay) mailto:sage [2017/07/06(木) 08:36:29.39 ID:c6kgU9bA0.net] キャストを覚えろ キャストしない事を覚えろ キャストをすこしだけする事を覚えろ
702 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/06(木) 08:37:13.77 ID:kIxohS2+M.net] >>689-690 単なるサンプルコードだろ そもそもそのまま実行したら未初期化のnを参照することになるし
703 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/06(木) 08:41:41.93 ID:kIxohS2+M.net] >>691 sizeof と言うコンパイラ組込演算子の戻り値の型がコンパイラに組み込まれていない違和感
704 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/06(木) 09:45:19.82 ID:CwAIhoRS0.net] >>694 いや組み込まれているが それが具体的に何型なのかを コンパイラの実装者が明らかにせよと 規格が要求しているということだ
705 名前:デフォルトの名無しさん (JP 0Hab-inuj) mailto:sage [2017/07/06(木) 11:03:13.91 ID:TUAsW00PH.net] >>693 出典はここだな。 https://stackoverflow.com/questions/10204471/convert-char-array-to-a-int-number-in-c 問1: この回答者がnの絶対値をとりたくなったときの気持ちを3行で答えよ。
706 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/06(木) 12:41:49.84 ID:kIxohS2+M.net] >>695 > いや組み込まれているが 「コンパイラ(プリプロセッサじゃなくて)」には組み込まれてないだろ > それが具体的に何型なのかを > コンパイラの実装者が明らかにせよと > 規格が要求しているということだ だからなに?
707 名前:デフォルトの名無しさん (ワッチョイ f76c-QYYo) [2017/07/06(木) 12:58:54.02 ID:Ot0nxXPI0.net] size_tは__darwin_size_tでトドのつまり、unsighed longだって。
708 名前:デフォルトの名無しさん (ドコグロ MM2b-AvV2) mailto:sage [2017/07/06(木) 13:20:12.73 ID:SSOSMdMWM.net] >>697 どうであれば組み込まれてることになるの size_t n がコンパイルできることじゃないんだよね?
709 名前:デフォルトの名無しさん (ワッチョイ b7db-TZYB) mailto:sage [2017/07/06(木) 14:53:10.10 ID:m/Ia1fy10.net] >>691 反物質のサイズでも記述する気か?w
710 名前:デフォルトの名無しさん (アウアウウー Sa5b-pw7F) [2017/07/06(木) 15:09:30.84 ID:F+RVqvnpa.net] 【環境】 CS+ + RX62N + E1エミュレータ 【言語】 C言語 上記にてprintf()でCS+のデバッグウィンドウに出力するにはどうすればいいですか?
711 名前:デフォルトの名無しさん (スッップ Sdbf-0UkT) mailto:sage [2017/07/06(木) 15:37:45.25 ID:H/fupZr5d.net] ここできくないようか?
712 名前:デフォルトの名無しさん (アウアウウー Sa5b-pw7F) mailto:sage [2017/07/06(木) 15:51:10.46 ID:F+RVqvnpa.net] >>702 printf()ってCの標準関数でしょ?ここでいいのでは?
713 名前:デフォルトの名無しさん (ワッチョイ d76f-rmcQ) mailto:sage [2017/07/06(木) 16:28:30.82 ID:hwRP8VqJ0.net] ターゲットデバイス上でプログラムを実行するのであって、開発マシン上でプログラムを実行するのではない
714 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/06(木) 17:11:22.36 ID:CwAIhoRS0.net] >>697 おまえの定義では、どうなっていることを「組み込まれている」というんだ? たとえば、 float a = sizeof(int); これの動作過程の途中に生じる整数型は、コンパイラには組み込まれていないのか? だとするならば、コンパイラは標準変換の規定に「準拠」することができないぞ # cl.exeではsize_tがいきなり使えるが、それがおまえの理想か
715 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/06(木) 19:16:01.36 ID:kIxohS2+M.net] >>705 > # cl.exeではsize_tがいきなり使えるが、それがおまえの理想か どこの cl.exe なのか知らんけど手元の Visual Studio 2015 Express では未定義の識別子だぞ
716 名前:デフォルトの名無しさん (ワッチョイ 977f-KuRC) mailto:sage [2017/07/06(木) 20:40:37.21 ID:fTFUdLH00.net] >>700 size_tの差を記述したいんだろう。
717 名前:デフォルトの名無しさん (ワッチョイ 9fea-hKQV) [2017/07/06(木) 21:53:15.95 ID:GBHzG+Z/0.net] 何も入力されずにenterが押されたらループを終了する方法が分かりません・・・ 誰か教えてください・・・ やはりscanfでは出来ませんかね fgetsだったらできますか? 誰か教えてください、お願いします
718 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v) mailto:sage [2017/07/06(木) 22:01:35.45 ID:TwV4dW80d.net] プロとしては、scanf単独で使うのではなく、fgetsとsscanfの組み合わせをオススメする。 Enterキーのみが入力されたときは、fgetsのバッファには\nが入る。
719 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/06(木) 22:02:15.40 ID:CwAIhoRS0.net] >>706 ああ、わりいな 拡張子が.cppの場合だw で、それがおまえの理想か?
720 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/06(木) 22:03:10.59 ID:CwAIhoRS0.net] つーか+Mはメインの質問に答えてないんだが
721 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/06(木) 22:04:47.65 ID:CwAIhoRS0.net] >>709 すげえのオススメしてんなw へーえ、それがプロの仕事か
722 名前:デフォルトの名無しさん (ワッチョイ 9fea-hKQV) [2017/07/06(木) 22:08:15.36 ID:GBHzG+Z/0.net] >>709 ありがとうございます 参考になります
723 名前:デフォルトの名無しさん (ワッチョイ ff4b-zXdO) mailto:sage [2017/07/06(木) 22:13:42.82 ID:btC8Tydl0.net] www.c-tipsref.com/reference/stdio/fgets.html 読み取ったものが空だったときfgetsはNULLを返すらしいのでそれを使えばいいかと
724 名前:デフォルトの名無しさん (ワッチョイ ff4b-zXdO) mailto:sage [2017/07/06(木) 22:17:43.51 ID:btC8Tydl0.net] あ 確かにfgets(s, N, stdin)は改行を含めて読み取るな じゃあ戻り値をsに格納したときにs[0] <= 0x1fのときループを終了させればいいか
725 名前:デフォルトの名無しさん (ワッチョイ 9fea-hKQV) [2017/07/06(木) 22:18:05.33 ID:GBHzG+Z/0.net] >>714 ありがとうございます!
726 名前:デフォルトの名無しさん (ワッチョイ ff4b-zXdO) mailto:sage [2017/07/06(木) 22:24:35.28 ID:btC8Tydl0.net] >>716 >>715 (もう読んでるかもしれないけど念のため)
727 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/06(木) 22:58:55.19 ID:Ksmyoljx0.net] >>710 スレタイも読めないアホは黙っとけ
728 名前:デフォルトの名無しさん (ワッチョイ b7e3-rvkC) mailto:sage [2017/07/06(木) 23:10:54.32 ID:mkYh7+Rt0.net] >>709 ^d だと?
729 名前:デフォルトの名無しさん (ワッチョイ b7e3-rvkC) mailto:sage [2017/07/07(金) 00:50:35.73 ID:eIaxM4+K0.net] >>717 多分、 入力文字列の最後が '\n' の時は '\0' に置き換える。 入力文字列が空の時は、処理を終了する。 がいいと思う。
730 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/07(金) 04:21:12.07 ID:WdR7zyOW0.net] >>718 スレタイに沿って聞いている>>705 に答えられないゴミがドヤってんじゃねええよ
731 名前:デフォルトの名無しさん (アウアウエー Sadf-X9Wr) [2017/07/07(金) 05:29:44.02 ID:1OiH67XQa.net] >>708 環境依存ならgetchってのがあったな。 VS使ってんなら使えると思う。
732 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/07(金) 06:45:35.54 ID:URSZRmHsM.net] >>721 スレタイも話の流れも読めないアホは黙っとけ w
733 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/07(金) 08:07:53.36 ID:WdR7zyOW0.net] >>723 誰だよそれ 実在しない人物を罵倒することこそ このスレですることじゃねえだろクズ
734 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/07(金) 08:12:35.70 ID:URSZRmHsM.net] アンカーついてるのに誰だよとか さらにアホさが増してるやん w
735 名前:デフォルトの名無しさん (ブーイモ MMfb-61p1) mailto:sage [2017/07/07(金) 08:22:53.74 ID:o9CZFWTBM.net] 説明不足と読解不足の両方だおまえら もういいからどっちも黙れ
736 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/07(金) 09:38:36.86 ID:WdR7zyOW0.net] >>725 アンカーつけられた人物と おまえさんの説明が一致しない と言っているんだよ ニホンゴワカリマスカ?
737 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 19:49:06.92 ID:9n40FStT0.net] 質問です。 fast-uploader.com/file/7054979858432/ このプラグラムで関数 void InsertList(struct LIST **ptr ,char *newname,char *newpref,double newdistance); の部分のポインタのポインタ**ptrを普通のポインタ*ptrにするとコンパイラが通らないのは何故でしょうか? *ptrに直してコンパイラがエラーとして指摘する場所は newcell->nextptr=*ptr; /* いままでの先頭ポインタを次ポインタに変更 */ *ptr=newcell; /* 新しいデータ領域を先頭ポインタに変更 */ で、「「struct LIST」型の変数の値を「struct LIST *」型の変数に自動的に変換することはできない」とのことです。 自分の頭の中では**ptrを*ptrにしてもアドレスを渡すという役目はできそうに思うのですがよく解りません。 **ptrと*ptrで型が違うとは具体的にどういう意味で**ptrと*ptrでは何がどう違うんでしょうか?
738 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 19:54:32.46 ID:w6YiLhhJM.net] 単純に型が違うんどすえ int a, *b, **c; これ全部違うんどすえ a = 728; b = &a; c = &b; int d, *e, **f; f = c; e = *c; d = **c; どすえ
739 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 20:42:03.04 ID:9n40FStT0.net] >>729 今回のプログラムに当てはめたらどうなるんでしょうか? int a, *b, **c; a = 728; = ? b = &a; = root=NULL c = &b; = ? int d, *e, **f; f = c; = ? e = *c; = newcell d = **c; = ? それとも a = 728; = ? b = &a; = ? c = &b; = root=NULL int d, *e, **f; f = c; = ? e = *c; = newcell d = **c; = ? なのでしょうか? 根本的な回答を戴いたようで嬉しいのですが、なにぶん頭が悪くて理解が追いつきません・・・ *1つで型が変わる概念がいまいち理解できません
740 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 20:59:30.90 ID:w6YiLhhJM.net] ごめん、今回のプログラムとやらを一回も見てない ポインタなんてのはCやる上で基礎の基礎 かつ、ポインタは一生大事に使っていけるお友達なんで 一時間でも二時間でも集中して時間とって いろいろ調べるなり試すなりして一気に理解してほしい あと、変数のポインタを渡すっていうのは定番 void foo() { int x = 100; bar(&x); // ここで&をつけて… // ここでxが200になってる } void bar(int *p) { *p = 200; // こっちで*付きで左辺に置いて代入する } こうやって呼び出し元の変数の中身を触るのはCでは定番(?) 今回は元のがint xとしたけど、 これがint x, *y, **zでも全部やることは同じ &yしておいて*y = する &zしておいて*z = する
741 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 21:03:22.53 ID:9n40FStT0.net] もう1週間ぐらいこのプログラムとにらめっこしててそれなりに思いついたワードでググったりはしてるんですが 状況にあってると思えるものが見つからないんです
742 名前:デフォルトの名無しさん (アウアウエー Sadf-X9Wr) [2017/07/07(金) 21:35:03.37 ID:eVPhxI3Pa.net] 一週間って。。。 才能無いか最低限の文法も理解してない気がする。 一回腰を据えて入門サイトなり入門書読んだ方がいい。 猫でもわかるC言語とかサンプル多くて良いぞ。
743 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 21:36:13.31 ID:w6YiLhhJM.net] void InsertList(struct LIST **ptr); // ←このとき newcell->nextptr=*ptr; // struct LIST *にstruct LIST *を代入している *ptr=newcell; // struct LIST *にstruct LIST *を代入している void InsertList(struct LIST *ptr); // ←こうしちゃったとき newcell->nextptr=*ptr; // struct LIST *にstruct LISTを代入しようとしてエラー *ptr=newcell; // struct LIST *にstruct LISTを代入しようとしてエラー int a, *b, **c; // int, int *, int ** a = 728; // int b = &a; // int * c = &b; // int ** int d, *e, **f; // int, int *, int ** f = c; // int ** e = *c; // int * d = **c; // int 変数の宣言と、式の中で*つけたり&つけたりする挙動については 自分でいろいろいじってみて納得いくまで確かめてみてほしい
744 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 21:39:10.74 ID:w6YiLhhJM.net] 逆ぅ! 誤:*ptr=newcell; // struct LIST *にstruct LISTを代入しようとしてエラー 正:*ptr=newcell; // struct LISTにstruct LIST *を代入しようとしてエラー
745 名前:デフォルトの名無しさん (ワッチョイ d79a-0UkT) mailto:sage [2017/07/07(金) 21:44:11.61 ID:l2MEk1rK0.net] 久々にCを見るとウザいな
746 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 22:02:46.24 ID:9n40FStT0.net] 型を合わせるために**ptrにしなければいけないところまでは解ったんですが 頭が悪いものですみません **ptrだとstruct LIST *になって *ptrだとstruct LIST になるところがよく解りません・・・
747 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 22:11:27.39 ID:w6YiLhhJM.net] void foo(struct LIST **ptr) { struct LIST **a = ptr; // struct LIST **型の変数aを宣言して、struct LIST **型の値を代入 struct LIST *b = *ptr; // struct LIST *型の変数bを宣言して、struct LIST *型の値を代入 struct LIST c = **ptr; // struct LIST 型の変数cを宣言して、struct LIST 型の値を代入 } へんすーの宣言時にくっついてる*と、 へんすーが式の中にでてきてるときにくっついてる*は役割がべつだよ! 分けて考えたほうが多分理解しやすいよ!
748 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v) mailto:sage [2017/07/07(金) 22:12:23.98 ID:TNY1f3mCd.net] 変す〜
749 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/07(金) 22:30:21.67 ID:a0p8X5TA0.net] >>737 マジレスするとお前はCをあきらめたほうがいい。 C言語においてハマりポイントはポインタだと言われてはいるが、 実際は10秒で通過する奴と、永久にはまる奴という感じだ。スクリーニングに近い。 昔みたいにC言語しか選択肢がないのならともかく、現在は他の言語もある。 そこをすんなり理解出来ない奴がCにこだわってもどうせ付いていけない。 てか、あんまり真面目に話を聞いたことはないんだが、 ポインタが分からないって言う奴らは、こいつがはまっているケースじゃないよな? ちなみに俺が疑問なのは関数ポインタの表記方法で、 俺の感覚は以下ブログ主と全く同じ。 fa11enprince.hatenablog.com/entry/2015/11/15/135056 内容は要するに以下。 現行:void (*signal(int sig, void (*func)(int))) (int); 希望:(void (*)(int)) signal(int sig, void (*func)(int)); 何で現行の文法になってるのか分かる人いる? 昔、「入れ子だとマクロでも対応できる(キリッ」って聞いたんだけど、 以前考えたら上記「希望」でもマクロ対応出来る感じだったので、謎になってる。
750 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/07(金) 22:47:31.37 ID:a0p8X5TA0.net] 一応ポインタ周りについてググってみた。 > C言語のポインタが難解とされる理由 > https://teratail.com/questions/9058 以前から言われており、上記URL内でも散見されるが、 アセンブラをCよりも先にやった連中は誰一人としてポインタで躓かない。 だからポインタで引っかかる奴は ・ポインタの物理イメージがつかめないから だと俺は理解していて、そいつが引っかかっているデリファレンス周りではないはず。 ただ、共用体がない言語なら物理イメージを持たずにプログラミングできるから、 それで問題ないとも思う。だから他言語にしろって話にしてる。
751 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 22:51:15.64 ID:9n40FStT0.net] >>738 void foo(struct LIST *ptr)だとどうなるんですか?
752 名前:デフォルトの名無しさん (ワッチョイ d79a-0UkT) mailto:sage [2017/07/07(金) 22:52:13.92 ID:l2MEk1rK0.net] fooとかhogeとかウザい
753 名前:デフォルトの名無しさん (ワッチョイ b7db-TZYB) mailto:sage [2017/07/07(金) 22:54:49.07 ID:UOx3xuNS0.net] >>707 そりゃsizediff_tじゃないか?
754 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 22:58:53.18 ID:w6YiLhhJM.net] >>742 void foo(struct LIST *ptr) { struct LIST **a = &ptr; // struct LIST **型の変数aを宣言して、struct LIST **型の値を代入 struct LIST *b = ptr; // struct LIST *型の変数bを宣言して、struct LIST *型の値を代入 struct LIST c = *ptr; // struct LIST 型の変数cを宣言して、struct LIST 型の値を代入 } これでなんとなくわかった?
755 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 23:01:13.47 ID:9n40FStT0.net] >>745 いえあまり・・・すみません・・・
756 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 23:02:33.34 ID:9n40FStT0.net] >>745 あ、すみません>>738 の引用かと思いました ちょっとよく読んで考えて見ますすみません
757 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 23:04:45.62 ID:w6YiLhhJM.net] int aとint *bとint **cが別の型なのは分かる? わからないよね? b = cの代入がエラーになるのが分からないんだよね?
758 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 23:13:41.64 ID:9n40FStT0.net] >>748 型が違って代入できないのは指摘して頂いたのでわかるんですがどこで型が違ったのかがいまいちよく解らなくて まぁもちろん関数の**ptrを*ptrにしたところで変わったんだと思うんですがどうして*をつけると型が変わったといえるのかがいまいちよく解らないんです
759 名前:デフォルトの名無しさん (ワッチョイ 97ea-okny) [2017/07/07(金) 23:16:17.01 ID:q3zfwuJv0.net] 最近VBAを勉強したんだけど、動作が遅く感じるわ
760 名前:デフォルトの名無しさん (ワッチョイ d79a-0UkT) mailto:sage [2017/07/07(金) 23:23:00.08 ID:l2MEk1rK0.net] 最近初めてCまで行った
761 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/07(金) 23:24:40.63 ID:a0p8X5TA0.net] >>745 多分君なりのポリシーがあるのだと思うのだけど、 struct LIST **a = &ptr; // (A) よりも struct LIST** a = &ptr; // (B) の方が一般的には分かりやすいのではないかと。 そして宣言 int* i, j, k; でシンタックスエラーを出すまでが様式美。 と思ったけど、K&R確認したら全部(A)だったw
762 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 23:25:06.38 ID:w6YiLhhJM.net] うんうん…うん? int a; // int int *b; // intへのポインタ 型 int **c; // intへのポインタへのポインタ 型 ここまでわかる? ここまで変数宣言時に*くっつくと型が変わる例 (こっち側考えないで) = c; // intへのポインタへのポインタ 型 (こっち側考えないで) = *c; // intへのポインタ 型 (こっち側考えないで) = **c; // int 型 ここまでわかる? ここまで、式の途中で変数に*くっついてると型が変わる例 これだけのこと
763 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 23:26:09.89 ID:w6YiLhhJM.net] >>752 あー そいうとこでもひっかかってるのかな彼は
764 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/07(金) 23:34:50.66 ID:a0p8X5TA0.net] >>754 いや、マジでCの文法は直感的じゃないんだよ。(プログラミング時の論理イメージとずれる) 俺的には(既に書いたが)以下のほうが良かったと思うよ。 (void (*)(int)) signal(int sig, void (*func)(int)); // これで関数ポインタ宣言させろ int* p, q, r; // これは全部ポインタ宣言にさせろ とはいえ限られた記号を使って上手くそれなりに整合性良く纏めてあるとは思うが。
765 名前:デフォルトの名無しさん (ワッチョイ 9711-1B52) mailto:sage [2017/07/07(金) 23:37:20.26 ID:EA9An3gB0.net] 宣言で ポインタ型を示す時 * ポインタの指し先の実体を求める時 * 変数のポインタを求める時 & 上2つが文法的にやっかいかな? 同じ記号使ってるし
766 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 23:38:35.07 ID:9n40FStT0.net] >>753 多分その基本は理解できてると思います ただstruct LIST *newcellがどうして**ptrと同格に扱われてるのかよく解らないというか・・・ *ptrでアドレスのやり取りできるんじゃないのって思ってしまうんです でも実際は型が違う どうして?っという感じです。
767 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/07(金) 23:45:37.17 ID:w6YiLhhJM.net] >>757 ポインタのことをアドレスだと考えるのはやめたほうが良い ポインタは単なるアドレスなんかじゃないからね そこには必ず型ってもんがあるの「〜へのポインタ」 ってなるからこそ色々できるんだけどその話は今は省略 > struct LIST *newcellがどうして**ptrと同格に扱われてる 同格に扱うってどういうこと?
768 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/07(金) 23:49:58.38 ID:9n40FStT0.net] >>758 **ptrで対応しないといけないなら当然struct LIST *newcellも**型ということですよね? struct LIST *newcellが**型というのが理解できません
769 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/07(金) 23:53:32.79 ID:a0p8X5TA0.net] >>759 君が分かってないのは以下。 void foo0(struct LIST **ptr) {struct LIST *b = *ptr;} // >>738 void foo1(struct LIST *ptr) {struct LIST *b = ptr;} // >>745 void foo2(struct LIST ptr) {struct LIST *b = &ptr;} 関数内のptrは関数宣言時(仮引数)の型を受け継ぐ。 つかここで引っかかっているようではマジでお先真っ暗だぞ。
770 名前:デフォルトの名無しさん (ワッチョイ 9711-1B52) mailto:sage [2017/07/07(金) 23:59:10.17 ID:EA9An3gB0.net] みてないけど >>728 の第一引数は 引数の書き換え結果を呼び出し元に伝えたいケースなんじゃないの? int の値を受けて その値の1大きい値を返す 引数で受けて書き換え結果を戻り値で返すなら int func0(int arg) { return arg + 1; } 引数で受けて、引数の指し先を書き換えることで書き換え結果を呼び出し元に伝える void func1(int* arg) { *arg = (*arg)+1; } ※ なお Cには参照型というのがないので ※ void func2(int arg) { arg = arg+1; } としても呼び出し元には 1増えた値が伝わらない int a = 1; a = func0(a); printf("%d\n", a); // a = 2 となる func1(&a); printf("%d\n", a); // a = 3 となる func2(a); printf("%d\n", a); // a = 3 のまま
771 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/08(土) 00:09:59.34 ID:cmJEhNfHM.net] >>759 > struct LIST *newcellも**型ということですよね? 違います > struct LIST *newcellが**型というのが理解できません 違います struct LIST *newcell の型は struct LIST * です struct LIST **ptr の型は struct LIST ** です *ptr=newcell これは、左側の*に注目 何をしているかは、もうわかるよね? >>757 で分かってるって言ったよね自分で
772 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 00:21:10.89 ID:t7BT1SeM0.net] 誰も見てないのが笑える。俺もだがw 質問者は分かってないようだが、 > 「struct LIST」型の変数の値を「struct LIST *」型の変数に自動的に変換することはできない」 (>>728 ) ってのは要するに & か * を忘れたときの典型的なエラーで、 隣に人がいたら「サーセンwwwww」とか言って誤魔化して10秒で修正して再コンパイルする、 ただのtypo。 みんなこれを知ってるから誰もソースなんて見に行きません。 newcell?知らんがな。ソース?見るまでもなく & か * 忘れてるだけだろ、さっさと直せ、って感じ。 とはいえ、エアプがいないのはいいことだね。
773 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/08(土) 00:30:18.82 ID:P0Vqm6hU0.net] もしかしてvoid foo1(struct LIST *ptr) {struct LIST *b = ptr;}の場合に*ptrを使うとそれはアドレスを渡すのではなく 実数として渡してしまうから論理破綻しているということですか?
774 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/08(土) 00:40:47.53 ID:cmJEhNfHM.net] やっぱ>>75
775 名前:6 さんの言ってることが問題な気がする そういえば俺も最初はそこで混乱あったような気がする int a = 100; int *b = &a; // 1) intへのポインタ型のbに、intへのポインタを代入している *b = 200; // 2) bが指してたint型の領域に、200を代入 printf("%d %d", a, *b); ここなんだよなぁ 1)と2)が見た目似てるくせにやってることがテラ違うという なんか懐かしいわ [] [ここ壊れてます]
776 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 00:41:41.51 ID:t7BT1SeM0.net] >>761 × > ※ なお Cには参照型というのがないので ○ 参照が必要な場合は、ポインタを使って明示的に参照を渡す だね。そしてC++の「参照」とJava等の「参照型」の物理的意味が異なるから 余計に話がおかしくなり、辻褄を合わせるために 「参照の値渡し(キリッ」とか言い出すという。 とりあえず生Cで「参照」という言葉は使われてないでしょ。 それを持ち出すのは余計に混乱するだけ。 K&R確認してみたが、 「Fortranのようなcall by referenceとは違い」のところでしか出て来ない。 これのおかげかFortranは再帰できない糞言語だった。(と聞いている) そんな糞とは違う、まさに「ザクとは違うのだよ、ザクとは」の文脈で使われてる。 見た目だけ参照型が欲しければtypedefすればいいだけ。 (普通は余計に分かりにくくなるからしないが) それをここで持ち出す意味が分からんね。
777 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 00:46:30.43 ID:t7BT1SeM0.net] >>764 エスパーするとイエス。 「実数」ではなく「実体」な。
778 名前:デフォルトの名無しさん (ワッチョイ 9711-1B52) mailto:sage [2017/07/08(土) 00:47:46.49 ID:gQ2FFwnX0.net] >>766 ちょっと横道 call by reference な引数型で デリファランスするのに特別な記号を必要としない ってところに着目したかったのよー
779 名前:デフォルトの名無しさん (ワッチョイ 976f-qSys) mailto:sage [2017/07/08(土) 00:50:34.05 ID:YHFGbdic0.net] >>764 関数の引数で渡されるのは"同値のコピー"なのよ void func1(int b) {...} void func2(void) { int a = 100; func1(a); } func2からaを引数として関数func1に渡すと、func1では「aと同じ内容のコピーb」が用意される func1内でどれだけbを書き換えようが所詮コピーなのでfunc1を抜ければbは破棄されaにはなんら影響がない a自体を書き換えさせたいならaの内容ではなくaの場所を教える必要がある それを実現するのがポインタで上の例なら void func1(int *b) {...} void func2(void) { int a = 100; func1(&a); } となりキミの当初の質問にも同じことが言える *が何個重なろうが理由は同じ
780 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 01:02:46.45 ID:t7BT1SeM0.net] つか質問者はC言語以外には何ができるんだ? >>768 なんか噛み付いた感じになってすまんかった。 他言語ができれば「参照」の説明は意味はある。 この可能性を忘れていた。 ただまあ、Cはやっぱりその辺のところが古くて、 現実的に構造体の値渡しなんてほぼやらないし、(つか、必要性がない) 他言語みたいに「構造体は参照渡し」で固定してよかったと思うよ。 まだ黎明期でその辺のプログラミング作法自体がなかった時代だから無理ではあるが。
781 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/08(土) 01:26:26.98 ID:P0Vqm6hU0.net] >>770 C言語が最初の言語です >>760 >>762 >>767 >>769 ありがとうございます なんとなくですが解ってきたような気がします 頭悪くてすみません 教えていただいたことをよく噛み砕けるまで考えてみようと思います
782 名前:デフォルトの名無しさん (ワッチョイ 9711-1B52) mailto:sage [2017/07/08(土) 01:30:54.87 ID:gQ2FFwnX0.net] >>765 ポインタは一気に初期化せず、宣言と代入に分離すれば、理解の為の見通しはよくなるかもね int a=100; int *b; b = &a; *b = 200;
783 名前:デフォルトの名無しさん (ワッチョイ 9fd7-Srbl) mailto:sage [2017/07/08(土) 01:43:27.53 ID:zuW254gH0.net] >>728 俺もまだ見てないのだがw **ptrを*ptrにしてもアドレスを渡すという役目はできます。その通りです。 void *ptrでもいいです。コンパイルエラーになるのはその後なのです。 あくまで処理に必要なのは struct LIST ** なので、キャストするなどすればコンパイルは通ります。 void *ptrで受けて struct LIST **_ptr = ptr; と代入して、以降_ptrを使うという方法もあります。
784 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 01:57:31.44 ID:t7BT1SeM0.net] >>756 >>765 一応それは違うというほど違わなくて、だからって共通でいいのか?とも思うが、 そこを共通にしてしまっているから宗教論争になってる。 同様なものに「配列と配列へのポインタ」がある。 俺はやっぱり、 int* b = &a; // int*型(=intへのポインタ型)の変数 b に a のアドレスを代入 の方が好きだし、実際こう書く奴の方が多い。(と俺は思っている) ただ、Cの文法的には765の記述が正しく、*はintではなくbと結合する。 ただし解釈は異なり、それはあくまでデリファレンスであり「宣言のときだけは別」ではない。 int a = 100; int *b = &a; // 1回デリファレンスすると int になる b という変数に a のアドレスを代入 *b = 200; // bを1回デリファレンスしたもの(つまり100)に200を上書き K&Rには*は逆参照演算子としか書いておらず、説明文は > int *ip; > は記号表現として、*ipという表現がintであることを表す。 となっている。
785 名前:デフォルトの名無しさん (ワッチョイ 97b6-zXdO) mailto:sage [2017/07/08(土) 06:16:14.83 ID:utlt5XjQ0.net] >>774 自分もC言語覚えたての頃は、「int *」型という風に見ていた。 ポインタがあるんだからポインタを表す型がある方がわかりやすかった イントロダクションとしてはポインタ型があるとみなしていいと思う。 でも言語仕様はK&Rのとおりで、初心者になる頃には正しく 理解できるほうがいい
786 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 07:24:02.64 ID:t7BT1SeM0.net] >>775 確認してみたが、ほとんどのサイトは int* p; ではなく int *p; だった。 有名どころではロベールが前者だが、他はほぼ全部後者。 C#は前者に仕様変更されている。 > int* p1, p2, p3; // Ok > int *p1, *p2, *p3; // Invalid in C# > https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/unsafe-code-pointers/pointer-types 特にint*型という理解で苦労した覚えはないが、(int *p, *q, *r;のみ例外) 文法的にはどうしても上記が引っかかるので説明サイトはほぼ全部後者になったのかな? で、ヘルスバーグは糞だと判断して変更したと。
787 名前:デフォルトの名無しさん (ワッチョイ 7732-zXdO) mailto:sage [2017/07/08(土) 07:33:48.69 ID:BPlXEDNj0.net] 型に*を付けるのはC++の文化じゃないかな Cだと識別子に付けるのが一般的だと思う
788 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 07:46:29.64 ID:t7BT1SeM0.net] >>777 それは言えてるかも。ロベールはC++だし。linuxカーネルは int *p;だったし。 C++はテンプレートがあるから、Array<int*>とか書かざるを得ないからね。
789 名前:デフォルトの名無しさん (ワッチョイ d79a-0UkT) mailto:sage [2017/07/08(土) 08:10:56.15 ID:hvS2v9rj0.net] int*p; int * q; は少数派か
790 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/08(土) 09:38:58.20 ID:cmJEhNfHM.net] >>772 それそれ 俺もあとで思ったよ なぜ最初にその書き方を使って教えてあげられなかったのかと まずは分離ありきだよね
791 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 09:53:29.46 ID:t7BT1SeM0.net] >>772 >>780 ちなみにそれは何が分かりやすくなるんだ? というか俺にはそれでどう勘違いしている奴を正しく導けるのか分からない。 ただし以下サイトでもそう言っているから、一部の人間に効果があるのは確実だとは思うが。 > ポインタの文法を説明するときに大切なことは、変数の宣言時初期化構文を見せないことです。 > pg-kura.hatenablog.com/entry/20120611/1339376977
792 名前:デフォルトの名無しさん (スップ Sd3f-AoMt) mailto:sage [2017/07/08(土) 13:09:09.14 ID:/+Nzxl5ld.net] 右辺値、左辺値の違いの分からんやつに ポインタの正確な理解、運用は永遠に出来んよ。
793 名前:デフォルトの名無しさん (ワッチョイ b7e3-rvkC) mailto:sage [2017/07/08(土) 13:22:39.20 ID:8y6q1o6T0.net] ポインタの話は別としても、 変数を宣言時に初期化するのは良い方法だと思うが
794 名前:デフォルトの名無しさん (スプッッ Sd8b-AoMt) mailto:sage [2017/07/08(土) 13:48:34.76 ID:I4XLIasbd.net] int* a, b; が int *a, *b;と等価だと思ってるやつw C++の流儀はこの誤解を助長する
795 名前:デフォルトの名無しさん (ワッチョイ 9fea-rvkC) mailto:sage [2017/07/08(土) 14:16:33.13 ID:POxX89aN0.net] *がintにかかるか、aにかかるかだね intにかかる方がシステマティックではあるよね
796 名前: ◆QZaw55cn4c (ワッチョイ 176d-1B52) mailto:sage [2017/07/08(土) 15:27:31.00 ID:vtRSgpti0.net] >>785 宣言時と使用時で優先度が変わるのは好ましくない
797 名前:デフォルトの名無しさん (ワッチョイ 977f-KuRC) mailto:sage [2017/07/08(土) 15:49:17.90 ID:lUvEvZ3o0.net] 別物なんだから同じにする必要はないな。
798 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/08(土) 18:26:01.68 ID:znuCL+sZ0.net] >>697 は逃げたかw # 俺はしつこい
799 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/08(土) 18:47:08.89 ID:znuCL+sZ0.net] >>787 わざわざ同じでなくす必要はもっとない
800 名前: ◆QZaw55cn4c (ワッチョイ d79a-3tTE) mailto:sage [2017/07/08(土) 18:48:02.85 ID:/o9ObF5e0.net] >>787 そうやって文法を増やすのは好ましくない
801 名前:デフォルトの名無しさん (ワッチョイ 97c1-1B52) [2017/07/08(土) 19:20:19.10 ID:UbbmKSpA0.net] 昨晩はレスありがとうございました 戴いたレスを読み直しながらいろいろ考えていたら>>738 >>745>>760 の意味を理解できました void foo(struct LIST *ptr) のとき*ptrを使うのは型が違うという意味もやっと理解できました 代入するときの型が合ってないという事がちゃんと理解できてなかったと思います 丁寧に説明していただいていたのにピントのズレたこと言っててすみませんでした 重ねてありがとうございました
802 名前:デフォルトの名無しさん (ワッチョイ 9723-KuRC) mailto:sage [2017/07/08(土) 19:40:16.15 ID:t7BT1SeM0.net] >>782 右辺値左辺値ってC++が糞な部分にパッチ当てただけで、 Cやポインタには全く関係ないだろ。
803 名前:デフォルトの名無しさん (ワッチョイ 9f8f-gRQY) [2017/07/08(土) 19:47:16.06 ID:HDF4cM220.net] >>792 Cに全く関係ないってのは言いすぎだけど、ポインタには関係ないのはその通り。
804 名前:デフォルトの名無しさん (ワッチョイ 9f8f-gRQY) [2017/07/08(土) 19:50:13.79 ID:HDF4cM220.net] ん? ああ、でもコンストラクタシステムがない以上、気にするところではないのか。 失礼、Cには確かに関係ないね。
805 名前:デフォルトの名無しさん (ワイモマー MMbf-VsG/) mailto:sage [2017/07/08(土) 20:40:01.20 ID:cmJEhNfHM.net] >>791 | / ̄ ̄ ̄\ / .\ .| .∧ | .| ./川\ | \/┏┷┓\/ 。┃お┃。 ゙ # ゚┃め┃; 。 ; 。 ・┃で┃・ # 。 ;゙ #┃と┃# 。 ゙・# : ┃う┃。 ; 。 .;:# ゙。゚┃!┃゚ 。 # ; 。;; ゙.:。┗┯┛。 # : # ∧_∧ │ . ( ´・ω・)│ :/ つΦ
806 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/08(土) 21:14:44.01 ID:H/yQ/C3x0.net] >>788 だから何?って聞いてるんだけど w 逃げてるのは君の方だろ
807 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/08(土) 21:31:33.01 ID:znuCL+sZ0.net] >>796 おまえの定義では、どうなっていることを「組み込まれている」というんだ? たとえば、 float a = sizeof(int); これの動作過程の途中に生じる整数型は、コンパイラには組み込まれていないのか? だとするならば、コンパイラは標準変換の規定に「準拠」することができないぞ さあ答えろ
808 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/08(土) 22:10:39.54 ID:H/yQ/C3x0.net] >>797 > # cl.exeではsize_tがいきなり使えるが ってどや顔して恥の上塗してた奴もいたけど? w
809 名前:デフォルトの名無しさん (ワッチョイ b7db-TZYB) mailto:sage [2017/07/09(日) 05:03:16.31 ID:W7Itegl80.net] 組み込まれていない:stddef.hで定義されてるんだから組み込み型ではない 組み込まれてる:unsigned intかunsigned longかunsigned long longか知らんけど組み込まれてるだろ ってことかすぃら?
810 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 05:59:52.53 ID:DwPx7o2S0.net] >>798 ああ、そこにしか答えられないわけね 立派な答えだ 799がごく当たり前の答えを代わりに書いてくれているが それすら答えられないようなゴミはCスレに出しゃばってくんな
811 名前:デフォルトの名無しさん (ドコグロ MMbf-d65a) mailto:sage [2017/07/09(日) 06:59:17.53 ID:ouwdb2hLM.net] で結局 >>800 は何を言いたかったんだ? 意図不明なコードで規格ガーってどや顔してたら>>799 に一蹴された としか見えないけど w
812 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 07:40:42.30 ID:DwPx7o2S0.net] >>801 おまえさ、コードの意味が読めませんだなんて このスレにおいて死ぬより恥ずかしいことを わざわざ自己紹介しなくていいよ 799に助けて貰ってもその意味すらわかんねえんだろバーカ
813 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/09(日) 13:14:16.68 ID:Uu/MlKNRM.net] >>802 「意味」と「意図」の区別もつかないアホ w チョロすぎるわ
814 名前:デフォルトの名無しさん (アウアウカー Sa2b-jwws) mailto:sage [2017/07/09(日) 14:30:35.01 ID:1GYqbN7ba.net] アホだのバカだの子供みてーなケンカすんなw
815 名前:デフォルトの名無しさん (ワッチョイ 9f6e-4BC7) [2017/07/09(日) 15:09:59.91 ID:ZJXpL8k20.net] 見苦しい喧嘩して何になるんだ?
816 名前:デフォルトの名無しさん (ドコグロ MMdf-d65a) mailto:sage [2017/07/09(日) 16:46:00.20 ID:Uu/MlKNRM.net] >>804-805 恥を上塗りまくってる >>788 に言えば? w
817 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 18:27:56.89 ID:DwPx7o2S0.net] >>803 いーや、おまえは意味がわかってない だから、あんな簡単な問いにぐうの音も出なかった 誰が見ても明らかだよ
818 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/09(日) 18:49:12.76 ID:bCABOrL10.net] >>807 >>803
819 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 19:05:13.48 ID:DwPx7o2S0.net] >>808 >>807
820 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 19:06:47.55 ID:DwPx7o2S0.net] 俺はしつこい おまえの定義では、どうなっていることを「組み込まれている」というんだ? たとえば、 float a = sizeof(int); これの動作過程の途中に生じる整数型は、コンパイラには組み込まれていないのか? だとするならば、コンパイラは標準変換の規定に「準拠」することができないぞ
821 名前:デフォルトの名無しさん (スップ Sdbf-0UkT) mailto:sage [2017/07/09(日) 19:08:38.13 ID:6MYOcrZ9d.net] 他でやれ
822 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 19:09:15.82 ID:DwPx7o2S0.net] 動作の実装と識別子の導入の区別もつかないアホが どでかいブーメランほってやがるぜw
823 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/09(日) 19:22:24.50 ID:bCABOrL10.net] >>799 が正解 ⇒ >>695 が知ったかと言うのは誰の目にも明らかだしね
824 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 19:42:37.88 ID:DwPx7o2S0.net] >>813 いいだろう、少しだけ相手してやる どこでもいいから>>695 に突っ込めることを噛みついてみな 国会で審議妨害ばかりしているクズ野党みたいな戯れ言じゃなく 技術的に意味のある内容で来い
825 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/09(日) 19:52:27.11 ID:bCABOrL10.net] 日本語が理解できてないんだろうな... 出してきた「意図」もわからんものにどう突っ込めと w sizeof が size_t 型の値を返すのは当たり前で float とかワケわからんこと言われても困惑するだけ
826 名前:デフォルトの名無しさん (ワッチョイ 9711-1B52) mailto:sage [2017/07/09(日) 20:27:57.13 ID:aZRl9YVa0.net] 仮に c++ の typeid のようなものが実装されてたら何を返すんだろう? size_t に割あたってる整数の型であって size_t そのものは返さない気もするが
827 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/09(日) 21:16:46.06 ID:DwPx7o2S0.net] >>815 日本語が理解できてないのはおまえ >>695 におまえが意図不明という「コード」は含まれていない 空疎な言い訳で逃げ回るザマはたっぷり見せてもらったからもういいぜ こっちも腹筋がそろそろヤバい
828 名前:デフォルトの名無しさん (ワッチョイ ffa2-KuRC) mailto:sage [2017/07/10(月) 00:20:27.86 ID:LlABZZSK0.net] おいQZごみ回答はやめとけ
829 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/10(月) 05:01:56.54 ID:3theqA1Q0.net] >>817 お前の意図が不明かどうかを判断するのは俺 マジで意図の意味がわかってないって言うオチかよ w
830 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/10(月) 05:25:51.74 ID:JKtUlR/N0.net] >>819 技術的に意味のある話ができず 空疎な言い訳に終始しかできねえのを 人のせいにしてんじゃねえよゴミクズ
831 名前:デフォルトの名無しさん (フリッテル MM4f-/fb0) mailto:sage [2017/07/10(月) 06:04:11.75 ID:1stf4kaQM.net] アスペ同士の会話は訳がわからんな
832 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/10(月) 08:34:02.15 ID:JKtUlR/N0.net] >>821 おまえも同類だ
833 名前:デフォルトの名無しさん (ドコグロ MM8b-Ra9a) mailto:sage [2017/07/10(月) 09:14:14.93 ID:ssjcNeI9M.net] はぁ?お前だろ。 ってか誰だよ? オレは誰だよ?
834 名前:デフォルトの名無しさん (スップ Sd3f-0UkT) mailto:sage [2017/07/10(月) 09:23:56.47 ID:NWwU0Zhtd.net] ここはしょうがくせいのたまりば?
835 名前:デフォルトの名無しさん (ワッチョイ 174b-R6aQ) mailto:sage [2017/07/10(月) 09:32:25.86 ID:FFzIEFLy0.net] あー!授業中に2chしたらいーけないんだー!
836 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/10(月) 09:46:21.35 ID:JKtUlR/N0.net] >>823 技術的に意味のある話ができず 空疎な言い訳に終始しかできねえ ゴミクズのお仲間、それがおまえだ 誰であろうがその特徴に違いはない
837 名前:デフォルトの名無しさん (ワッチョイ 9f11-d65a) mailto:sage [2017/07/10(月) 10:48:23.17 ID:3theqA1Q0.net] 技術的にと言う割りには>>815 の後半とか>>816 にはレスしないんだな w >>695 を誤魔化すためにワケわからんこと書いてうやむやにしようとしてるのはみんなわかってるから
838 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/10(月) 11:38:17.15 ID:JKtUlR/N0.net] >>827 おまえが>>815 や>>816 を書いたとでも言うのか? 他人の言葉を借りていきがっても、しょせんその程度だおまえは
839 名前:デフォルトの名無しさん (ワッチョイ 9f6f-WUUN) mailto:sage [2017/07/10(月) 11:59:47.48 ID:uinqb5xX0.net] 底が見えてきたな
840 名前:デフォルトの名無しさん (ワッチョイ ff1c-2mCk) [2017/07/10(月) 12:06:39.12 ID:JKtUlR/N0.net] 国会にもよく似たゴミが来てるぞ snjpn.net/archives/24782
841 名前:デフォルトの名無しさん (ワッチョイ 5711-rvkC) mailto:sage [2017/07/11(火) 18:55:41.44 ID:dSS1j36W0.net] [][Tebla][] } 000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS 001-GYORLith"0\R"/"ESUBA"%$% HADO-"EM","L","O","NU"###END
842 名前:デフォルトの名無しさん (ワッチョイ 2a6c-S4qQ) [2017/07/13(木) 11:06:39.28 ID:BCHZTwvD0.net] Makefileで、 .PHONY: doc doc: doxygen みたいに毎回.PHONY書くのあほっぽいんだけど、1行にならん?
843 名前:デフォルトの名無しさん (ワッチョイ 4a69-1jjp) [2017/07/13(木) 12:01:26.06 ID:LenxTGcs0.net] C言語でインラインアセンブラが使える文法の違いってどこかに解説ありますか? asm{}文の表記のしかたが違う
844 名前:デフォルトの名無しさん (スッップ Sd70-YkGU) mailto:sage [2017/07/13(木) 13:21:33.92 ID:b1PvI/zld.net] コンパイラの説明書!
845 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/13(木) 16:20:17.23 ID:PWiSD9vP0.net] ISO/IEC9899:2011で、asmについて書かれているのは、全文中でたったのこれだけ J. 5.10 The asm keyword The asm keyword may be used to insert assembly language directly into the translator output (6.8). The most common implementation is via a statement of the form: asm ( character-string-literal ); asmはたぶんコンパイル結果にアセンブラを生中出しするために使われる たいていこうなっている asm(文字列リテラル); つまりこれ以上はGNUやM$に聞けってこと https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html https://msdn.microsoft.com/ja-jp/library/4ks26t93.aspx
846 名前:デフォルトの名無しさん (ワッチョイ 5c7a-KmKO) mailto:sage [2017/07/13(木) 17:03:33.50 ID:32wk5maY0.net] そもそもの仕様として、 構造体のメンバーの参照に '.' と '->' を 使い分ける必要性がわからないんだけど、なぜ? 間接参照だと意識しろっていう教育的な意味以外思い付かん
847 名前:デフォルトの名無しさん (ワッチョイ 386f-/Dy+) mailto:sage [2017/07/13(木) 17:24:51.23 ID:9amqftWh0.net] (*hoge).piyo hoge->piyo どっちでもいいけど後者の方が簡単というだけの話
848 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/13(木) 18:47:04.29 ID:PWiSD9vP0.net] そういうことじゃなく Javaの参照ドットみたいなことに なぜしなかったのか、だろ ポインタを参照だと言い張るだけでいいのにと
849 名前:デフォルトの名無しさん (JP 0H99-QjT/) mailto:sage [2017/07/13(木) 20:54:14.63 ID:VVeozCkKH.net] 構造体は全部参照だということにしたいの? それすると、宣言するときに領域確保して、 いらなくなったらガベコレするっていう機構を組み込んどく必要があって、 Cのシンプルさにまったく合わなくなる。
850 名前:デフォルトの名無しさん (ワッチョイ 6e9a-YkGU) mailto:sage [2017/07/13(木) 20:55:07.17 ID:lX8cJUTX0.net] 違う意味だから違う記号
851 名前:デフォルトの名無しさん (ワッチョイ be02-7wp+) mailto:sage [2017/07/13(木) 21:00:00.33 ID:5QMVP3z90.net] 高橋麻奈も おばさんになったな。
852 名前:デフォルトの名無しさん (ワッチョイ 7e32-vfgv) mailto:sage [2017/07/13(木) 21:29:51.07 ID:e9IZxggq0.net] >>832 毎回の意味がわからんな。
853 名前:デフォルトの名無しさん (ワッチョイ f16a-KmKO) mailto:sage [2017/07/13(木) 22:00:17.18 ID:EExJF9140.net] >>838 >>839 参照云々はどーでもいいんだよ 左辺がポインタなら間接参照のコード吐いて 実体ならば直接参照のコード吐けばいいってだけのこと すでに2つの演算子ありきの話になっていると思うぞ
854 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/13(木) 22:09:19.10 ID:PWiSD9vP0.net] >>843 ドヤ顔で話の前提になってることをデバッグ出力してんじゃねえ バグってる可能性があるのはおまえだけだ
855 名前:デフォルトの名無しさん (ワッチョイ f0b6-MRQN) mailto:sage [2017/07/13(木) 22:11:04.90 ID:WI/JuPuE0.net] ポインタなら->の方が分かりやすいでしょ もしかして矢印って分からない?
856 名前:デフォルトの名無しさん (ワッチョイ 3f11-1CH6) mailto:sage [2017/07/13(木) 22:11:58.75 ID:LTIPW4bg0.net] -> で書いているのを . でも許したとして、コンパイラに不都合が出てくるんだろうか? ((struct foo*)0)->member ⇒ ((struct foo*)0).member キャストの後の括弧がなくても通すと リテラルと繋がるから面倒をおこしそうだけども (struct foo*)0->member ⇒ (struct foo*)0.member そういうわけでもなさそうだし
857 名前:デフォルトの名無しさん (ワッチョイ 6e9a-YkGU) mailto:sage [2017/07/13(木) 22:13:53.71 ID:lX8cJUTX0.net] グローバル変数から関数の引数にしたりするときに、置換が面倒だと思うことはある C++だと山椒があるんでそういうことも少ない
858 名前:デフォルトの名無しさん (ワッチョイ be02-7wp+) mailto:sage [2017/07/13(木) 22:40:18.99 ID:5QMVP3z90.net] 参照はピリリと辛いのさ
859 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/13(木) 22:48:52.06 ID:ZRvPs5t50.net] >>846 思想としてそこまで意識して書き、ソース上にもその痕跡を残せってことでしょ。 他言語で言うプロパティの良し悪しと同じ議論だよ。 好き嫌いはあれども、正しい or 間違いの結論はでない。 コンパイラはエラーを検出できてるんだから、 その場合は . を -> と読み替えろ、というルーチンを入れれば君が欲しいものは簡単に作れる。 でも誰も用意しなかった。それが事実だね。
860 名前:デフォルトの名無しさん (ワッチョイ f16a-KmKO) mailto:sage [2017/07/13(木) 23:28:37.17 ID:EExJF9140.net] >>844 勝手に前提にするな〜 836は俺だ >>846 そうそう、仕様として何か不都合があるのかという話がしたかったんだ >>849 だから836で「教育的な意味」と書いている 結局言語仕様としてこうしないと問題がある訳じゃなくて 「教育的な意味」だけのことでいいんだな >>847 きっかけはまさにそれ 書き換えめんどくせーから始まって、 コンパイラが困るのかと 色々なパターンを考えてみたんだけど 困るパターンを見つけられなかったんで こんな話を始めたんだよ
861 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/14(金) 00:02:31.73 ID:jsZNOhnp0.net] >>850 > 「教育的な意味」だけのことでいいんだな >>839 に答えは既に書いてあるだろ。アホなのか? 具体的にはスタック上に構造体を取って高速化する手法が使えなくなるんだよ。 (大抵の他言語では記述方法自体が用意されていない。 VC++/CLIではvalue型が用意されていて効果があることになっている。 が、ろくな説明が見当たらないorz) 古いが以下。 www.eonet.ne.jp/~maeda/cpp/value.htm MS公式は以下。全く説明する気が無いw https://msdn.microsoft.com/ja-jp/library/ke3a209d.aspx というか、そこらへんが面倒だというのならJavaやC#使えって話でしかなく、 今の時代にC使うのならそこまで含めてチューニングする気で書け、でしかない。
862 名前:デフォルトの名無しさん (ブーイモ MMfd-QjT/) mailto:sage [2017/07/14(金) 00:16:04.99 ID:1+0wIQjnM.net] 839だけど >>851 は周回遅れ。 構造体へのポインタでも、構造体でも、. を使う文法にできるんじゃねっていう主張。 今のところ俺もそれへの具体的な反論を用意できていない。 「教育的」っていうのは違うと思うがな。
863 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/14(金) 00:35:26.21 ID:jsZNOhnp0.net] >>852 いやみりゃ分かるが 851=849で、俺もそれは否定しない。 ただ、確かに851は間違いだったわ。 確保時の文法が異なっていて、それで十分だから、その後は区別する必要はないね。 見た目、直接か間接か分かるようにしろってことだろ。
864 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/14(金) 05:37:38.18 ID:JCM3Qqhn0.net] ポインタなら(*foo).member と書くべきのところ->で書けるようにしたってことだけじゃないの? 糖衣構文的なオプションだろう
865 名前:つうか、どちらもドット演算子に統一した場合、 ポインタなのにデリファレンスしないで値にアクセスできる仕様はCの文法としておかしくね? [] [ここ壊れてます]
866 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/14(金) 05:52:17.16 ID:JCM3Qqhn0.net] 逆にドット演算子の意味を考えてみると、これ変数からのオフセットだろ
867 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/14(金) 06:19:15.44 ID:JCM3Qqhn0.net] デリファレンスしてもしなくても意味が同じという仕様にした場合、 構造体のポインタのポインタだともっとおかしなことになる やっぱりダメなんだよw
868 名前:デフォルトの名無しさん (ブーイモ MMed-QjT/) mailto:sage [2017/07/14(金) 06:56:35.87 ID:ES2lu6HJM.net] その反論じゃダメージゼロだ
869 名前:デフォルトの名無しさん (ドコグロ MM46-OTuW) mailto:sage [2017/07/14(金) 07:00:49.03 ID:8xomc53MM.net] >>843 struct s { int *a; }; void f(struct s *sp){ int b = 1; sp.a = &b; /* 今の文法なら sp->a = &b; */ x = sp.a; って書かれたら x には b へのポインタが入るの? それとも 1 が入るの? まさか右辺の型に依存して変わるとか?
870 名前:デフォルトの名無しさん (ワッチョイ c3f4-1CH6) mailto:sage [2017/07/14(金) 07:45:04.78 ID:OkthEzhE0.net] 最初Cのソース見たとき -> って記述がなんのジョークかと思ったわ。
871 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/14(金) 07:47:03.66 ID:JCM3Qqhn0.net] >>857 構造体Fooのポインタをメンバーに持つ構造体Fooのポインタで考えてみ ドットでアクセスするのはどっちのメンバー?
872 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/14(金) 07:52:21.63 ID:JCM3Qqhn0.net] いや問題はそこじゃないな
873 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/14(金) 08:05:49.17 ID:ZvHE7cBu0.net] >>854 が最後にいいこと言った >>856 の指摘が読めてない>>857 はIQで30くらい差があるんだろうな
874 名前:デフォルトの名無しさん (ワッチョイ 386f-/Dy+) mailto:sage [2017/07/14(金) 08:06:19.82 ID:OlhrA2fz0.net] (*pa).m と a->m (*pa+i) と a[i] お好きな方をどうぞ
875 名前:デフォルトの名無しさん (ワッチョイ df6f-qBah) mailto:sage [2017/07/14(金) 09:01:40.73 ID:i0uGqEt60.net] >>854 関数へのポインタは(*func)()とデリファレンスしなければいけないのに func()と書けるようにしたのでおかしくはない
876 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/14(金) 10:09:02.17 ID:ZvHE7cBu0.net] >>863 ミスってるぞ >>864 sizeof func != sizeof *func
877 名前:デフォルトの名無しさん (ワッチョイ ce88-JuPl) mailto:sage [2017/07/14(金) 10:36:06.28 ID:7SJq6nEP0.net] 字下げスタイルについて質問です 現在職業訓練校で習っているのですがそこの先生が 「プロはみんなこっち(K&R)だから。最近の教科書はこういうの(オールマン)増えてるけど、初心者向けの本書いてる人はそもそもプログラマじゃないから……」と。 自分がオールマン好きなのと、本を書いてくれる人たちをばかにするような言い方でちょっとむっとしたのですが、実際にK&Rばかりなんでしょうか
878 名前:デフォルトの名無しさん (JP 0H99-QjT/) mailto:sage [2017/07/14(金) 10:58:17.61 ID:XOCK9tWfH.net] >>866 自分一人で書くならプロだろうが何だろうが自分の好みを貫けばいい。 チームならそのチームのスタイルに合わせるのがプロ。 多数派は多分K&R。俺の好みもそう。
879 名前:デフォルトの名無しさん (JP 0H99-QjT/) mailto:sage [2017/07/14(金) 11:03:48.20 ID:XOCK9tWfH.net] >>862 IQ180のお前さんならコード例一瞬で出せそうだからよろしく。
880 名前:デフォルトの名無しさん (ワッチョイ df6f-qBah) mailto:sage [2017/07/14(金) 12:28:17.80 ID:i0uGqEt60.net] >>865 コンパイラが忖度してデリファレンスしてくれるって事じゃん
881 名前:デフォルトの名無しさん (ドコグロ MM36-Aifm) mailto:sage [2017/07/14(金) 13:06:11.17 ID:XJoggiB0M.net] >>866 今は他言語含めてK&Rが主流。昔の初心者本にオールマンスタイルで書かれてるのがあって 自分も最初は括弧の対応が分かりやすいからそれを使ってたけど 今は使わなくなった。括弧の対応なんて見れば分かるので重要じゃなくなる
882 名前:デフォルトの名無しさん (ワッチョイ d4db-B6bl) mailto:sage [2017/07/14(金) 13:16:54.77 ID:q7yAZvho0.net] sizeof 関数 って何ぞ?
883 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/14(金) 14:28:28.54 ID:ZvHE7cBu0.net] >>869 void (**f)(); f(); //error
884 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/14(金) 15:00:47.41 ID:JCM3Qqhn0.net] >>864 C FAQ 4.12 www.kouno.jp/home/c_faq/c4.html#12 配列名と関数名が特殊なのは、ポインタに成り下がるからなんだそうだ 構造体はどうだろうか?
885 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/14(金) 15:04:40.25 ID:ZvHE7cBu0.net] >>866 その「先生」もプログラマじゃなさそうに聞こえる どこのチームに入っても「こいつのクセうぜえ」と思われたらあかん K&Rだのオールマンだのと言うが純粋なK&Rや純粋なオールマンはむしろ少数派で たいていなにがしか方言があり、それを無視して原理主義に走ると 標準語を使っているはずの自分のほうが訛っていることにされてしまう 保護色ができないやつがプログラマの世間を知っているのか疑わしい もしくは、元プログラマでも引退してからずいぶん長いとかな プログラマ以外の世間でも「前の会社では」が口癖の新入りが干されるのと同じで 狭い世界の狭い正義にとらわれたスッパマンに居場所はない
886 名前:デフォルトの名無しさん (ワッチョイ b00d-1CH6) mailto:sage [2017/07/14(金) 15:11:15.53 ID:UhIUjxkr0.net] そこのコーディング規約に従うまで ただ、古典だけあってK&Rスタイルに近くなると話が早くなる
887 名前:デフォルトの名無しさん (ワッチョイ d091-z+eH) mailto:sage [2017/07/14(金) 15:54:44.39 ID:TDDe5YT10.net] c#はオールマンだし、どっちでもいいな
888 名前:デフォルトの名無しさん (ワッチョイ 466d-RG79) mailto:sage [2017/07/14(金) 18:24:36.67 ID:TDGI45F00.net] え?C#はオールマンなの?
889 名前:デフォルトの名無しさん (ワッチョイ c832-MRQN) mailto:sage [2017/07/14(金) 19:07:42.77 ID:pMddghpW0.net] コーディングスタイルなんて、GNUスタイルとかいう汚物じゃなければ何でもいいわ
890 名前:デフォルトの名無しさん (ワッチョイ 466d-xCJC) mailto:sage [2017/07/14(金) 19:09:37.89 ID:TDGI45F00.net] あなたの色に染まります!
891 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/14(金) 19:46:42.57 ID:g8QLqbc9M.net] >>877 そうらしい C# マイクロソフトはC# のコーディング規則を発表しており、これは、BSD/オールマンのスタイルに基づいている。 https://ja.m.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B%E3%81%92%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB
892 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/14(金) 21:40:14.77 ID:ZvHE7cBu0.net] 汚物は消毒だ〜!!
893 名前:デフォルトの名無しさん (エーイモ SE9e-RQIi) [2017/07/15(土) 15:35:51.02 ID:mwrVMnVyE.net] clangにはソースコードを解析してコードを補完する機能がありますけど gccにはこういう機能はないのでしょうか?
894 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/15(土) 16:17:52.28 ID:4RmHy8z30.net] >>858 > x には b へのポインタが入るの? > それとも 1 が入るの? その仕様にした場合は、 x の型によって決まる。 多分、結局のところは、float->doubleのような暗黙のキャスト、 structPtr* -> *structPtr を許すかどうかだろう。 許しても大した問題はないように思えるが。 ポインタを使える最近の言語はGoとRustか? 詳しい奴がいれば聞いてみればいいのではないかな。 C言語で問題だった点は当然改修されているだろうし。
895 名前:デフォルトの名無しさん (ドコグロ MM2e-OTuW) mailto:sage [2017/07/15(土) 16:57:34.95 ID:hu77KrcYM.net] >>883 > その仕様にした場合は、 x の型によって決まる struct s { size_t *a; size_t *b; }; void f(struct s *sp){ size_t c[] = {1, 2}; sp.a = &c[0]; sp.b = &c[1]; x = sp.b - sp.a; ってされたらどうするおつもり? デリファレンスしてもしなくても結果は size_t だよ
896 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/15(土) 17:11:06.39 ID:4RmHy8z30.net] >>884 だからxの宣言によって決まるだろ。 Cにはvarはないんだよアホ。 お前根本的に型を分かってないだろ。
897 名前:デフォルトの名無しさん (ワッチョイ f146-I8+U) [2017/07/15(土) 17:16:20.81 ID:pcaRmStc0.net] >>881 聞いたことのあるセリフだなあ? 何だっけ? 北斗の拳?
898 名前:デフォルトの名無しさん (ワッチョイ f2ea-S4qQ) mailto:sage [2017/07/15(土) 17:16:23.73 ID:G5lsIkPM0.net] これだからなスクリプタは スクリプタがプログラマ気取るなよと トホホ
899 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/15(土) 17:27:16.03 ID:jhhap/jh0.net] >>885 アホなの? size_t x; って宣言されててもどっちの解釈もできるだろ って話だぞ
900 名前:デフォルトの名無しさん (ワッチョイ ce7f-z+eH) mailto:sage [2017/07/15(土) 17:42:18.56 ID:jg2H7hGL0.net] 大元の話で . 演算をポインタに対して適用したら ->とみなすという仕様なら矛盾はないと思うが、 >>843 で「左辺が」とか書いたんで話がおかしくなっている気がする。
901 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/15(土) 17:57:08.70 ID:4RmHy8z30.net] >>889 違うね。 >>888 は「右辺を評価する際、 . を . とみなすか -> とみなすか区別できない。なぜならば結果が同じだからだキリッ」 という論理らしいが、そもそもそんな仕様の言語なんて無い。スクリプト言語ですらも。 そもそも着想の仕方がおかしいだろ。エアプだからだよ。 エアプはマジで死ね。
902 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/15(土) 18:03:19.98 ID:Boc3n4O+0.net] ドットに統一した場合、コードレビューでNULLチェックを見逃す可能性がある こっちの問題の方が大きいかもしれんな
903 名前:デフォルトの名無しさん (ワッチョイ ce88-JuPl) mailto:sage [2017/07/15(土) 18:56:38.12 ID:Ok1a2C+90.net] 諸先輩方ご意見ありがとうございました とりあえずその場所場所でのコーディングスタイルに合わせることが大事なのはわかりました
904 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/15(土) 19:20:07.01 ID:jhhap/jh0.net] >>890 > そもそもそんな仕様の言語なんて無い。 そりゃアホの子の>>843 がない知恵絞って考えた言語仕様だし 今更何を言ってるんだよって話だが w
905 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/15(土) 20:28:46.13 ID:4RmHy8z30.net] >>891 -> を廃止して . に統一するのならその手の型チェックは緩くなる。 これは結局のところ、他言語でもなされている議論と同じで、 「静的チェックのための記述をどこまで許容するか」でしかない。 俺はCなら厳しい方が似合っていると思うが。 それはさておき、具体的にそのケースならnull許容型、って奴だろう。 他言語でも死ぬほど議論されているからググれ。
906 名前:デフォルトの名無しさん (ワッチョイ d4db-B6bl) mailto:sage [2017/07/15(土) 22:24:26.68 ID:Z+b63Gri0.net] >>886 画像検索汁
907 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/16(日) 00:35:41.14 ID:JuGvxIE40.net] >>894 C言語とは水準が違いすぎる話なのでナンセンスというのが結論だろう NULL許容で書けたところで、実行時にはNULLチェックするわけだから
908 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/16(日) 01:49:05.19 ID:AkX0kyqa0.net] >>896 > NULL許容で書けたところで、実行時にはNULLチェックするわけだから いや、そうじゃない。 というかそっちの議論も多いようだから、誤解するのも分かるんだが。 以下を読むのがいいだろう。 > null許容参照型 > www.buildinsider.net/column/iwanaga-nobuyuki/012 Cに対して導入するとしたら以下か。 1. 「null非許容のポインタ」を文法的に用意する。 2. 「null非許容のポインタ」にはNULLは代入できない。(SyntaxError) 3. 「null非許容のポインタ」に「従来のポインタ」の値を代入するには明示的なキャストが必要。 これでヌルポを静的に検出できるようになる。 「null非許容のポインタ」に関しては実行時のNULLチェックは必要ない。 問題は3で、C++ならdynamic_castのみとして例外を投げればいいのだが、 Cの場合これは無理なので、 ・リンター等でキャスト直前にNULLチェックしているかを検出する ・明示的キャストをマクロ等でNULLチェックのインライン関数等に置き換える 等の対策が必要にはなるが、 それでもNULLに対してクリーン/ダーティな区画を文法的に分離できるようになるので、 今よりはだいぶマシにはなる。 とはいえこれはbetterCとしてC++を使うのなら現行のC++でも似たようなことは十分できる。 だからわざわざ新文法が必要か?というのと、他と同様に、 静的チェック「だけ」のための新文法を導入する価値があるのか? という話にはなる。 そして . と -> の話に戻すなら、 「『null非許容型の』struct* から *structへの暗黙的キャストを認める」 という仕様なら、そちらの危惧している部分については回避できることになる。
909 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/16(日) 07:21:30.62 ID:xeCnao79M.net] >>889 だから . 演算子を適用した結果がポインタならどうするんだ? って指摘されてるだろ ID:4RmHy8z30 はレスできなくなって > エアプはマジで死ね。 とか恥ずかしい捨て台詞で逃げてるけど w
910 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/16(日) 07:28:16.81 ID:xeCnao79M.net] >>897 > 問題は3で、C++ならdynamic_castのみとして例外を投げればいいのだが、 > Cの場合これは無理なので、 > ・リンター等でキャスト直前にNULLチェックしているかを検出する > ・明示的キャストをマクロ等でNULLチェックのインライン関数等に置き換える > 等の対策が必要にはなるが、 そんなアホな対策は要らんわ キャストまでしてNULL非許容の変数にNULL入れる奴はわかってやってるんだからそのまま入れてくれればいい それに起因するエラーはプログラマの責任 C言語ってそう言う言語だろ
911 名前:デフォルトの名無しさん (ワッチョイ ce7f-z+eH) mailto:sage [2017/07/16(日) 07:41:24.58 ID:H6W6/XNn0.net] >>898 >だから . 演算子を適用した結果がポインタならどうするんだ? . 演算の対象がポインタかそうでないかで分かれるだけで、演算の結果は それがポインタならポインタとして扱えばいいだけだろ。何か問題あるのか?
912 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/16(日) 08:14:36.33 ID:xeCnao79M.net] >>900 なら>>858 のケースで値が欲しいときはどうするんだい? まあ新しい演算子を追加するのか?
913 名前:デフォルトの名無しさん (ワッチョイ c832-MRQN) mailto:sage [2017/07/16(日) 08:28:51.97 ID:MBQ46mKu0.net] *sp.aで取れるじゃん
914 名前:デフォルトの名無しさん (ワッチョイ ce7f-z+eH) mailto:sage [2017/07/16(日) 08:32:10.19 ID:H6W6/XNn0.net] >>858 で x に入るのはbへのポインタとしか解釈しようがないと思うが、値とはどれのことを言っている? bの値の1が欲しいなら普通に x = *sp.a; でいいだろ。
915 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/16(日) 09:37:42.33 ID:xeCnao79M.net] >>902-903 要するに構造体へのポインタに対する . 演算子は今の -> 演算子と見なせってことね >>883 みたいな奴がいるから念のために確認しただけ 仕様として矛盾はないと思うけど struct s sl; struct s *sp; x = *sl.a; x = *sp.a; と統一的に書けるから便利と思うか x = *sl.a; x = *sp->a; とたいして変わらんと思うかは人それぞれだと思う
916 名前:デフォルトの名無しさん (ワッチョイ ce7f-z+eH) mailto:sage [2017/07/16(日) 09:51:29.40 ID:H6W6/XNn0.net] 要するにも何も、>>889 でそう書いているんだが。 で、>>898 が「念のために確認しただけ」なわけ?
917 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/16(日) 09:59:26.34 ID:JuGvxIE40.net] 要するに、(*p).m を p.m と書けるということ つまりデリファレンスの階層を一個省略しようってことで、 格段便利ってわけでもないし、かえってややこしいかもなw これ、ポインタが何段になっても p.m って書いて整合性取れるかい?
918 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/16(日) 10:06:14.91 ID:AkX0kyqa0.net] >>902-903 だからエアプなんだって。話の通じなさ具合がおかしいだろ。 >>899 もそうだ。 > キャストまでしてNULL非許容の変数にNULL入れる奴はわかってやってるんだからそのまま入れてくれればいい Cの場合はmallocの失敗がNULLになるんだから、これとかありえないだろ。 Cはnullありき、キャストありきで世界が構築されているから、 ヌルポ対策を静的にやりたいのならキャストも含めないと使い物にならない。 しかしエアプだからこれが分からない。マジでウザいから死ね。 > C言語ってそう言う言語だろ これも違う。 C言語は静的な対策を拒否してない。動的な対策は全面拒否だが。 つっても通じないとは思うが。 >>904 > struct s sl; > x = *sl.a; エアプマジ死ねよ というか、エアプがここに来る意味が俺には分からないのだが。 こいつらどの種のキチガイなの?
919 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/16(日) 10:11:57.19 ID:xeCnao79M.net] >>905 だからアホがいるから蒸し返されないように念のための確認してるんだよ 匿名掲示板だから>>890 みたいな奴すらいるんだぞ
920 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/16(日) 10:12:48.56 ID:xeCnao79M.net] って書いてるそばから現れたわ w
921 名前:デフォルトの名無しさん (ドコグロ MM40-OTuW) mailto:sage [2017/07/16(日) 10:14:08.60 ID:xeCnao79M.net] >>906 > これ、ポインタが何段になっても p.m って書いて整合性取れるかい? それは大丈夫だと思う
922 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/16(日) 10:21:16.17 ID:JuGvxIE40.net] >>910 俺はまだそこがちょっとひっかかるんだよな デリファレンスが一個ずれるだけなら意味ないと思うしね 時間ができたら検証してみるよ
923 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/16(日) 10:33:31.23 ID:AkX0kyqa0.net] >>906 > これ、ポインタが何段になっても p.m って書いて整合性取れるかい? 実体になるまでデリファレンスしろ、というだけだから、出来なくはないと思うが。 > 格段便利ってわけでもないし、かえってややこしいかもなw まあCがほぼ完成しているからな。導入する価値があるか微妙というのは同意。 > Cが見事にこなしていることは、全く"出来るだけシンプルにせよ、 > しかし、それ以上シンプルにするな"をしていることだ。 > そして、そのことがCを素晴らしいものにしている。言語はパワフルでありながら、ほぼ最小である。 > by Linus Torvalds > https://srad.jp/~taro-nishino/journal/509450/ 俺が思うに、Cに必要なのは階層(≒関数内関数)だよ。一部拡張されているようではあるが。 最近別言語だがCスタイルの記述(グローバル+関数、非オブジェクト指向)を読んだことがあって、 22K行のコードだが初見で簡単に目的のコードを探し当てられて、軽く衝撃だった。 Cが読みにくいのは100-500行のファイルで細切れになっているからであって、 あれ、設計者が分かりやすい順にcatしてくれていれば衝撃的に読みやすいことに気づいた。
924 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/16(日) 10:47:18.34 ID:AkX0kyqa0.net] あと、前方宣言必須というのも糞だ。 というか、今だにあれを放置している理由がよく分からない。 あれが無ければトップダウンで記述できるのでさらさら読める。 あれのおかげで下から構築しないといけないので、(include等つかって擬似的に回避できるが) 詳細まで確認する必要が無いときにも読まなくてもいい関数を読まされる事になる。 元々「世界の全てを把握して、絶対神として振舞え」という言語ではあるから、 「読みたくも無い関数を読まされたくねー」オブジェクト指向感性とは合わないが、 今更全てを把握できるほど世界は小さくないし、その必要が無いことも多い。 色々手抜きできる言語があることを知ってしまってからは、もっと手抜きさせてくれよーとは思う。
925 名前: ◆QZaw55cn4c (ワッチョイ 466d-RG79) mailto:sage [2017/07/16(日) 12:56:07.96 ID:G64lD0g30.net] >>913 前方参照は確かにどうかと思うが、前方参照の制限が解消されたからといって読みやすさが改善するとは思えないね 現状でも底から読んでいけばいいだけなのではないか? 読みやすさは…識別子を日本語で書くのがよさそうだが
926 名前:デフォルトの名無しさん (ワッチョイ d4db-B6bl) mailto:sage [2017/07/16(日) 18:30:50.90 ID:dVrh8pbL0.net] typedet struct { void ( *reset_func )( void ); unsigned long initial_stack; void ( *divide_by_zero )( void ); ・・・ } intvec_t; #define INTVEC ( *( intvec_t* )0 )
927 名前:デフォルトの名無しさん (ワッチョイ f146-I8+U) [2017/07/16(日) 21:14:38.36 ID:TI5o59vg0.net] > 要するに、(*p).m を p.m と書けるということ これ、できるできない以前に、初心者にきついな。 ルールを覚えるのは楽だけれど、例外事項が増えてくると、結局暗記になっちゃうからなあ。
928 名前:デフォルトの名無しさん (ワッチョイ 7d33-RIgB) [2017/07/16(日) 21:46:19.69 ID:aJG+vjk10.net] ts
929 名前:デフォルトの名無しさん (ワッチョイ f2ea-S4qQ) mailto:sage [2017/07/16(日) 23:15:41.79 ID:kT8dsikx0.net] >>913 プロトタイプ宣言というのがあってだね、それを宣言すればトップダウンで書ける。
930 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/17(月) 03:39:18.28 ID:woO8V6Ze0.net] >>918 だよな トップダウンなだけでなく 関数の一覧ができているという点でも >>913 が書いていそうな糞コードのDBL_MAX倍マシ
931 名前:デフォルトの名無しさん (ワッチョイ df23-S4qQ) mailto:sage [2017/07/17(月) 05:22:39.76 ID:6JtF0HSC0.net] >>918 >>913 はそれを知らないで書いてたのか?とするとかなりの初心者ということになるが。
932 名前:デフォルトの名無しさん (ワッチョイ df23-S4qQ) mailto:sage [2017/07/17(月) 05:32:30.17 ID:6JtF0HSC0.net] まあしかし俺は同じファイル内にあるにも関わらずプロトタイプ宣言入れないと わかってくれないのが嫌で使われる個所よりも上に書いちゃうけどな。 同じファイル内なんだからわかって欲しいものではある。 そういや PASCAL なんかも前方参照しかなかったような気がするな。 あの当時の言語はこういうの当たり前だったのかな。 PASCALなんかだとわざわざそういう思想で作られたって感じもするが。 Cだと手抜いただけのように見える。w
933 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/17(月) 06:51:56.93 ID:woO8V6Ze0.net] うん、Cのバヤイは確信的な手抜きだな
934 名前:デフォルトの名無しさん (ワッチョイ 706f-qBah) mailto:sage [2017/07/17(月) 07:49:13.30 ID:Dn7+fEGp0.net] ほー PASCALが前方参照しかないとか初めて聞いたわ ID:kT8dsikx0とID:6JtF0HSC0の次の活躍に期待だな
935 名前:デフォルトの名無しさん (ワッチョイ a76f-xIn+) mailto:sage [2017/07/17(月) 07:57:41.59 ID:HedtDN7o0.net] 何時、前後を覚えるのかな?
936 名前:デフォルトの名無しさん (ワッチョイ 466d-N1Eg) mailto:sage [2017/07/17(月) 08:01:01.05 ID:n9t4u9yj0.net] >>921 Pascal は LL(1)言語としてつくってあり、ワンパスでパースできる、その意地があるんだね
937 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 08:11:52.63 ID:PKmAGp8M0.net] Cもワンパスのため前方宣言必須ということのようだが、 一回舐めて拾うだけでいいんだし、今時こだわる必要も無いだろう ヘッダに出した公開インターフェースは先、モジュール内プライベートはその下がわかりやすいよな
938 名前:デフォルトの名無しさん (ワッチョイ 466d-N1Eg) mailto:sage [2017/07/17(月) 08:13:23.74 ID:n9t4u9yj0.net] >>926 C はプリプロを除いてもワンパスにはならないと思う
939 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 08:53:08.22 ID:U2FIHXXv0.net] >>918 >>913 がプロトタイプ宣言知ってるかどうかは知らんけど同じ情報を二ヵ所に書かないといけないのはいかがなものかと思う 言語仕様を決めた当時はI/Oも遅いので高々数回のパースでコンパイルする必要あったからしょうがないとは思うが >>921 Pascalは1-Passでビルドできるように言語仕様を決めていた なので当初はモジュールみたいな概念もなかった
940 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 08:57:46.36 ID:LYlgQVUQ0.net] >>920 さすがに知っているぞ。 俺は君と同様それはほぼ使わないというだけで。 というか、あの「事前に分かってないと使えない」事は正確には何と言うんだ? 「前方宣言必須」というのはどうも「前方宣言」自体が別の用語らしいのでまずかったようだ。 >>921 Cの場合、1パスコンパイルするためのものだ。 Cは紙テープ時代からある。 Wikiによると10文字/秒らしいので、1KBのファイルなら読み取りに1分40秒かかる。 これで2パスされると死ねるから、1パスでいけるように、 あらかじめ人間が順番を整えとけ(=機械に人間が合わせろ)というものだ。 どう考えても今はそんな時代じゃないだろ。 2パスに変更して「後方参照」(という用語でいいのか?)出来るようにすればいいだけだ。 紙テープの時代なら時代の要請だが、HDDの時代にこれを大事に守る理由は無い。 だから新しい全ての言語はこの制限は無い。必要ないからだ。 (ただしPythonを除く。この点だけでもPythonは糞だと断定できる) ところがな、>>919 みたいな老害は、 できる理由を見つけてきて頑なに現状維持しようとするものだ。 Cの場合は、確かに下から構築していけばプロトタイプ宣言は通常全く使わずに構築できる。 だからそれが作法になってしまってるだろ。 Pythonの場合はおそらくこれ、つまり、下からの構築を強制させるためにあえて採用してないのだと思う。 しかしな、他人のコードを一から読むとき、下から読む必要はなく、上から読んだほうが楽だ。 (正確には中レベルから。一番上のレベルも読む必要ないから) お前らがそれに気づけてないのだとしたら、お前らはCしか読んでないからだ。 というか俺も最近までそうだったのだが。
941 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 08:58:08.57 ID:LYlgQVUQ0.net] 既に書いたが、Cの読みにくさは、ファイルが細切れになっていることもある。 これはOOPも別の意味で同罪で、「で、その処理は具体的にはどこに書いてあるんですかね?」は常だ。 だからそんなものだと思っているのだと思う。 ところが最近、後方参照できる言語でCスタイルで書かれているコードを読んで戦慄した。 圧倒的に読みやすいのだ。(OOPよりも) 上からスクロールしていくだけで、読み飛ばしていいか、そうでないか、はっきりと分かった。 ところが肝心のCにはこの類のソースコードは存在しないんだよ。後方参照禁止だから。 後方参照が出来るようになれば、設計者が自由に関数を配置できるようになる。 当然、一番分かりやすいように並べることになる。 今のCにはその自由度が無いんだよ。人間が機械に合わせる仕様だから。 「プロトタイプ宣言」とかいう二度手間をやらないと、最もわかりやすい順に並べられない。 だから今のCソースは基本的に「分かりにくい」。 少なくとも後方参照できればもっとわかりやすくなる方向でしかない。 だからいまだにそれを放置しているのはマジで糞だって事。 老害的には「下から構築しろ」という教育効果を主張するのだろうが、そんなのは要らない。
942 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 08:59:15.27 ID:U2FIHXXv0.net] >>927 シングルパスでダメな構文あったっけ?
943 名前:デフォルトの名無しさん (ワッチョイ ce7f-z+eH) mailto:sage [2017/07/17(月) 09:03:20.21 ID:iqtGzeji0.net] ここで議論している人の 前方宣言 後方参照 の定義が一致しているのか気になる。
944 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 09:07:49.80 ID:U2FIHXXv0.net] >>929 > (ただしPythonを除く。この点だけでもPythonは糞だと断定できる) Python の def が「実行文」であることも知らんのだろうな w
945 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 09:11:05.59 ID:LYlgQVUQ0.net] >>932 というか今更その辺の用語は無いんだよ。理由は他言語では必
946 名前:vないから。 「後方参照」も正規表現でしか使われてないし、 しかもあれって「後方」よりも「バッファ」と言え、という類のものであるし。 とりあえず俺の定義は、 前方宣言必須:どうやらこれは俺の誤用だったすまん。「事前に宣言しておかないと使えない」の意で使ってた 後方参照:後で定義されている関数を使うこと だね。これが適切かは分からんが、Cやってる奴ならあーはいはい程度には通じるとは思う。 [] [ここ壊れてます]
947 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 09:14:46.40 ID:LYlgQVUQ0.net] >>933 知らんね。 つかあれ、そうなのか。だとすると動的に構築するから致し方なし、って奴か。 JavaScriptが糞な点と同じだな。 まあどの道2パスすれば回避できるだけのことを、なぜやらん?ってのはある。 Pythonは聞けば聞くほど糞なので、俺はやってない。
948 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 09:19:12.83 ID:PKmAGp8M0.net] >>927 ,931 たとえばgotoのラベルは下でもいいよね たかだか関数内限定ではあるけど >>932 ,934 今話してる文脈は「Cの前方宣言必須について」でいいんじゃないの?
949 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 09:39:52.04 ID:PKmAGp8M0.net] 引数が無い宣言のこと特別に「前方宣言」と言うのか 知らんかったわw wisdom.sak ura.ne.jp/programming/c/c27.html
950 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 09:50:00.72 ID:U2FIHXXv0.net] >>935 知らないなら黙ってりゃいいのに 知ったかはこれだから...
951 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 09:54:21.13 ID:U2FIHXXv0.net] >>936 Pascalはラベルに数値が(と言うか数値しか)使えないこととコンパイラを単純にするためにlabel文で宣言が要るけど、コンパイラの実装としては必須じゃないでしょ goto文の飛び先はラベル見つけた時点で入れればいいだけだし
952 名前:デフォルトの名無しさん (ワッチョイ c832-MRQN) mailto:sage [2017/07/17(月) 10:26:39.93 ID:+Y9zLnEF0.net] K&Rの時代じゃあるまいし、前方宣言を原型形式でない関数宣言子と捉える奴なんていねーだろ プロトタイプ宣言とか言い出した>>918 は例外として
953 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 10:42:28.15 ID:LYlgQVUQ0.net] >>938 お前はPython信者なのか?ならばもう一度言ってやるよ。Pythonはそこも糞だ。 Pythonはdefで関数宣言を行い、それがそのままオブジェクトになる仕様らしい。 つまりそこで暗黙の代入があるから、後方参照できないとの理由だ。まさに糞だ。 JavaScriptの場合は、これらの宣言を分けている。つまり、 function func0(){console.log('func0');} // (A) console.logはCでいうprintf var func1 = function(){console.log('func1');}; // (B) ここでfunc0は後方参照できる。つまりスコープに入っていればいつでも使える。 func1は関数ポインタであり、代入以降でしか使えない。 これが妥当な仕様だ。 関数ポインタは再代入可能だから、順に処理する必要があるからだ。 Cの場合、関数ポインタへの代入は自前で行うわけだから、 コンパイラの努力だけで後方参照できないという制限を解除することが出来る。 いまだにやってないのはただの手抜きというよりも確信犯だろうが。 なおJavaScriptでもPythonと同様に関数はオブジェクトになるのだが、 要するに「スコープ内で先に処理して再代入禁止にしておくべきfunction(A)」と 「順に処理するべき関数ポインタ(B)」を明示的に分離して記述できるだけだ。 みたところPythonには(A)しかなさそうなので、技術的に出来ない理由は無い。 この点についてはCも同様に糞だが、時代の要請があったという理由はある。 Pythonは本当に何の意味も無く制限をつけている、ただの糞だ。
954 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 10:49:45.35 ID:U2FIHXXv0.net] 知ったかが慌ててググって的はずれの長文乙 Python 関数ポインタ 辺りでググる程度の知恵もないのが残念だが w
955 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 10:50:54.11 ID:LYlgQVUQ0.net] >>937 ,940 俺もそれを知らんかった。 そしてそのページでそれを確認し、K&Rみたら確かに「プロトタイプ」となっている。 だからどうやら俺の誤用だった、とした。 ただまあ、その意味での「前方宣言」なんて見たことないんだけどね。
956 名前:デフォルトの名無しさん (スププ Sd94-UFoF) mailto:sage [2017/07/17(月) 10:55:39.50 ID:g3mBUieLd.net] Pythonはファイルの最後に if __name__ == 'main': main() ってやる関係で、結局実行は最後になるからdefの順番とかで困ることはまずないな せいぜい関数内関数定義で先に書くか後で書くかくらいか? 一体どんなコード書いてりゃそんなどうでもいいところで引っかかるんだ
957 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 10:57:04.61 ID:LYlgQVUQ0.net] >>942 Pythonのdefは941で言う(A)なんだよ。 だから後方参照できない技術的理由は無い、という見解だ。 お前には通じないようだが。 それとは別に(B)の記述はPythonでも出来る。 というかこれが出来ない新しい言語なんて無い(ただしJavaを除く)
958 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 11:02:44.43 ID:U2FIHXXv0.net] >>941 > みたところPythonには(A)しかなさそう >>945 > それとは別に(B)の記述はPythonでも出来る。 バカの上塗り w そもそも>>944 が言うように前方参照の話ですらないのに何を必死になってるんだか
959 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/17(月) 11:55:17.77 ID:woO8V6Ze0.net] >>929 あーそう、「ほぼ使わない」のか チームメイトが(いれば)お気の毒だね 正規表現の「後方参照」はここでの話と全然関係ないぞ コンパイラにとって初見の識別子があとで宣言されることを MASMでは前方参照と言っていたが、 Cでは「undeclared identifier: 宣言されていない識別子」 となっているだけだ(もち violation of the syntax) ちなみにISO/IEC9899には全然違う意味の 「forward declaration: 前方参照」という用語がある 老害を小馬鹿にしたいようだが、脇が甘すぎだぜおまえ
960 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 12:33:21.67 ID:LYlgQVUQ0.net] >>947 脇が甘いもなんも、お前も全員が妥当だと思う用語を持って来れないだろ。 だったらお前も俺と同レベルなんだが。 913の時点で「『宣言されていない識別子』は禁止」では何を言っているのか通じないだろ。 (「前方宣言必須」は厳密には間違っているが、C使いには意図は100%通じてるだろ) というかお前は老害ではなく若いのか?その突っかかり方はガキっぽい。 2chは言葉の定義にやたらこだわる奴が多いが、それはただのクソガキで、 仕事してりゃ分かるはずだが、実は社内方言ってのはものすごく多くて、 社外だと全く通用しないことすら自覚できてない場合が殆どだ。 だからすれ違いを感じたら>>932 のように確認するのが常で、 俺はそれを受けて>>934 と応じた。 ここら辺は仕事をしたことがあればよく見かける光景ではあるはず。 もちろん方言ではなく共通語を使う努力をすべきなのは言うまでもないが、 問題は方言を使っている奴は方言だと認識してないことなんだよ。 だから俺が方言を使っていれば、お前が正しい共通語を示せばいいだけの話であって、 今現在は(需要が既に無いから)共通語自体が存在しない状態だろ。 それをいちいち勝った負けたされても知らんがな。 で、まあ、話を戻すと、 (俺はPython使いではないから間違っているかもしれんが) 俺の理解では、Pythonは「プロトタイプ宣言が出来ないC」だ。 この理解が正しければ、糞だということで割と賛同を得られると思うが。 >>944 は糞を量産していることに気づいてないだけだ。 ただそれとは別に、プロトタイプ宣言は無くても通常は構築可能で、 Cはそれが作法になってるだろ。 例えばファイルの先頭でファイル内全関数をプロトタイプ宣言してるソースなんて見たことないだろ。 (コーディングルールとしてこれをやっている所があってもおかしくないが、誰か知ってるか?) ただ、Cはこの手間をかければ順序は自由にはなるが、Pythonはそれすら認めてないだろ。 この辺、Pythonは無駄に教育的で実践的ではないんだよ。
961 名前:デフォルトの名無しさん (ワッチョイ a76f-xIn+) mailto:sage [2017/07/17(月) 12:54:14.08 ID:HedtDN7o0.net] そうそう普通PL/Mだよね
962 名前:デフォルトの名無しさん (スププ Sd94-UFoF) mailto:sage [2017/07/17(月) 13:28:45.97 ID:g3mBUieLd.net] 俺が糞を量産しているというのは穏やかではないな if __name__ == '__main__'が糞といいたいのか? ちょっとPythonスレで議論しようよ
963 名前:デフォルトの名無しさん (ワッチョイ f649-I67b) mailto:sage [2017/07/17(月) 13:37:29.75 ID:g+93Yjlh0.net] 夏だな
964 名前:デフォルトの名無しさん (オイコラミネオ MMb6-9jcw) mailto:sage [2017/07/17(月) 14:40:04.91 ID:rKRQ/JsKM.net] forkで子プロセスから、子プロセスを終了させたあとに親プロセスを終了させる方法無いですかね? 親プロセスはwhile(1)で回していて、子プロセスで入力を受け取るのですが、ある入力が来たときだけ、プログラムを終了(子プロセス親プロセス両方共終了)させたいです
965 名前:デフォルトの名無しさん (ワッチョイ c832-MRQN) mailto:sage [2017/07/17(月) 14:45:33.81 ID:+Y9zLnEF0.net] 親プロセスでwaitpidして子プロセス終了してたら自分も終了すれば良いじゃん
966 名前:デフォルトの名無しさん (オイコラミネオ MMb6-9jcw) mailto:sage [2017/07/17(月) 14:54:49.57 ID:Ns2d2+pxM.net] >>953 子プロセスは自動で死ぬこともあるんです だから、子プロセスが自発的に親プロセスを終了させよつとしない限りは親プロセスは行き続けて欲しいです
967 名前:デフォルトの名無しさん (ワッチョイ c832-MRQN) mailto:sage [2017/07/17(月) 14:58:31.67 ID:+Y9zLnEF0.net] 終了ステータス変えるとか、共有メモリで適当なフラグもっとくとか、事前に適当なシグナル送るとか、いくらでもやりようあるだろ
968 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 15:09:00.52 ID:LYlgQVUQ0.net] >>950 行かんよ。俺はPythonの文法もろくに知らないし、使う気もないし。 ただ、俺の理解 > Pythonは「プロトタイプ宣言が出来ないC」だ。 が間違っているのなら、指摘してくれよ。 これが間違いでないのなら、このスレの過半数は糞認定すると思うぞ。 上記が正しいとして、君が糞を量産していることを自覚できていないのは、 C専読者と同じで、Cスタイルで「上位から」書かれているコードを見たことがないからだ。 というか俺もつい先日までそうだったんだが。 とりあえず簡単に確認する方法として、循環参照がある。 例えばCなら、以下になる。 viod say_hello(count){ if (--count<0) return; printf("hello"); say_world(count); } void say_world(count){ printf(" world!\n"); say_hello(count); } 後方参照できるJavaScriptなら、これはベタで書いてそのまま動作する。 Cだとプロトタイプ宣言が必要だが、実体は上記の通りで動作する。 Pythonは余分な方法を使わないとこれが出来ないんだろ? これとは別に、そもそも循環参照コードなんて書くなというのはあって、 これを教条的に強制しているのがPythonだろ。 下位からの記述を強制されている場合に、上位から読みたければファイル末尾から読め、 でしかないというのも事実だから、そんなに致命的でもないんだが。
969 名前:デフォルトの名無しさん (ドコグロ MM36-OTuW) mailto:sage [2017/07/17(月) 15:25:01.26 ID:iPE66y3WM.net] >>956 > Pythonは余分な方法を使わないとこれが出来ないんだろ? 普通になにもしなくてもできる 必要なのは>>944 のが書いてる > Pythonはファイルの最後に > if __name__ == 'main': > main() だけ て言うかPython知らないなららPython云々で語るなよ アホの戯れ言をいちいち訂正するのが面倒すぎる
970 名前:デフォルトの名無しさん (オイコラミネオ MMb6-9jcw) mailto:sage [2017/07/17(月) 15:29:13.95 ID:I/V/8ZBUM.net] >>955 ありがとうございます 出来ました
971 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 15:32:56.88 ID:LYlgQVUQ0.net] すまん、>>956 は間違いのようで、Pythonでも関数間の参照自体は出来るらしい。 > 再帰関数の前方参照 > www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html だから関数定義を全部先にしてしまえばいいということになる。 それが見易いとは思わないが。 しかしCは関数内関数が無いのでそれ以前だ。 GCC拡張を利用するなら、 関数内関数を全部「頭」に配置しないといけないのがPython、 どこに配置しても自由に呼び出せるのがJavaScriptということになる。 GCCの場合はCと同様プロトタイプ宣言とかも関数内に使えて配置も同様、ということなのかな? >>957 ああ悪い、こっちも確認した。上記の通り。 というかPythonの話は止めよう。俺はそっちには興味ない。 話を戻すと、俺が思うCに足りないのは「階層」と「後方参照」だ。 これら2つがあれば、今現在細切れになっているファイルを1つに束ね、 一番読みやすい順にソートできる。 お前らがピンと来ないのは、多分俺と同じで、見たことがないからだ。 後方参照できる言語でCスタイルで書かれた大規模コードを一度見れば分かると思うよ。
972 名前:デフォルトの名無しさん (スププ Sd94-UFoF) mailto:sage [2017/07/17(月) 16:45:34.15 ID:g3mBUieLd.net] 俺ってばこんなこんなに何も分かってない奴に「糞コード量産してる」とか言われてたん? 失礼な奴だな本当に
973 名前:デフォルトの名無しさん (ワッチョイ 7e32-vfgv) mailto:sage [2017/07/17(月) 16:53:25.99 ID:OvXGqJkd0.net] ctagsとか、タグジャンプつかおうな? 上から下にならべてあるから読みやすいですとか、眺めてるだけですと、宣言してるようなものだ。 トレースする気がないべ?
974 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 17:26:09.82 ID:LYlgQVUQ0.net] >>960 いや事実だぞ。 君は都合が悪い部分には回答しないようだが、プロトタイプ宣言が無いのは事実だろ。 それは下位関数も含めて全部上側で記述することを強制する。 C言語でプロトタイプ宣言が無い場合に似ている。 ただし関数内から別関数への参照は「動的」に行われるのでCより制約は緩くなるが、 本質的にはあまり変わらない。 そもそも、下位関数なんて名前を見たら実装なんて見ずとも結果が分かるべきものだし、 それがオブジェクト指向の思想だろ。下位関数は読む必要なんてないんだよ。 俺は「『君が無能だから』糞コードを量産している」と言っているわけではない。 Pythonの仕様が糞だから、「Pythonでは糞コードしか書けない」と俺は言っている。 そこを君は勘違いしている。 それはそうと、Pythonのスレ試しに見てみたが、相当酷いな。あれじゃマ板だよ。 >>961 IDEに使って本格的に読めばその辺も含めて改善するのだろうが、 設計者が分かりやすいようにソート済みなのと、 コンパイラに都合がいいようにソート済みなのでは、全然違うんだよ。 そしてCは「ファイル」を階層として使っているのだが、これがもう古い。 タグとか使って一発で飛べるのなら余計に1つのファイルにまとめてあったほうが好都合だろ。 (もっともタグ使えば複数ファイルでも飛べるのだとは思うが) ただ、俺が求めている階層は関数内関数で十分で、 GCCで採用されているのでいいんだが、アレは何で標準にならないんだ?
975 名前:デフォルトの名無しさん (ワッチョイ c832-MRQN) mailto:sage [2017/07/17(月) 17:45:56.64 ID:+Y9zLnEF0.net] トランポリンコード必須なGCCの関数内関数が標準に入るわけないだろ
976 名前:デフォルトの名無しさん (ワッチョイ df23-S4qQ) mailto:sage [2017/07/17(月) 17:52:48.13 ID:6JtF0HSC0.net] >>952 親プロセス while (1) で回してるって、その while (1) の中でやってる処理はなんだ? wait() してないのか? wait() してるならそれで子プロセス側の exit() のステータス 受け取れるからそれで親側で判別すればいいんじゃない? てか、これCはCでもUNIX系OS固有の話だよな。ここだとスレチにならんか?
977 名前:デフォルトの名無しさん (ワッチョイ df23-S4qQ) mailto:sage [2017/07/17(月) 17:54:48.33 ID:6JtF0HSC0.net] あ、もう解決済みだったか。すまん。
978 名前:デフォルトの名無しさん (ワッチョイ c832-MRQN) mailto:sage [2017/07/17(月) 17:54:54.48 ID:+Y9zLnEF0.net] ならんと思うし、解決済みだぞ
979 名前:デフォルトの名無しさん (ワッチョイ df23-S4qQ) mailto:sage [2017/07/17(月) 18:06:17.25 ID:6JtF0HSC0.net] >>959 まあそれで見やすくなるだろうから、そういうCを拡張した新しい言語作れば良い。 しかし、問題はC(あるいはそこからちょっとしか拡張されていないような言語)を 人間が直接使う機会はおそらく減り続けることにある。今でもほとんどOSや デバイスドライバを記述するアセンブラ代わり
980 名前:デフォルトの名無しさん (スププ Sd94-UFoF) mailto:sage [2017/07/17(月) 18:07:19.84 ID:g3mBUieLd.net] >>962 お前のいうことは完全に間違い。Pythonスレでならちゃんと答えてやる 興味がないならこれ以上その浅はかな知識をひけらかすな
981 名前:デフォルトの名無しさん (ワッチョイ df23-S4qQ) mailto:sage [2017/07/17(月) 18:07:38.79 ID:6JtF0HSC0.net] あ、ごめん。途中で送信しちゃった。 つづき。 ↓ に使われてるしね。
982 名前:デフォルトの名無しさん (ワッチョイ 386f-bO6O) mailto:sage [2017/07/17(月) 18:40:56.88 ID:IbKZMmLs0.net] 関数内関数って要するに高階関数のことだろ 関数型言語または関数型のマルチパラダイムの言語でないと無理だろ
983 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 18:46:26.39 ID:PKmAGp8M0.net] Objective-Cで全部可能ではある C言語でもclangならblocks拡張(関数オブジェクト・クロージャ)が使える 関数内関数は単純に制御構造だと捉えれば、C言語でもgoto文で可能でしょう
984 名前:デフォルトの名無しさん (スププ Sd94-UFoF) mailto:sage [2017/07/17(月) 18:54:16.64 ID:g3mBUieLd.net] Blocks拡張は有能なのは分かってるけど、Clang依存コードになるからちょいとハードル高いよなあ
985 名前:デフォルトの名無しさん (ワッチョイ 8a1c-UU3S) [2017/07/17(月) 18:59:20.24 ID:woO8V6Ze0.net] >>948 いやコンパイラにとって初見の識別子があとで宣言される という形になっているコードについて話しているのは みんなわかってるのに、頓珍漢な言葉遊びに持ち込もうと している邪魔な奴がおまえだ > Cはそれが作法になってるだろ はあ? 聞いたこともねえぜ、寝言は寝てぬかせ 横着しねえでちゃんとプロトタイプ宣言すんだよ 正直たまにサボることがあるのを恥もせずに それがスタンダードとか居直るおまえの態度が鼻持ちならん
986 名前:デフォルトの名無しさん (ワッチョイ 6e9a-n9U6) mailto:sage [2017/07/17(月) 19:03:14.17 ID:30YqlFLH0.net] ヘッダにはプロトタイプ宣言を書くだろうに なんでプロトタイプ宣言をなかったことにしたがるのだろうか?
987 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 19:03:27.54 ID:PKmAGp8M0.net] >>972 俺も非依存性重視なので、拡張なしの標準的なCでやってるよ プロトタイプ宣言とクロージャは諦めなきゃならないが クロージャはコールバック関数のポインタを渡すという伝統的なやり方でできる
988 名前:デフォルトの名無しさん (スププ Sd94-UFoF) mailto:sage [2017/07/17(月) 19:17:54.83 ID:g3mBUieLd.net] >>975 諦めなきゃならんのか出来るのかどっちだよw いやblockなしでクロージャ出来るんなら割と真面目に知りたいんだけど
989 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 19:25:58.36 ID:PKmAGp8M0.net] >>976 いやコールバック関数のポインタ渡しで代替だからw 別に関数書く必要はあるよ blocksみたいに、同じスコープにコールバックの処理も書けちゃうっていう便利さは無い 環境のキャプチャもしたければ、値のコピーをヒープに確保してコールバック側でfreeとか、 工夫すればできるでしょう
990 名前:デフォルトの名無しさん (スププ Sd94-UFoF) mailto:sage [2017/07/17(月) 19:43:36.29 ID:g3mBUieLd.net] うーむわかりた。やっぱ別に書いた関数を呼ぶのがせいぜいよなあ せめて関数オブジェクトがあればなあとたまに思うわ
991 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 19:45:22.30 ID:U2FIHXXv0.net] >>959 > というかPythonの話は止めよう。俺はそっちには興味ない。 はあ? Python言い出したのはお前だぞ w >>962 > Pythonの仕様が糞だから、「Pythonでは糞コードしか書けない」と俺は言っている。 だから知らないならPythonに触れるなよ 別にPythonサイコーって思ってる訳じゃないけどお前の指摘は全て的はずれすぎる 関数定義の順序に制限なんてない あとローカル関数についてはJavascriptも似たようなもんだぞ
992 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 19:47:31.91 ID:U2FIHXXv0.net] >>970 > 関数内関数って要するに高階関数のことだろ 全然違う > 関数型言語または関数型のマルチパラダイムの言語でないと無理だろ Pascalでも使えるのに何を知ったかしてるんだよ w >>971 > 関数内関数は単純に制御構造だと捉えれば、C言語でもgoto文で可能でしょう これはさすがにアホすぎる...
993 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 19:59:04.53 ID:PKmAGp8M0.net] >>980 ちょっと関数内関数ってどういうものを言ってるか説明して 単純に言えば関数内で行ったり来たりするだけじゃないの?
994 名前:デフォルトの名無しさん (ワッチョイ 386f-/Dy+) mailto:sage [2017/07/17(月) 20:24:44.55 ID:IbKZMmLs0.net] 関数の内部で関数を定義するようなイメージじゃないの? C言語では不可能だけど void functionA(void) { … void functionB(void) { … void functionC(void) { … } } }
995 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 20:31:06.71 ID:U2FIHXXv0.net] >>981 スコープが違うだけで普通の関数と同じだぞ 普通の関数をgotoだけで実装してみてよ
996 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 21:01:30.74 ID:LYlgQVUQ0.net] >>963 > トランポリンコード なんだそりゃ?と思ったらこれか。 d.hatena.ne.jp/yupo5656/20040602/p1 なるほどGCCのは単なる階層ではなく、プチグローバル付きか。 この仕様なら上位階層(ファイル)を記述変更無しで取り込めるが、 これは確かに標準化には微妙だな。俺はGCCの仕様を詳しく知らんかった。すまんね。 しかしこれ、C++のメンバ関数ポインタみたいに、 普通の関数ポインタと相互運用することは諦めてしまっても良かった気もするが、 それだとレガシーとは相性が悪い。微妙なところだね。
997 名前:デフォルトの名無しさん (ワッチョイ 4ed7-H2gN) mailto:sage [2017/07/17(月) 21:03:30.21 ID:PKmAGp8M0.net] >>983 俺が言ってるのは、Cでは同じようには書けないが同じ処理はできるってことだよ
998 名前:デフォルトの名無しさん (ワッチョイ ce6f-9g51) [2017/07/17(月) 21:07:34.37 ID:J4JGo3XO0.net] 次 C言語なら俺に聞け 141 mevius.2ch.net/test/read.cgi/tech/1500293207/
999 名前:デフォルトの名無しさん (ワッチョイ d091-z+eH) mailto:sage [2017/07/17(月) 21:16:05.25 ID:dzhRVtEN0.net] おっつおっつ
1000 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 21:20:55.01 ID:LYlgQVUQ0.net] >>967 ,969 チョイ拡張言語ってのはエコシステムが付いてこず勝手に死ぬ。 Dもだし、Objective-CはAppleに拾ってもらえたけど、もう確実に死ぬ運命だよね。 (あれらはチョイ拡張でもないが) チョイ拡張だとわざわざCから移行する意味が無いんだよ。 理想的にはやっぱ標準に入ってくれないと辛いわ。 Cが死に行く、って指摘については、俺もそう思っていたのだが、 何度も言っているが最近Cスタイルの他言語コードを見てちょっと考えを改めつつある。 OOPのコードは結構真面目に追いかけないと辛くて、読みやすくはない。 これはCも同様だと思っていたのだが、実はCの読みにくさは「階層」と「後方参照」がないだけで、 (つまりファイルがバラバラで、しかもグダグダな順に書かれているからであって《=プチ難読化済》) 構造的に問題があるわけではなく、それなりに読みやすいことに気づいた。 だからこれらがある言語(Python以外の新しい言語全部)でCスタイル(手続き型)で書かれたコードは 実はかなり読みやすいのだと思う。 (問題は、そういうのにあまり遭遇しないことだが) だからC自体は廃れるかもしれないけど、Cスタイルは多分廃れない。 そして今のところ手続き型万歳的な言語はCだけだ。 となると、Cに足りない上記、「階層」「後方参照」が入ればCってもう一回来るかも?とも思う。 (つか、namespaceすら入れないって何よ?とは思うよマジで) >>986 乙
1001 名前:デフォルトの名無しさん (ワッチョイ f2ea-S4qQ) mailto:sage [2017/07/17(月) 21:22:41.43 ID:n17oqQVv0.net] Pythonがプロトタイプ宣言の必要のないC言語と言ってるバカがいるのはこのスレですか?
1002 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 21:30:16.49 ID:LYlgQVUQ0.net] >>973 全部書くのがお前のジャスティスならそうすりゃいいし、 実際そっちが主流かもしれん。 しかしヘッダファイルを用意するなんて完全に二度手間だし、 コンパイラが自動的にやれよマジで、と思ったことは無いのか? コンパイル時間が気になるのなら、ヘッダファイルを用意しろ、 面倒ならなしでよし、その場合はコンパイラが勝手に探してくる、 その分コンパイル時間はかかるが手間が省ける、って仕様で何も問題ないだろ。 てか他言語は全部そうだし。(Python除く) 俺はあの仕様がいまだに残っており、 また、お前みたいに疑問を持ってない奴がいることがよく分からん。
1003 名前:デフォルトの名無しさん (ワッチョイ 0123-z+eH) mailto:sage [2017/07/17(月) 21:39:14.19 ID:LYlgQVUQ0.net] >>989 × Pythonがプロトタイプ宣言の必要のない ○ Pythonはプロトタイプ宣言が出来ない ○ JavaScriptはプロトタイプ宣言が必要ない 何度も言っているがこれだけでPythonは糞だと断定できる。 一番わかりやすい順に記述出来ない時点で糞。 ただしPythonってのは元々そういう言語。ユーザの自由を認めていない。 で、俺はマジでPythonに関わるつもり無いからもう止めて。 Python信者が発狂しているし。俺自身Python知らんし。
1004 名前:デフォルトの名無しさん (スプッッ Sd70-Cvl0) mailto:sage [2017/07/17(月) 21:41:38.75 ID:nYhUL1Kkd.net] 最強はアセンブリ言語
1005 名前:デフォルトの名無しさん (ワッチョイ ce7f-z+eH) mailto:sage [2017/07/17(月) 21:43:34.50 ID:iqtGzeji0.net] 一元管理と二重チェック、共存はできないが一概にどちらが優れていると決めつけられる
1006 名前:烽フでもないなぁ。 [] [ここ壊れてます]
1007 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 21:45:43.44 ID:U2FIHXXv0.net] >>985 だからgotoでどうやってやるんだよ 戻り番地の意味わかる?
1008 名前:デフォルトの名無しさん (アウアウカー Sa0a-S4qQ) mailto:sage [2017/07/17(月) 21:46:23.02 ID:/QULOYxMa.net] >>990 いや、何も無理してC使う必要はないんだよ。なんだったら新言語作ればいい。 bison, flex (yacc, lex) があるわけだし。 で、比較的楽に言語を作る方法は、C言語へのコンバータにしてしまうことだ。 そうするとかなり多くの環境で動くものがいきなりできる。 C++も最初の頃はそうだった。
1009 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 21:49:21.75 ID:U2FIHXXv0.net] >>991 知らないのに糞とかアホすぎる w
1010 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 21:49:44.33 ID:U2FIHXXv0.net] うめ
1011 名前:デフォルトの名無しさん (ワッチョイ aa11-OTuW) mailto:sage [2017/07/17(月) 21:50:16.71 ID:U2FIHXXv0.net] うめ
1012 名前:デフォルトの名無しさん (ドコグロ MM46-OTuW) mailto:sage [2017/07/17(月) 21:51:40.93 ID:qENq84dkM.net] >>991 バカは何度指摘してもバカのままなんだな
1013 名前:デフォルトの名無しさん (ワッチョイ f2ea-S4qQ) mailto:sage [2017/07/17(月) 21:51:49.33 ID:n17oqQVv0.net] >>990 1ソースコードファイル1オブジェクトファイルだからそういう仕様なんだよ
1014 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。 life time: 66日 23時間 31分 46秒
1015 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています