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


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

C言語なら俺に聞け 140



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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






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

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

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