C言語って設計が悪いから難しく感じるだけat TECH
C言語って設計が悪いから難しく感じるだけ - 暇つぶし2ch20:デフォルトの名無しさん
26/03/27 10:35:39.69 /adP+HZw.net
クラスがないRustは分かりやすい

21:デフォルトの名無しさん
26/03/27 10:51:28.26 /ab4OUXT.net
>>14
まさに設計が悪い例だな

22:デフォルトの名無しさん
26/03/27 12:46:59.20 t++aEQp8.net
>>15
[[]]で囲むキモい文法はC++から借りたものではあるが、C++のアトリビュートも仕様腐ってるから何とも言えない無念さ
C++のキレイなところだけ輸入するのがC標準委員会の方針でなかったのかよ…

23:デフォルトの名無しさん
26/03/27 12:48:23.02 t++aEQp8.net
通常の言語と違って年々ゴミになっていく類稀なる発展をするC

24:デフォルトの名無しさん
26/03/28 12:21:20.72 rz9WNfgC.net
>>11
これも大概だろ

25:デフォルトの名無しさん
26/03/28 13:19:25.20 gdYalcvN.net
int *p, *q; // c
var p, q *int // go

26:デフォルトの名無しさん
26/03/28 15:43:10.47 IcEr9v0h.net
int *p; 派と
int* p; 派が居るけど
前者は int *p, *q; 出来るのに
後者は int* p, q; で詰む

27:デフォルトの名無しさん
26/03/28 15:58:42.04 /NjMiNwB.net
仕様とクセの折り合いをつけて
int* p; int* q;

28:デフォルトの名無しさん
26/03/28 17:06:21.66 bSm0koos.net
void func(int a[]);

funcの定義内で、引数 a を使う場合、a[i] などと書きます。

void func2(void (*g)(void));

func2の定義内で、引数 g を使う場合、g() だけでなく (*g)() とも書くことができるそうです。

配列と関数の場合で整合性がとれていないように思います。

29:デフォルトの名無しさん
26/03/28 19:00:06.62 19qhTXg6.net
>>28
それはCのcallableは関数ポインタだから
関数名を使っても関数ポインタに変換される。
だからなんなら(*****g)()でもok

また宣言の中の配列宣言子はポインタに読み替えられるから、int a[42]であろうとint *aと同じ
中に数字書くのは飾りです
但し配列宣言子内にstatic とか書くと意味が出るのでこれも注意

クソだな!!

30:デフォルトの名無しさん
26/03/28 19:33:58.12 /NjMiNwB.net
>>28
その引数aはポインタのシュガーシンタックスだから、整合を取りたければ*(a+i) と書いてあげるとか

>>29
&&gが出来ないのに**gができるとは、、、

31:デフォルトの名無しさん
26/03/28 19:40:23.77 /NjMiNwB.net
いや、29の話が全てで、30は要らなそうですね、、、

32:デフォルトの名無しさん
26/03/29 09:25:03.78 WM1+84P1.net
>>28
void func(void){}
に対して
void func2(void (*g)(void));
を使うとき
func2(func); と呼ぶ派と
func2(&func); と呼ぶ派が居るらしい

33:デフォルトの名無しさん
26/03/29 14:40:17.31 Nafr56OV.net
int *f();
int (*pf)();

という宣言を考えます。この宣言に含まれる「*」や「()」は演算子ではないですよね。実際に演算を行うわけではないからです。

ですが、K&Rにこれについて以下のような説明があります。

* is a prefix operator and it has lower precedence than (), so parentheses are necessary to force the proper association.

これは演算子ではない記号「*」、「()」の優先順位を考えています。

これはおかしくないですか?

34:デフォルトの名無しさん
26/03/29 14:44:14.10 Nafr56OV.net
もし、これらにも優先順位を考えるのであれば、

「int」と「*」と「()」の優先順位も考えなければならないはずです。

35:デフォルトの名無しさん
26/03/29 14:51:49.17 Nafr56OV.net
あ、その後に、

「dcl」という関数が書いてあります。これは、「int (*daytab)[13]」が入力されると「daytab: pointer to array[13] of int」という出力を作る関数のようです。

この関数を解読すれば、精密にCでの記法を理解できますね。

36:デフォルトの名無しさん
26/03/29 16:01:27.13 zcXFJxx/.net
&a == &a[0]

37:デフォルトの名無しさん
26/03/29 16:07:19.25 USBE/Vop.net
30年以上前にfj.comp.lang.cでフレーム起こしながらやってたような不毛すぎる議論で草

やっぱ引導渡さないとダメだこのクソ言語

38:デフォルトの名無しさん
26/03/29 19:06:16.10 dW2XAb/Z.net
話題に鮮度がなくて食いつけないよ・・・
初学者はこんなスレ立ててないで黙ってひっそりと独学してください

39:デフォルトの名無しさん
26/03/29 19:44:42.45 60xioQbF.net
>>36
型も一緒なの?

40:デフォルトの名無しさん
26/03/29 19:47:43.35 60xioQbF.net
>>37-38
残念だが 5ch がお㍗る


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch