C言語って設計が悪いから難しく感じるだけ
1デフォルトの名無しさん
2026/03/24(火) 10:14:24.22ID:iaVEWJjC ポインタが難しいわけでもないし、単に分かりにくい設計が諸悪の根源。
2デフォルトの名無しさん
2026/03/24(火) 10:17:56.34ID:iaVEWJjC K&Rを今読んでいてそう感じます。
3デフォルトの名無しさん
2026/03/24(火) 11:25:17.12ID:+hX31Nmn int main(argc, argv)
int argc;
char **argv;
{
return main(argc, argv);
}
int argc;
char **argv;
{
return main(argc, argv);
}
4デフォルトの名無しさん
2026/03/24(火) 16:59:55.39ID:iaVEWJjC 例えば、
int (*p)[10];
とかいう表記が最悪。
int (*p)[10];
とかいう表記が最悪。
5デフォルトの名無しさん
2026/03/24(火) 19:07:52.20ID:dTqNOQ9b C++の.hファイルとcppファイルが分かれてるだけで勉強する気失せる
6デフォルトの名無しさん
2026/03/24(火) 23:41:15.90ID:4RNA5ClM 俺からは一つだけ
char* ptr_something;
この作法だけが正しい
俺以外全員間違い
char* ptr_something;
この作法だけが正しい
俺以外全員間違い
7デフォルトの名無しさん
2026/03/25(水) 08:40:44.64ID:NTvTvHA2 エセ職人スレ
2026/03/25(水) 13:07:39.68ID:idN2Bxou
>>3
ANSI版を嫁
ANSI版を嫁
9デフォルトの名無しさん
2026/03/26(木) 13:47:31.74ID:q1C4x9ZJ >>6
お前複数の宣言で事故るタイプ
お前複数の宣言で事故るタイプ
2026/03/26(木) 16:35:25.34ID:ZMuTo2I4
>>4
int p[][10];
int p[][10];
2026/03/26(木) 17:41:34.69ID:HYl7uPT4
C言語からの推奨移行先Rustの場合
T 型T
&T 型Tへの参照
長さが不定なもの
[T] 型Tのスライス値
[&T] 型&Tのスライス値
&[T] 型Tのスライス参照
&[&T] 型&Tのスライス参照
長さが固定なもの
[T; N] 型T長さNの配列値
[&T; N] 型&T長さNの配列値
&[T; N] 型T長さNの配列参照
&[&T; N] 型&T長さNの配列参照
このように[&T]角括弧の内部に&が来るため区別しやすい
T 型T
&T 型Tへの参照
長さが不定なもの
[T] 型Tのスライス値
[&T] 型&Tのスライス値
&[T] 型Tのスライス参照
&[&T] 型&Tのスライス参照
長さが固定なもの
[T; N] 型T長さNの配列値
[&T; N] 型&T長さNの配列値
&[T; N] 型T長さNの配列参照
&[&T; N] 型&T長さNの配列参照
このように[&T]角括弧の内部に&が来るため区別しやすい
12デフォルトの名無しさん
2026/03/26(木) 21:28:53.50ID:Qpr66Kdr [[T; M]; N]
13デフォルトの名無しさん
2026/03/26(木) 21:29:45.57ID:Qpr66Kdr [[T]; N]
[[T; M]]
[[T; M]]
14デフォルトの名無しさん
2026/03/26(木) 23:39:18.32ID:ai1mHsgg >>10
それが等価なのは引数の宣言だけ
それが等価なのは引数の宣言だけ
15デフォルトの名無しさん
2026/03/26(木) 23:41:42.57ID:ai1mHsgg C23からのアトリビュートの宣言もかなりの闇
各種コンパイラ独自実装のアトリビュート宣言よりだいぶマシとはいえ中途半端にセマンティクス保存しようとして闇った
各種コンパイラ独自実装のアトリビュート宣言よりだいぶマシとはいえ中途半端にセマンティクス保存しようとして闇った
16デフォルトの名無しさん
2026/03/27(金) 00:17:17.87ID:vbJQvJ18 よくこんな意味がわからない記号操れるな感心
17デフォルトの名無しさん
2026/03/27(金) 00:39:46.85ID:DyQoFlgK ポインタは便利
2026/03/27(金) 07:59:03.05ID:czUbq4AE
参照も欲しいけどな
2026/03/27(金) 10:20:18.62ID:IuqLSoe9
クソソースが作りにくい分だけ、C言語は設計が優れているといえなくもない
オブジェクト思考言語は美しいコードを生成できる反面、非常に難解なソースも量産できてしまう
世の中にあるクソソースでも、C言語だと理解してやろうという気持ちになれるけど
オブジェクト思考言語のクソソースは理解する気が起きないどころか殺意を感じる
オブジェクト思考言語は美しいコードを生成できる反面、非常に難解なソースも量産できてしまう
世の中にあるクソソースでも、C言語だと理解してやろうという気持ちになれるけど
オブジェクト思考言語のクソソースは理解する気が起きないどころか殺意を感じる
2026/03/27(金) 10:35:39.69ID:/adP+HZw
クラスがないRustは分かりやすい
2026/03/27(金) 10:51:28.26ID:/ab4OUXT
>>14
まさに設計が悪い例だな
まさに設計が悪い例だな
22デフォルトの名無しさん
2026/03/27(金) 12:46:59.20ID:t++aEQp8 >>15
[[]]で囲むキモい文法はC++から借りたものではあるが、C++のアトリビュートも仕様腐ってるから何とも言えない無念さ
C++のキレイなところだけ輸入するのがC標準委員会の方針でなかったのかよ…
[[]]で囲むキモい文法はC++から借りたものではあるが、C++のアトリビュートも仕様腐ってるから何とも言えない無念さ
C++のキレイなところだけ輸入するのがC標準委員会の方針でなかったのかよ…
23デフォルトの名無しさん
2026/03/27(金) 12:48:23.02ID:t++aEQp8 通常の言語と違って年々ゴミになっていく類稀なる発展をするC
24デフォルトの名無しさん
2026/03/28(土) 12:21:20.72ID:rz9WNfgC >>11
これも大概だろ
これも大概だろ
2026/03/28(土) 13:19:25.20ID:gdYalcvN
int *p, *q; // c
var p, q *int // go
var p, q *int // go
2026/03/28(土) 15:43:10.47ID:IcEr9v0h
int *p; 派と
int* p; 派が居るけど
前者は int *p, *q; 出来るのに
後者は int* p, q; で詰む
int* p; 派が居るけど
前者は int *p, *q; 出来るのに
後者は int* p, q; で詰む
2026/03/28(土) 15:58:42.04ID:/NjMiNwB
仕様とクセの折り合いをつけて
int* p; int* q;
int* p; int* q;
28デフォルトの名無しさん
2026/03/28(土) 17:06:21.66ID:bSm0koos void func(int a[]);
funcの定義内で、引数 a を使う場合、a[i] などと書きます。
void func2(void (*g)(void));
func2の定義内で、引数 g を使う場合、g() だけでなく (*g)() とも書くことができるそうです。
配列と関数の場合で整合性がとれていないように思います。
funcの定義内で、引数 a を使う場合、a[i] などと書きます。
void func2(void (*g)(void));
func2の定義内で、引数 g を使う場合、g() だけでなく (*g)() とも書くことができるそうです。
配列と関数の場合で整合性がとれていないように思います。
29デフォルトの名無しさん
2026/03/28(土) 19:00:06.62ID:19qhTXg6 >>28
それはCのcallableは関数ポインタだから
関数名を使っても関数ポインタに変換される。
だからなんなら(*****g)()でもok
また宣言の中の配列宣言子はポインタに読み替えられるから、int a[42]であろうとint *aと同じ
中に数字書くのは飾りです
但し配列宣言子内にstatic とか書くと意味が出るのでこれも注意
クソだな!!
それはCのcallableは関数ポインタだから
関数名を使っても関数ポインタに変換される。
だからなんなら(*****g)()でもok
また宣言の中の配列宣言子はポインタに読み替えられるから、int a[42]であろうとint *aと同じ
中に数字書くのは飾りです
但し配列宣言子内にstatic とか書くと意味が出るのでこれも注意
クソだな!!
2026/03/28(土) 19:33:58.12ID:/NjMiNwB
2026/03/28(土) 19:40:23.77ID:/NjMiNwB
いや、29の話が全てで、30は要らなそうですね、、、
32デフォルトの名無しさん
2026/03/29(日) 09:25:03.78ID:WM1+84P1 >>28
void func(void){}
に対して
void func2(void (*g)(void));
を使うとき
func2(func); と呼ぶ派と
func2(&func); と呼ぶ派が居るらしい
void func(void){}
に対して
void func2(void (*g)(void));
を使うとき
func2(func); と呼ぶ派と
func2(&func); と呼ぶ派が居るらしい
33デフォルトの名無しさん
2026/03/29(日) 14:40:17.31ID:Nafr56OV 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.
これは演算子ではない記号「*」、「()」の優先順位を考えています。
これはおかしくないですか?
int (*pf)();
という宣言を考えます。この宣言に含まれる「*」や「()」は演算子ではないですよね。実際に演算を行うわけではないからです。
ですが、K&Rにこれについて以下のような説明があります。
* is a prefix operator and it has lower precedence than (), so parentheses are necessary to force the proper association.
これは演算子ではない記号「*」、「()」の優先順位を考えています。
これはおかしくないですか?
34デフォルトの名無しさん
2026/03/29(日) 14:44:14.10ID:Nafr56OV もし、これらにも優先順位を考えるのであれば、
「int」と「*」と「()」の優先順位も考えなければならないはずです。
「int」と「*」と「()」の優先順位も考えなければならないはずです。
35デフォルトの名無しさん
2026/03/29(日) 14:51:49.17ID:Nafr56OV あ、その後に、
「dcl」という関数が書いてあります。これは、「int (*daytab)[13]」が入力されると「daytab: pointer to array[13] of int」という出力を作る関数のようです。
この関数を解読すれば、精密にCでの記法を理解できますね。
「dcl」という関数が書いてあります。これは、「int (*daytab)[13]」が入力されると「daytab: pointer to array[13] of int」という出力を作る関数のようです。
この関数を解読すれば、精密にCでの記法を理解できますね。
2026/03/29(日) 16:01:27.13ID:zcXFJxx/
&a == &a[0]
37デフォルトの名無しさん
2026/03/29(日) 16:07:19.25ID:USBE/Vop 30年以上前にfj.comp.lang.cでフレーム起こしながらやってたような不毛すぎる議論で草
やっぱ引導渡さないとダメだこのクソ言語
やっぱ引導渡さないとダメだこのクソ言語
2026/03/29(日) 19:06:16.10ID:dW2XAb/Z
話題に鮮度がなくて食いつけないよ・・・
初学者はこんなスレ立ててないで黙ってひっそりと独学してください
初学者はこんなスレ立ててないで黙ってひっそりと独学してください
39デフォルトの名無しさん
2026/03/29(日) 19:44:42.45ID:60xioQbF >>36
型も一緒なの?
型も一緒なの?
2026/03/29(日) 19:47:43.35ID:60xioQbF
>>37-38
残念だが 5ch がおhる
残念だが 5ch がおhる
41デフォルトの名無しさん
2026/03/30(月) 18:06:41.81ID:VsAnrdcH char (*(*x())[])();
char (*(*x[3])())[5];
上の宣言を解読せよ。
char (*(*x[3])())[5];
上の宣言を解読せよ。
42デフォルトの名無しさん
2026/03/30(月) 21:09:55.85ID:PRAX/oWX わざと難読化したのを書いて言語がクスという言うスレ
2026/03/30(月) 21:34:19.04ID:0h8bFcOt
こんなの無限にできるだろ
char (*(*(*(*(*x[3])())[5] )));
char (*(*(*(*(*x[3])())[5] )));
44デフォルトの名無しさん
2026/03/31(火) 02:19:57.63ID:XWIEtcEp >>41
char (*(*x())[])();
x is fun ret ptr of array of ptr to fun ret char.
char (*(*x[3])())[5];
x is array 3 of ptr to fun ret ptr to array 5 of char.
かな?
char (*(*x())[])();
x is fun ret ptr of array of ptr to fun ret char.
char (*(*x[3])())[5];
x is array 3 of ptr to fun ret ptr to array 5 of char.
かな?
45デフォルトの名無しさん
2026/03/31(火) 02:39:01.36ID:XWIEtcEp じゃあ俺からも問題
xの宣言
int (*(*x[3]) [[A]] (double)) [[B]] [5];
を読み下せ
xの宣言
int (*(*x[3]) [[A]] (double)) [[B]] [5];
を読み下せ
46デフォルトの名無しさん
2026/03/31(火) 10:00:53.38ID:KKs2VdCx なぞなぞ言語
47デフォルトの名無しさん
2026/03/31(火) 11:02:05.53ID:XWIEtcEp signalとかqsort_rとかなぞなぞ解かないと使えない関数もあるので…
48デフォルトの名無しさん
2026/03/31(火) 11:04:18.42ID:XWIEtcEp あとはpthread、特にpthread cleanup handlerあたりはかなりなぞなぞ
2026/03/31(火) 23:41:51.12ID:spN5Do5t
gets("(σ・∀・)σ"); // Segmentation fault
50デフォルトの名無しさん
2026/04/01(水) 17:51:10.06ID:3UTfV8wO >>45
アトリビュートは闇…
アトリビュートは闇…
2026/04/01(水) 20:05:24.77ID:uzR/ljvY
アルゴリズムは苦手だけどなそなそは得意
52デフォルトの名無しさん
2026/04/01(水) 23:08:41.35ID:8lGTkqWR 人間がコンピューターに寄り添う優しい言語
それがC
かわりにコンピューターも全力でがんばってくれる
それがC
かわりにコンピューターも全力でがんばってくれる
2026/04/15(水) 21:01:40.39ID:KTOGvwbf
こうやればステップ数少なくなるから速く動くんじゃね?
と書いたコードがびっくりするほど遅くて
やっぱり妙な書き方しない方がまともだと学んだ
と書いたコードがびっくりするほど遅くて
やっぱり妙な書き方しない方がまともだと学んだ
54デフォルトの名無しさん
2026/04/15(水) 21:45:10.88ID:Shlgqzec どの命令がどんな速度で実行されるかを学んだ方がいい
ステップ数が短い命令は、複雑なことを簡単な命令でこなすように作ってあるから
むしろ時間がかかる
ステップ数が短い命令は、複雑なことを簡単な命令でこなすように作ってあるから
むしろ時間がかかる
55デフォルトの名無しさん
2026/04/17(金) 15:19:45.09ID:Ph1ijPva DJNZ
56デフォルトの名無しさん
2026/04/17(金) 15:21:27.98ID:Ph1ijPva stsb
ldsb
ldsb
57デフォルトの名無しさん
2026/04/18(土) 13:49:14.41ID:HlEIpBul xor a,a
2026/04/20(月) 06:21:40.12ID:p1bOR+Kk
2026/04/20(月) 14:29:08.22ID:+xN4UTBC
switch(x){
case 0:
break;
label1:
case 1:
break;
case 2:
x=1;
goto label1;
break;
default:
break;
}
case 0:
break;
label1:
case 1:
break;
case 2:
x=1;
goto label1;
break;
default:
break;
}
60デフォルトの名無しさん
2026/05/04(月) 23:05:10.83ID:loKn+pyl61デフォルトの名無しさん
2026/05/04(月) 23:43:52.89ID:S7DHTU1B だからってなんだよ
2026/05/05(火) 07:24:50.94ID:IgpYxfA3
Cの楽しさを知りたければIOCCCの作品でも読んでみればいい
63デフォルトの名無しさん
2026/05/05(火) 10:34:17.51ID:pUcfUdxA >>61
ハードウェアとのやりとりが多いので、ハードウェア寄りのプログラミング言語になっている。
ハードウェアとのやりとりが多いので、ハードウェア寄りのプログラミング言語になっている。
2026/05/05(火) 13:40:19.79ID:sd/Q4g2J
全ての言語はunlambdaと同様の難読化が可能。なぜならSKIコンビネータからの遺伝だから。
2026/05/05(火) 19:07:15.16ID:JPdT+3XD
K&R時代のC言語を体験してみよう
2026/05/06(水) 16:32:37.85ID:mBI68MGx
ポインタはデータまたは関数そのものではなくそのデータまたは関数のアドレスを意味する
簡単に聞こえるし簡単だと思っていたらいつか足をすくわれるのがパターン
簡単に聞こえるし簡単だと思っていたらいつか足をすくわれるのがパターン
67💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 16:35:45.09ID:4i0fkMKP メモリマップとかI/Oマップとか一度でも見たことあるのか?サル。
68💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 16:43:14.10ID:4i0fkMKP >>66
間違ってないね。
間違ってないね。
69デフォルトの名無しさん
2026/05/06(水) 18:22:41.41ID:Oi8nJDg6 Cは「ちょっと高度なアセンブラ」なんだよ
人間の読みやすさなんて考えてない
人間の読みやすさなんて考えてない
2026/05/06(水) 19:00:06.93ID:usSUIi60
>>66
違うよ
ある変数があるとして
そこへのポインタこそ変数そのものなんだよ
値の方は変数ではない
これは代入すればわかる
ポインタがあればその指してる先を書き換えることができる
値があってそれを書き換えても変数の中身は書き換わらない
つまり
ポインタが変数
値は変数ではない
違うよ
ある変数があるとして
そこへのポインタこそ変数そのものなんだよ
値の方は変数ではない
これは代入すればわかる
ポインタがあればその指してる先を書き換えることができる
値があってそれを書き換えても変数の中身は書き換わらない
つまり
ポインタが変数
値は変数ではない
71💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 19:18:31.75ID:D9NyPKEC2026/05/06(水) 19:47:04.16ID:AibCcjOg
変数の実体はポインタであってるよ
だから関数に渡して結果を入れてもらう時もポインタを渡さなければならない
だから関数に渡して結果を入れてもらう時もポインタを渡さなければならない
74💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 19:57:37.43ID:D9NyPKEC >>73
おい、サル。
int x; /* これが変数でなく */
int *xp; /* これだけが変数だ */
と言いたいのか?
おい、サル。
int x; /* これが変数でなく */
int *xp; /* これだけが変数だ */
と言いたいのか?
75デフォルトの名無しさん
2026/05/06(水) 20:07:27.37ID:frK1nPOq >>74
小学生ですか?
変数(容れ物)と値の区別を学びましょう
コードの中でxと書いてもそれは値として取り扱われ変数としては取り扱われない
だから例えば関数にxを渡してもそれは変数を渡したことにならず値だけが渡る
変数とはアドレスのことです
そのため変数を受け渡すにはアドレスが必要
関数へ受け渡すときは&xなどになる
小学生ですか?
変数(容れ物)と値の区別を学びましょう
コードの中でxと書いてもそれは値として取り扱われ変数としては取り扱われない
だから例えば関数にxを渡してもそれは変数を渡したことにならず値だけが渡る
変数とはアドレスのことです
そのため変数を受け渡すにはアドレスが必要
関数へ受け渡すときは&xなどになる
2026/05/06(水) 20:31:07.75ID:mBI68MGx
変数と変数の値と変数のアドレスが正しく理解できてない
2026/05/06(水) 20:45:06.04ID:mBI68MGx
MOV EAX, [0x12345678]
メモリの内容を 4バイト読み込んで EAX に入れるIA-32のニーモニックだけど
これをよく考えたら変数、変数の値、変数のアドレスの違いがわかる
メモリの内容を 4バイト読み込んで EAX に入れるIA-32のニーモニックだけど
これをよく考えたら変数、変数の値、変数のアドレスの違いがわかる
78💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 21:25:45.53ID:D9NyPKEC >>75
読め、サル。
int x; /* このアドレスにintを格納 */
int *xp; /* このアドレスにintが書かれたアドレスを格納 */
読め、サル。
int x; /* このアドレスにintを格納 */
int *xp; /* このアドレスにintが書かれたアドレスを格納 */
80デフォルトの名無しさん
2026/05/07(木) 10:15:21.67ID:4vHwfolo ポインタとか要らねーだろ
遅くなる?関係ねーよ
CPUのパワーでぶん回しゃ良いだけだ
遅くなる?関係ねーよ
CPUのパワーでぶん回しゃ良いだけだ
81デフォルトの名無しさん
2026/05/07(木) 10:43:12.99ID:amqD74Kk 無限ループですらCPUパワーで解決しそうな勢いだ
2026/05/07(木) 11:31:49.50ID:z4cyO/69
L[1-3]キャッシュに乗るとポインタでもレジスタでもなくなる
2026/05/07(木) 12:22:34.52ID:TMOwDbsl
>>80
パイソンやれよ
パイソンやれよ
84💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 12:24:52.05ID:qEvGZHut Lispだろ。
85💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 18:29:13.85ID:q4SIgGnv2026/05/07(木) 22:25:45.93ID:B9rL4/lJ
int a[4] = {};
a == &a[0]; ←意味わかる
(a+1) == &a[1]; ←微妙だが一応意味わかる
a == (void*)&a; ←????
a == &a[0]; ←意味わかる
(a+1) == &a[1]; ←微妙だが一応意味わかる
a == (void*)&a; ←????
87💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 22:57:42.45ID:q4SIgGnv そのaという配列変数のアドレスは32ビットCPUなら32ビットの値、64ビットCPUなら64ビットの値だろ?
88💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:00:47.69ID:q4SIgGnv アドレスの値はchar*でもint*でも同じ。当然void*でも同じ。
89💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:07:16.73ID:q4SIgGnv 互換性のないポインタ同士を比較するとウォーニングがでるからそれを抑制するためにvoid*にキャストしているだけだと思うよ。
90💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:23:39.55ID:q4SIgGnv 本当はchar**とvoid**にも互換性があってほしいんだがないんだよ。void*としかない。
91デフォルトの名無しさん
2026/05/07(木) 23:45:06.14ID:amqD74Kk a + 4 == (void *)(&a + 1)
92💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:54:34.19ID:q4SIgGnv sizeof(int)と書こう。
2026/05/08(金) 16:59:33.40ID:jFFlox80
俺はすごいじじいだけど
C言語を初めて見たときは画期的だと思ったよ。
まだ世の中がMS-DOSじゃなくてCP/Mのパソコンあたりがでていた時のことだ。
そのころやっていたのは、CNC装置そのもので、8086が5つ乗っていたと思う。
CNCのNCプログラム実行部は全部アセンブリ言語で書かれていて、UIだけ高級言語のPL/M86で
書かれていたよ。 このPL/MとCが全然違うんだな。
スタックの積み方が違う。いわゆる関数コールが PascalのABIだし
ポインタは Based変数というものがあるがポインタに対してBased でint配列や 構造体配列のポインタを定義する。
ポインタ+1しても中身は1しか増えないから、 +sizeof(struct KOZOTAN) を足してやらないといけないとかで
Cは+1するだけで勝手にサイズが足されるから合理的だと思ったけどな。
C言語を初めて見たときは画期的だと思ったよ。
まだ世の中がMS-DOSじゃなくてCP/Mのパソコンあたりがでていた時のことだ。
そのころやっていたのは、CNC装置そのもので、8086が5つ乗っていたと思う。
CNCのNCプログラム実行部は全部アセンブリ言語で書かれていて、UIだけ高級言語のPL/M86で
書かれていたよ。 このPL/MとCが全然違うんだな。
スタックの積み方が違う。いわゆる関数コールが PascalのABIだし
ポインタは Based変数というものがあるがポインタに対してBased でint配列や 構造体配列のポインタを定義する。
ポインタ+1しても中身は1しか増えないから、 +sizeof(struct KOZOTAN) を足してやらないといけないとかで
Cは+1するだけで勝手にサイズが足されるから合理的だと思ったけどな。
94デフォルトの名無しさん
2026/05/08(金) 17:02:55.94ID:jDCLnraE アセンブラだってサイズ分インクリするけど
2026/05/09(土) 01:25:27.84ID:/SzbkRKm
>>75
その「変数とはアドレスのこと」というのは機械語で考えればわかりやすいよね
静的な変数なら絶対アドレス
動的な変数なら相対アドレスになる
キモじじみたいに機械語を知らないと
「変数とはアドレスのこと」を理解できない
その「変数とはアドレスのこと」というのは機械語で考えればわかりやすいよね
静的な変数なら絶対アドレス
動的な変数なら相対アドレスになる
キモじじみたいに機械語を知らないと
「変数とはアドレスのこと」を理解できない
96💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 01:46:14.16ID:6d+vv6Vz ・静的な変数はヒープ上
・動的な変数はスタック上
どちらもメインメモリ上でありどちらもアドレスである点は同じ。
・任意のアドレスをフルビットで表すのが絶対アドレス
・任意のアドレスをあるアドレスからの相対位置で表すのが相対アドレス
俺はZ80の機械語でインベーダーゲームを書いたしm68kの機械語ではもっと山ほど色々書いた。
結論:サルには機械語は無理。
・動的な変数はスタック上
どちらもメインメモリ上でありどちらもアドレスである点は同じ。
・任意のアドレスをフルビットで表すのが絶対アドレス
・任意のアドレスをあるアドレスからの相対位置で表すのが相対アドレス
俺はZ80の機械語でインベーダーゲームを書いたしm68kの機械語ではもっと山ほど色々書いた。
結論:サルには機械語は無理。
97💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 01:50:11.28ID:6d+vv6Vz あ、動的がヒープで静的はbssセクションとかだな。
98💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 01:53:24.66ID:6d+vv6Vz ん?動的なメモリでなく動的な変数って書いてあるから錯覚したけど動的な変数ってなんだ?やっぱりCのauto変数のことだよな?
2026/05/09(土) 04:07:45.96ID:+volYkQ2
>>96
マルキューでは書いていない若造かよ
マルキューでは書いていない若造かよ
100💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 04:09:43.00ID:6d+vv6Vz Z80って書いてあるだろ、サル。
101デフォルトの名無しさん
2026/05/09(土) 04:12:46.78ID:+volYkQ2 ゼッパチだけ??
当時究極の8bit CPUと評されたマルキューでも書いていないなら若造か雑魚
当時究極の8bit CPUと評されたマルキューでも書いていないなら若造か雑魚
102💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 04:31:22.07ID:6d+vv6Vz 例えばシャープは200ラインと400ラインとテレビが3つとも映るディスプレイを作った。一方 FM-7 はテレビはおろか400ラインにすらGRAMの増設と共に専用ディスプレイが必要だった。ましてスーパーインポーズなんて望めるわけがない。
セルフリロケータブルコード以外に6809でしかできないことを言ってみろよサル。究極の8bit CPU以前に8bit CPU自体は知ってんのかサル。
セルフリロケータブルコード以外に6809でしかできないことを言ってみろよサル。究極の8bit CPU以前に8bit CPU自体は知ってんのかサル。
103デフォルトの名無しさん
2026/05/09(土) 04:42:14.75ID:+volYkQ2104💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 04:47:39.90ID:6d+vv6Vz CPU評価ボードなんてどのパソコンにも何枚でも挿せるがサルには理解できないかもな。
105デフォルトの名無しさん
2026/05/09(土) 05:00:01.29ID:+volYkQ2 やっぱり当時の常識を知らない若造だったか
FM-8/FM-7は発売当初から6809二つのデュアルCPU搭載機種だ
FM-8/FM-7は発売当初から6809二つのデュアルCPU搭載機種だ
106💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:03:50.25ID:6d+vv6Vz CPU評価ボードが理解を超えてるのかサル。当然Z80カードも理解を超えてるんだろうなサル。
107デフォルトの名無しさん
2026/05/09(土) 05:13:53.06ID:+volYkQ2108💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:17:47.58ID:6d+vv6Vz 理論上X1にもPC-88にも6809カードを2枚挿すことはごく容易いはずだって言ってるんだがサルには難しいか?
109💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:42:41.46ID:6d+vv6Vz はい、論破。次のサル来い。
Z80だけでなく6809でも書かなければならないものって「売り物のゲーム」以外になにがあるの?
Z80だけでなく6809でも書かなければならないものって「売り物のゲーム」以外になにがあるの?
110デフォルトの名無しさん
2026/05/09(土) 05:47:06.33ID:+volYkQ2 >>108
やはり分かっていないようだな
FM-8/7には現実にZ80カードが発売されていて挿して使えていた
しかしそんな話ではなくFM-8/7には6809CPUが2つ標準搭載されていた
だからデュアルCPUを活用したプログラムはそのまま標準環境で動いて誰もが使えていた
やはり分かっていないようだな
FM-8/7には現実にZ80カードが発売されていて挿して使えていた
しかしそんな話ではなくFM-8/7には6809CPUが2つ標準搭載されていた
だからデュアルCPUを活用したプログラムはそのまま標準環境で動いて誰もが使えていた
111💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:56:40.92ID:6d+vv6Vz 標準環境でデュアルCPUなら標準環境用のソフトがそれを採用しやすいのはわかるよ?でもそれは商売の話。標準環境以外の話は?つまりコンピュータ工学は?サルには無理?
112デフォルトの名無しさん
2026/05/09(土) 06:14:19.27ID:+volYkQ2 当時両方の機械語で書いていたならば
何もかも汚いZ80と何もかも美しい6809の格差も常識だろ
それ以前に当時の市販のマイコン状況すら知らなかったキモじじいは実際には若造だからそういう常識も理解できないのだろうが
何もかも汚いZ80と何もかも美しい6809の格差も常識だろ
それ以前に当時の市販のマイコン状況すら知らなかったキモじじいは実際には若造だからそういう常識も理解できないのだろうが
113💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 06:28:45.68ID:6d+vv6Vz じゃあさ、こういう話はどうだ?俺は学生時代、6809のように美しい68000を搭載したシャープX68000に、自作のTMS320C25カードを挿して自作のアブソリュートアセンブラを作って、みたいな話。
114デフォルトの名無しさん
2026/05/09(土) 06:50:23.78ID:d0g52L0e >>95
>「変数とはアドレスのこと」を理解できない
まだ間違ったことを主張し続けているのか
変数と変数のアドレスを正しく理解できてない
変数とは値を保存するためのエリアであり、保存したい内容によってサイズがかわる
変数のアドレスとは変数の先頭アドレスを指すだけ
メモリの1000Hからはじまる2バイトの変数があったとする
変数は1000Hと1001H
変数の値は1000Hと1001Hに書かれた内容
変数のアドレスは1000H
>「変数とはアドレスのこと」を理解できない
まだ間違ったことを主張し続けているのか
変数と変数のアドレスを正しく理解できてない
変数とは値を保存するためのエリアであり、保存したい内容によってサイズがかわる
変数のアドレスとは変数の先頭アドレスを指すだけ
メモリの1000Hからはじまる2バイトの変数があったとする
変数は1000Hと1001H
変数の値は1000Hと1001Hに書かれた内容
変数のアドレスは1000H
115💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 07:00:40.75ID:6d+vv6Vz 間違ってないけどアドレス4桁?
116デフォルトの名無しさん
2026/05/09(土) 07:04:17.29ID:d0g52L0e 8ビット時代の人間にもわかりやすいだろう?
117💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 07:05:02.24ID:6d+vv6Vz うん。
118デフォルトの名無しさん
2026/05/09(土) 07:15:53.64ID:+volYkQ2119💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 07:24:28.06ID:6d+vv6Vz >>118
実行時じゃなくてコンパイル時な。
実行時じゃなくてコンパイル時な。
120デフォルトの名無しさん
2026/05/09(土) 08:02:59.98ID:+volYkQ2 >>119
目が悪いのかね?
目が悪いのかね?
121💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 08:29:09.18ID:6d+vv6Vz >>120
じゃあコンパイル時?リンク時?
じゃあコンパイル時?リンク時?
122デフォルトの名無しさん
2026/05/09(土) 09:09:18.92ID:d0g52L0e123デフォルトの名無しさん
2026/05/09(土) 09:22:17.46ID:+volYkQ2124デフォルトの名無しさん
2026/05/09(土) 09:55:37.01ID:d0g52L0e >>123
変数のアドレスで変数が一意に決まるとしても
変数と変数のアドレスは違うものである
マイナンバーで日本での個人が一意に決まるとしても
個人とマイナンバーは違うもの
「変数とはアドレスのこと」というのは
「個人とはマイナンバーのこと」と同じぐらいに無理がある
変数のアドレスで変数が一意に決まるとしても
変数と変数のアドレスは違うものである
マイナンバーで日本での個人が一意に決まるとしても
個人とマイナンバーは違うもの
「変数とはアドレスのこと」というのは
「個人とはマイナンバーのこと」と同じぐらいに無理がある
125デフォルトの名無しさん
2026/05/09(土) 09:55:46.98ID:v4KHc9uZ >>96
むしろ猿のほうが機械語楽でしょ
絶対アドレスと相対アドレスさえわかってりゃいいだけだしね
オブジェクト指向とか余計なこと考えずとも
全部メモリ空間だけを見てメモリ空間のデータを主役にしてプログラム組んでいけばいいからなぁ
むしろ猿のほうが機械語楽でしょ
絶対アドレスと相対アドレスさえわかってりゃいいだけだしね
オブジェクト指向とか余計なこと考えずとも
全部メモリ空間だけを見てメモリ空間のデータを主役にしてプログラム組んでいけばいいからなぁ
126💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 10:18:33.39ID:6d+vv6Vz C++を英語の第1版で学んだ人間相手になに言ってんの?
127💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 10:23:43.82ID:6d+vv6Vz K島さん(現准教授)の主催した輪講だよ。今、憎悪が集中してるあいつもいたよ?他はK村さんとかA川さんとか。
128デフォルトの名無しさん
2026/05/09(土) 10:45:29.73ID:v4KHc9uZ 複数の変数名を用意して
それら全部同じアドレス参照してる組み方してれば、くだらない変数=アドレス論とかアホでしかないが
それら全部同じアドレス参照してる組み方してれば、くだらない変数=アドレス論とかアホでしかないが
129デフォルトの名無しさん
2026/05/09(土) 10:57:09.46ID:gb2wIFAe 老人しかいない・・・
130💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:00:18.59ID:6d+vv6Vz コンパイル時ではなくリンク時に決定されるものもある。グローバル変数やグローバル関数の実体だ。リンク時に見つからなければエラーになる。重複していてもエラーになる。
131💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:06:19.74ID:6d+vv6Vz >>128
それ、どうやってやんの?
それ、どうやってやんの?
132💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:31:30.01ID:6d+vv6Vz グローバル変数やグローバル関数の実体だけでなく構造体のメンバ変数のオフセットもリンク時に決定されるようになっていればOO言語でも修正を加えたファイルだけを再コンパイルすればいいようにできたはず。もちろんデニス・リッチーがあの時代にそんなことを心配してくれていたはずもない。
133💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:34:27.08ID:6d+vv6Vz >>128
ねえねえ、同じ値のポインタを沢山用意するの?
ねえねえ、同じ値のポインタを沢山用意するの?
134デフォルトの名無しさん
2026/05/09(土) 12:46:27.64ID:Zy18Nh/Z135デフォルトの名無しさん
2026/05/09(土) 19:30:13.13ID:5Ty6Srkh voidポインタに加減算はやめたほうがいいです
136デフォルトの名無しさん
2026/05/09(土) 22:00:36.03ID:NBGqd586 a == (void*)&a;
の意味ほんとわからん
神がそう定めたからとしか説明できない
の意味ほんとわからん
神がそう定めたからとしか説明できない
137デフォルトの名無しさん
2026/05/09(土) 22:51:33.48ID:d0g52L0e138デフォルトの名無しさん
2026/05/09(土) 23:50:16.41ID:GVIVSwJQ139デフォルトの名無しさん
2026/05/10(日) 00:07:32.66ID:Y8y1B3+/ 変数のアドレスもコロコロ変わるものなんだよ
知らなかったの?
知らなかったの?
140デフォルトの名無しさん
2026/05/10(日) 00:27:13.35ID:4u5Uf5a6 移動式GCをしない限り
変数のアドレスはその有効期間ずっと変わらない
変数のアドレスはその有効期間ずっと変わらない
141デフォルトの名無しさん
2026/05/10(日) 00:47:42.91ID:5QP6GCUy 変数名は特定の番地につけられた名前の印象
スタックに置かれたローカル変数などは別だけど
スタックに置かれたローカル変数などは別だけど
142デフォルトの名無しさん
2026/05/10(日) 00:48:54.60ID:tUpLoUZY 変数と変数名は
143デフォルトの名無しさん
2026/05/10(日) 00:50:36.84ID:tUpLoUZY ごめんなさい
途中で投稿してしまいました
変数というとかなり曖昧で、住所不定にも思える
途中で投稿してしまいました
変数というとかなり曖昧で、住所不定にも思える
144デフォルトの名無しさん
2026/05/10(日) 00:51:18.70ID:9aOTzBVn >>141
スタック上の変数は相対アドレスとして不変
スタック上の変数は相対アドレスとして不変
145デフォルトの名無しさん
2026/05/10(日) 00:54:05.85ID:tUpLoUZY146デフォルトの名無しさん
2026/05/10(日) 02:42:12.60ID:9aOTzBVn147💾キモじじい ◆Rn9d66GbJRuf
2026/05/10(日) 02:51:10.90ID:M7hm4HsA sp相対がアドレスでないと思うのなんで?
148💾キモじじい ◆Rn9d66GbJRuf
2026/05/10(日) 02:55:10.43ID:M7hm4HsA 関数が呼び出された瞬間に積まれるスタックフレーム内にスタックポインタからの相対アドレスとしてアクセスするんでしょ?それが「変数=アドレス」でないと思う人いるの?
149デフォルトの名無しさん
2026/05/10(日) 03:35:00.53ID:sR74bWY+ C言語の言語仕様で定義されてないものは、動いているシステムで
たまたまそう実装されているだけ
register宣言された変数のアドレスはどうなるんだ?
最近の賢いコンパイラならregister宣言がなくてもレジスタに割り当てる
ことができる変数ならレジスタを使うだろう
変数=アドレスなんて馬鹿な考えはさっさと捨てましょう
たまたまそう実装されているだけ
register宣言された変数のアドレスはどうなるんだ?
最近の賢いコンパイラならregister宣言がなくてもレジスタに割り当てる
ことができる変数ならレジスタを使うだろう
変数=アドレスなんて馬鹿な考えはさっさと捨てましょう
150デフォルトの名無しさん
2026/05/10(日) 03:53:01.14ID:sR74bWY+ そもそもC言語の仕様にスタックなんて概念はない
151デフォルトの名無しさん
2026/05/10(日) 03:53:04.56ID:O5xWWWft 変数はアドレスで合ってる
一時的な変数で他からアクセスされない条件ならば
一度もメモリに戻すことなくレジスタ上だけで済ませられるだけの話
一時的な変数で他からアクセスされない条件ならば
一度もメモリに戻すことなくレジスタ上だけで済ませられるだけの話
152💾キモじじい ◆Rn9d66GbJRuf
2026/05/10(日) 03:57:38.46ID:M7hm4HsA でもフォン・ノイマン・アーキテクチャ以外にC言語ってあるの?データフローってなにでプログラム書くの?
153デフォルトの名無しさん
2026/05/10(日) 04:27:47.24ID:sR74bWY+ コンパイラがローカル変数をスタックに置くことが多いのは手軽で便利で速いからそうしているだけ
ヒープに置いて管理する実装があったとしても問題ない
そもそもIBMの往年のSystem370とかだとハードがサポートするスタックが存在しないが
それにもGCCが移植されているらしい
ヒープに置いて管理する実装があったとしても問題ない
そもそもIBMの往年のSystem370とかだとハードがサポートするスタックが存在しないが
それにもGCCが移植されているらしい
154デフォルトの名無しさん
2026/05/10(日) 04:36:43.44ID:y8TXZMUb スタックに置こうがビープに置こうがその変数の有効期間はアドレス固定で変わることがない
155デフォルトの名無しさん
2026/05/10(日) 11:42:51.73ID:fh8OS9ra156デフォルトの名無しさん
2026/05/10(日) 11:59:15.79ID:sdPo2w2T157デフォルトの名無しさん
2026/05/10(日) 12:14:31.88ID:chag2lR2158デフォルトの名無しさん
2026/05/10(日) 13:11:27.35ID:xEIKXTky159デフォルトの名無しさん
2026/05/10(日) 13:18:01.25ID:QSOcTc++ ポインタなんてメモリに格納されている数値がアドレスかどうかの話だけなのに
160デフォルトの名無しさん
2026/05/10(日) 13:20:44.26ID:LDF9Hgbz 馬鹿しかいない
161デフォルトの名無しさん
2026/05/10(日) 14:43:32.67ID:kzIu4TAJ 『変数のアドレスは途中で変わらない』
という常識を知らない人はコンパイラにアセンブリ出力させて見てみるといい
変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
実行中に変わることはない
という常識を知らない人はコンパイラにアセンブリ出力させて見てみるといい
変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
実行中に変わることはない
162デフォルトの名無しさん
2026/05/10(日) 14:48:25.63ID:ihfry+TW 自分で正当化してるところがキモい 5chで架空の像マウントが自分にとっての全てという姿勢が現実を生きていない
今時ハラスメントが当たり前みたいに言ってるやつは会社では絶滅してるのだが何十年も前に社会人だったという人間なのか
今時ハラスメントが当たり前みたいに言ってるやつは会社では絶滅してるのだが何十年も前に社会人だったという人間なのか
163デフォルトの名無しさん
2026/05/10(日) 14:54:20.33ID:4FzEqhBY >>137
Rustは最悪ですね判ります
Rustは最悪ですね判ります
164デフォルトの名無しさん
2026/05/10(日) 15:27:56.97ID:Jxl6VU1k >>161
>『変数のアドレスは途中で変わらない』
『変数の本質はアドレス』や『変数はアドレス』からかなり後退したなw
『変数のアドレスは途中で変わらない場合がある』なら間違ってないよww
>変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
必ずそうなるわけじゃないんだよ
>『変数のアドレスは途中で変わらない』
『変数の本質はアドレス』や『変数はアドレス』からかなり後退したなw
『変数のアドレスは途中で変わらない場合がある』なら間違ってないよww
>変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
必ずそうなるわけじゃないんだよ
165デフォルトの名無しさん
2026/05/10(日) 18:13:31.79ID:q1uqJAP4 変数のアドレスは変わらない発言の件
私は正しいと思っている者ですが何を絡まれているのかがちょっとよく分からない。話題の次元が合ってない?
グローバル変数なら特定の絶対アドレスを対象に値を格納・取得する
ローカル変数なら呼ばれた関数用に確保されたスタックフレーム上の特定のオフセットアドレスを対象に値を格納・取得する(アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます)
int変数ならintの値を、int*変数ならポインタ値を、特定のアドレスを対象に格納・取得。
Cのコードを翻訳した時に、これらの動作となる機械コードが出力されると思ってます。
一方、アドレスが途中で変わると言う主張は私には例がイメージができないです、、、
私は正しいと思っている者ですが何を絡まれているのかがちょっとよく分からない。話題の次元が合ってない?
グローバル変数なら特定の絶対アドレスを対象に値を格納・取得する
ローカル変数なら呼ばれた関数用に確保されたスタックフレーム上の特定のオフセットアドレスを対象に値を格納・取得する(アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます)
int変数ならintの値を、int*変数ならポインタ値を、特定のアドレスを対象に格納・取得。
Cのコードを翻訳した時に、これらの動作となる機械コードが出力されると思ってます。
一方、アドレスが途中で変わると言う主張は私には例がイメージができないです、、、
166デフォルトの名無しさん
2026/05/10(日) 18:36:26.64ID:7nKR88AY >>165
>アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます
今回の議論の中心は「変数とはアドレスのこと」かどうかですよ
アドレスを必要としない変数があるということは「変数とはアドレスのことではない」という結論には同意済みなんですかね?
>アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます
今回の議論の中心は「変数とはアドレスのこと」かどうかですよ
アドレスを必要としない変数があるということは「変数とはアドレスのことではない」という結論には同意済みなんですかね?
167デフォルトの名無しさん
2026/05/10(日) 19:04:31.76ID:q1uqJAP4 ここまでの議論はレジスタ変数の言及ではないと思っているので(質の悪い質問に対する質の悪いAI回答のように)同意はできませんね
168デフォルトの名無しさん
2026/05/10(日) 19:12:32.76ID:gKBzqDxA169デフォルトの名無しさん
2026/05/10(日) 19:17:20.48ID:q1uqJAP4 >>166はレジスタ変数の事をどう思ってるの
170デフォルトの名無しさん
2026/05/10(日) 20:58:48.74ID:sdPo2w2T アドレスを変動させる仕組みASLR
このせいで変数の配置場所がコロコロ変わる
変わってもOSが変わった場所を覚えてくれるので、ソフトはそれを考慮せずポインタで扱える
が、アドレスは明確に変動しているのだ
馬鹿がポインタ=アドレス=変数は不変と勘違いしている
このせいで変数の配置場所がコロコロ変わる
変わってもOSが変わった場所を覚えてくれるので、ソフトはそれを考慮せずポインタで扱える
が、アドレスは明確に変動しているのだ
馬鹿がポインタ=アドレス=変数は不変と勘違いしている
171デフォルトの名無しさん
2026/05/10(日) 21:05:39.60ID:sdPo2w2T 他のアプリが割り込んだためにページングファイルに退避され
また戻った時に同じメモリ空間に戻されるわけもなく
絶対アドレスで指定したらおかしくなるわな
マイコンやってるならそう思ってもいいが
絶対アドレスでアクセスしていいならわざわざポインタも変数も使わず直接メモリ叩けばよいが
そんな時代ではない
また戻った時に同じメモリ空間に戻されるわけもなく
絶対アドレスで指定したらおかしくなるわな
マイコンやってるならそう思ってもいいが
絶対アドレスでアクセスしていいならわざわざポインタも変数も使わず直接メモリ叩けばよいが
そんな時代ではない
172デフォルトの名無しさん
2026/05/10(日) 22:38:55.27ID:bhoD44N2 おもしろい議論してるねぇ。
論理アドレスと物理アドレス(メモリやレジスタやネットワーク上のストレージなど)を考えるなら、
変数の論理アドレスは変わらないが物理アドレスは動的かもしれない。
そのC言語は、必ずしも物理マシン上だけに実装されているとは限らない。みたことないけど。
C言語が扱っているのは、そのC言語実装上の論理アドレスでしょう。
ちょっと、粘菌でできたCPUとメモリを考えてみたい。論理アドレスを維持できるのだろうか。
論理アドレスと物理アドレス(メモリやレジスタやネットワーク上のストレージなど)を考えるなら、
変数の論理アドレスは変わらないが物理アドレスは動的かもしれない。
そのC言語は、必ずしも物理マシン上だけに実装されているとは限らない。みたことないけど。
C言語が扱っているのは、そのC言語実装上の論理アドレスでしょう。
ちょっと、粘菌でできたCPUとメモリを考えてみたい。論理アドレスを維持できるのだろうか。
173デフォルトの名無しさん
2026/05/10(日) 23:26:59.52ID:q1uqJAP4 >>170-171
OSが行うスワップイン・アウトなどで物理アドレスは変わるかもしれないけど論理アドレスは変わらないからC言語コードからは気にする必要ないよ
変数の論理アドレスは不変だ、変数を参照するポインタが扱うのは論理アドレスだからその点安心して使ってね
どちらかといえばローカル変数のアドレスを戻り値として返さない(関数終了時に変数は消滅するから)とかを気をつけてね
しかしASLRなんて技術があるんだね、すごいね。気にしたことがなかった
OSが行うスワップイン・アウトなどで物理アドレスは変わるかもしれないけど論理アドレスは変わらないからC言語コードからは気にする必要ないよ
変数の論理アドレスは不変だ、変数を参照するポインタが扱うのは論理アドレスだからその点安心して使ってね
どちらかといえばローカル変数のアドレスを戻り値として返さない(関数終了時に変数は消滅するから)とかを気をつけてね
しかしASLRなんて技術があるんだね、すごいね。気にしたことがなかった
174デフォルトの名無しさん
2026/05/10(日) 23:31:10.52ID:DGXyzFW8175デフォルトの名無しさん
2026/05/10(日) 23:34:39.01ID:qr9klzI1 >>167
別にレジスタ変数じゃなくても対応するアドレスが存在しない変数なんていくらでもあるでしょ?
別にレジスタ変数じゃなくても対応するアドレスが存在しない変数なんていくらでもあるでしょ?
176デフォルトの名無しさん
2026/05/10(日) 23:53:28.28ID:C4KpyFRF >>175
変数には必ずアドレスがあることが保証される
だから&varnameで必ずアドレスを得られる
その上で、アドレスが使われていない場合、もしくは、最適化でアドレスが最終的に必要とされない場合、
メモリ上に置かれずにレジスタ上だけで済まるなどしてもよい自由も保証される
変数には必ずアドレスがあることが保証される
だから&varnameで必ずアドレスを得られる
その上で、アドレスが使われていない場合、もしくは、最適化でアドレスが最終的に必要とされない場合、
メモリ上に置かれずにレジスタ上だけで済まるなどしてもよい自由も保証される
177デフォルトの名無しさん
2026/05/10(日) 23:57:59.61ID:bhoD44N2 粘菌CPUはジョークではないが、C言語って高級言語ではなく高級アセンブラ言語なのだから、
物理ソースに(直接)アクセスできなければ意味はない。
なんらかの一般的なOS上で使うC言語ならともかく、
組み込み用のC言語になると、物理的なハードにアクセスするので、
変数とかポインタとか実行コードとかの動作は自分で保証しないといけない。
物理ソースに(直接)アクセスできなければ意味はない。
なんらかの一般的なOS上で使うC言語ならともかく、
組み込み用のC言語になると、物理的なハードにアクセスするので、
変数とかポインタとか実行コードとかの動作は自分で保証しないといけない。
178デフォルトの名無しさん
2026/05/11(月) 00:31:42.27ID:WWe4evK5179デフォルトの名無しさん
2026/05/11(月) 00:59:12.70ID:2zfH/cwg180デフォルトの名無しさん
2026/05/11(月) 01:14:09.98ID:TDpg2Hvx >>179
変数の実行時のメモリアドレスは変わらない
実行途中で変化しない
だからこそ変数のアドレスをそのへんの配列や構造体その他にプログラムが勝手に保存してもよい
変数のアドレスは変わらないから後でそれを用いてもよい
もちろん関数内のstaticでない変数が関数を離脱すると無効になる件は本件とは独立した話として注意を要する
変数の実行時のメモリアドレスは変わらない
実行途中で変化しない
だからこそ変数のアドレスをそのへんの配列や構造体その他にプログラムが勝手に保存してもよい
変数のアドレスは変わらないから後でそれを用いてもよい
もちろん関数内のstaticでない変数が関数を離脱すると無効になる件は本件とは独立した話として注意を要する
181デフォルトの名無しさん
2026/05/11(月) 04:00:48.33ID:UHoXqmUk まとめるとこんな感じか
変数の有効期限内での変数のアドレスは原則として変更されない
ASLRはプロセス生成時にデータのアドレスをランダム化するだけで
変数の有効期限内でのアドレスは固定となる
ただしグローバル変数だとしてもvolatile宣言されてないものは
最適化により特定の部分でレジスタに割り当てられる可能性がある
仮想記憶で物理アドレスがかわることがあったとしても
プロセスから見える変数の有効期限内での論理アドレスは変更されない
変数の有効期限内での変数のアドレスは原則として変更されない
ASLRはプロセス生成時にデータのアドレスをランダム化するだけで
変数の有効期限内でのアドレスは固定となる
ただしグローバル変数だとしてもvolatile宣言されてないものは
最適化により特定の部分でレジスタに割り当てられる可能性がある
仮想記憶で物理アドレスがかわることがあったとしても
プロセスから見える変数の有効期限内での論理アドレスは変更されない
182デフォルトの名無しさん
2026/05/11(月) 11:51:04.96ID:83zRqP8M そういう理解の仕方はポインタのポインタでつまづくからやめれ
183デフォルトの名無しさん
2026/05/11(月) 12:22:54.77ID:BjPsWtVC わざとややこしくしてるヤツがいるなw
184デフォルトの名無しさん
2026/05/11(月) 13:48:36.16ID:VWseMxak 変数=アドレスっつってるやつだけが、自分の知ってる狭い世界だけ見て主張してるだけだからなぁ
マシン語もCも直接絶対アドレスを扱えてしまうんだから
いつのまにか物理アドレスと変数アドレスと分けて言いだして恥さらし
マシン語もCも直接絶対アドレスを扱えてしまうんだから
いつのまにか物理アドレスと変数アドレスと分けて言いだして恥さらし
185デフォルトの名無しさん
2026/05/11(月) 13:51:20.13ID:VWseMxak だからこそポインタという機能で、そういう危険な物理アドレス意識しないまま連続アドレスとして扱えるように工夫されてるのに、そういう土俵の上だけしか見えなくて、変数=アドレスなんか言ってるから間抜け
186デフォルトの名無しさん
2026/05/11(月) 15:19:04.32ID:ozjQEcPs187デフォルトの名無しさん
2026/05/11(月) 17:06:21.12ID:DaaryO5f >>184
メモリに格納されている値を数値、文字コード、メモリの番地として扱うかどうかはOSとプログラム次第の話だが、C言語とUNIXはOSの仕様が先にある話だ。
メモリに格納されている値を数値、文字コード、メモリの番地として扱うかどうかはOSとプログラム次第の話だが、C言語とUNIXはOSの仕様が先にある話だ。
188デフォルトの名無しさん
2026/05/11(月) 17:51:52.74ID:VWseMxak C言語はUNIX専用でも何でもないけど?
PC-88や98 DOS/Vやwinやマイコンで使われてる
PC-88や98 DOS/Vやwinやマイコンで使われてる
189デフォルトの名無しさん
2026/05/11(月) 18:00:30.99ID:Ox4sgKHR >>188
C言語のこと何もわかってねえな
C言語のこと何もわかってねえな
190デフォルトの名無しさん
2026/05/11(月) 21:30:26.39ID:Nzb6NYIT >>185
間違ってる
ポインタにそんな機能はない
それはOSの役目
仮想アドレス空間も持つOS環境ではそこで動くユーザプロセスは仮想アドレスのみで動く
物理アドレスを知ることもできず物理アドレスを意識することさえない
そこには仮想アドレスしかない
変数も仮想アドレスしか持たない
間違ってる
ポインタにそんな機能はない
それはOSの役目
仮想アドレス空間も持つOS環境ではそこで動くユーザプロセスは仮想アドレスのみで動く
物理アドレスを知ることもできず物理アドレスを意識することさえない
そこには仮想アドレスしかない
変数も仮想アドレスしか持たない
191デフォルトの名無しさん
2026/05/11(月) 21:51:14.45ID:+fatS4qB 頭悪そう
ポインタのポインタってのがある時点で、変数の場所のアドレスが変わることを示してるってのに
ポインタのポインタってのがある時点で、変数の場所のアドレスが変わることを示してるってのに
192デフォルトの名無しさん
2026/05/11(月) 22:37:13.63ID:EsnJ0dnK ポインタのポインタのポインタのポインタのポインタのポインタ
193デフォルトの名無しさん
2026/05/11(月) 23:13:01.37ID:a+RXV+Ng194デフォルトの名無しさん
2026/05/11(月) 23:18:24.37ID:MKuUSvDq 愉快犯に付き合うのは時間を浪費するだけ
195デフォルトの名無しさん
2026/05/11(月) 23:56:02.44ID:Gifj3ORT ポインタ自体も変数だ
何かのアドレスを保持する変数
ポインタのポインタはその変数(ポインタ)のアドレスを保持する変数
何かのアドレスを保持する変数
ポインタのポインタはその変数(ポインタ)のアドレスを保持する変数
196デフォルトの名無しさん
2026/05/12(火) 02:08:36.16ID:pJQZEhk+ 時間の無駄
197デフォルトの名無しさん
2026/05/12(火) 12:05:15.78ID:hVHmjsCD AIに、変数=アドレスですかって聞いてみなw
198デフォルトの名無しさん
2026/05/12(火) 15:18:18.19ID:k3W0pFRt 機械科のCの授業のテキストが要点をまとめたようなスライドで、それをノートに取って、演習をやるんだけどAIに聞かないと正解率がゼロとか15問中1とか。テストでできる気がしない。ダブルポインタでのlinked listの書き換えとか、関数のポインタを引数に渡すあたり。AIがなかった頃はみんな授業で理解してたのかな
199デフォルトの名無しさん
2026/05/12(火) 16:25:48.58ID:v7lo+dU+ C言語の要素だけで考えてるからパズルになる
メモリイメージを把握してたらなんてことはない
逆に言うとそういう感覚がないなら活用できないし危険
機械科ならさわりでいいからマシン語もいっしょに学習してみては
メモリイメージを把握してたらなんてことはない
逆に言うとそういう感覚がないなら活用できないし危険
機械科ならさわりでいいからマシン語もいっしょに学習してみては
200デフォルトの名無しさん
2026/05/12(火) 16:37:52.48ID:CQESEVeb ノート取るよりもコード書いて動かす方がよさそうだけど
201デフォルトの名無しさん
2026/05/12(火) 18:51:32.24ID:z/Qt2SIu >>198
>ダブルポインタでのlinked listの書き換えとか、関数のポインタを引数に渡すあたり
前者は文法覚えたての初級者ができなくても全然問題ないが
後者は基礎なのでできないとまずい
高校ならともかく大学の話なら授業だけで理解できると思うのは間違い
一般的に偏差値の高い大学ほどその傾向が強い
>ダブルポインタでのlinked listの書き換えとか、関数のポインタを引数に渡すあたり
前者は文法覚えたての初級者ができなくても全然問題ないが
後者は基礎なのでできないとまずい
高校ならともかく大学の話なら授業だけで理解できると思うのは間違い
一般的に偏差値の高い大学ほどその傾向が強い
202デフォルトの名無しさん
2026/05/12(火) 19:45:58.38ID:UKUkkRNH *p … ポインタ
**p … ポポインタ
***p … ポポポインタ
**p … ポポインタ
***p … ポポポインタ
203デフォルトの名無しさん
2026/05/12(火) 20:33:17.59ID:hVHmjsCD ボインと命名すればよかったのに
204デフォルトの名無しさん
2026/05/13(水) 00:09:38.39ID:gffYywze >>198
main関数のargvも実質ダブルポインタでchar *argv[]ではなくchar **argvとも書ける
K&R本の図がわかりやすかった思い出
https://imgur.com/a/l2qqJXK
先生やAIがいい図を描いてくれればいいんだけど
main関数のargvも実質ダブルポインタでchar *argv[]ではなくchar **argvとも書ける
K&R本の図がわかりやすかった思い出
https://imgur.com/a/l2qqJXK
先生やAIがいい図を描いてくれればいいんだけど
205デフォルトの名無しさん
2026/05/13(水) 09:40:14.84ID:gV574Y85 K&RはまさにCを設計した人の本ですね。アマゾンで見たら書評のpros & conがすごい極端。理解できるかどうかわからないけどkindleで1500円くらいで買えるので買ってみるです。ありがとうございます
206デフォルトの名無しさん
2026/05/13(水) 11:58:22.99ID://o0RJ80 学習本を買うならできるなら実物を見ながら検討した方がいい
自分が理解している事、自分がわからない事を説明してあるページを見て
自分に合う本なのか確認すべし
大昔なら柴田望洋の本を買っておけば大体間違いなしという感じだったが
今はどうなのか知らない
自分が理解している事、自分がわからない事を説明してあるページを見て
自分に合う本なのか確認すべし
大昔なら柴田望洋の本を買っておけば大体間違いなしという感じだったが
今はどうなのか知らない
207デフォルトの名無しさん
2026/05/13(水) 20:38:40.01ID:UpUyi1rI >>205
ANSI Cが基本だ。
ANSI Cが基本だ。
208デフォルトの名無しさん
2026/05/13(水) 20:46:57.06ID:o9u5JvGB 歳とると思い込みがコントロールできなくなるよね
205はそもそも2ndでしょ
205はそもそも2ndでしょ
209デフォルトの名無しさん
2026/05/14(木) 09:07:53.43ID:XV0UuxkJ 「ダブルポインタ」だれが言い始めたのか知らんがこの用語を使う香具師は判ってない香具師
判ってる香具師は正しくポインタノポインタと言う
判ってる香具師は正しくポインタノポインタと言う
210💾キモじじい ◆Rn9d66GbJRuf
2026/05/14(木) 09:14:42.55ID:wRuFTQJM211デフォルトの名無しさん
2026/05/14(木) 20:47:39.32ID:Zqzv4ota >>209
それは本当にそう
C言語でウンザリすることベスト10に入る
・ダブルポインタと言い出す初心者
・ポインタの説明記事を書いちゃう初心者
・ポインタと配列を混同する初心者
:
それは本当にそう
C言語でウンザリすることベスト10に入る
・ダブルポインタと言い出す初心者
・ポインタの説明記事を書いちゃう初心者
・ポインタと配列を混同する初心者
:
212デフォルトの名無しさん
2026/05/14(木) 21:19:23.94ID:xRz71k34 元はといえばC言語の仕様が悪い
Rustなら
・生ポインタと参照の区別がある
・配列は静的固定サイズNを伴った型
・スライスは動的サイズを伴った型
なので
例えば文字列の配列への参照なら&[&str; N]型
文字列のスライスへの参照なら&[&str]型
それらの要素一つへの参照なら&&str型
これらがCでは**char型などに縮退されてしまうのが辛い
Rustなら
・生ポインタと参照の区別がある
・配列は静的固定サイズNを伴った型
・スライスは動的サイズを伴った型
なので
例えば文字列の配列への参照なら&[&str; N]型
文字列のスライスへの参照なら&[&str]型
それらの要素一つへの参照なら&&str型
これらがCでは**char型などに縮退されてしまうのが辛い
213デフォルトの名無しさん
2026/05/14(木) 22:09:20.90ID:Y81e4q3P typedefやマクロ活用すれば分かりやすくはなるけど
型の互換があればそのままやりとりできるし
書けちゃうのがよくないってことだよね
でも16ビット機で開発できる高級アセンブラと考えたら十分かな
複雑なことはC++でという流れだし
型の互換があればそのままやりとりできるし
書けちゃうのがよくないってことだよね
でも16ビット機で開発できる高級アセンブラと考えたら十分かな
複雑なことはC++でという流れだし
214デフォルトの名無しさん
2026/05/14(木) 22:32:39.76ID:J0/3AA29 >>211
それはC言語の初心者にうんざりさせられることワースト10
それはC言語の初心者にうんざりさせられることワースト10
215デフォルトの名無しさん
2026/05/14(木) 23:04:30.23ID:nVJjyR+X ダブルポインタって英語圏で確立された用語が輸入されただけやで
MITやスタンフォードのCS講義でも普通に使われてるんだがお前ら大丈夫か?
MITやスタンフォードのCS講義でも普通に使われてるんだがお前ら大丈夫か?
216デフォルトの名無しさん
2026/05/15(金) 08:34:22.66ID:SE3UM+4l C言語でうんざりさせられる所
1. 宣言
void (*f[10])(int);
void (*f)(int)[10];
2. プリプロセッサ
馬鹿な使い方をすれば混乱の極み
3. 実装依存
f1() + f2()
関数内部で同じグローバル変数を使ってたりすると...
1. 宣言
void (*f[10])(int);
void (*f)(int)[10];
2. プリプロセッサ
馬鹿な使い方をすれば混乱の極み
3. 実装依存
f1() + f2()
関数内部で同じグローバル変数を使ってたりすると...
217デフォルトの名無しさん
2026/05/15(金) 08:45:19.72ID:SE3UM+4l ああ、間違えているw
218デフォルトの名無しさん
2026/05/15(金) 11:40:01.76ID:0MfJ9N7a C言語の設計が悪いんじゃなくて、C言語を教える時にコンピュータについて教えないのが悪いだけ
C言語は隠ぺいしてないだけだよ
C言語は隠ぺいしてないだけだよ
219デフォルトの名無しさん
2026/05/15(金) 12:01:03.50ID:0MfJ9N7a220デフォルトの名無しさん
2026/05/15(金) 12:01:49.61ID:0MfJ9N7a221デフォルトの名無しさん
2026/05/15(金) 22:58:48.13ID:0bPGiVOv 柴田望洋ってまだ生きてるの?
222💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/16(土) 03:41:14.36ID:dNhOVJjS223デフォルトの名無しさん
2026/05/16(土) 04:15:01.15ID:OxkUY+FM Cの本はK&RとCプログラミング専門課程しか覚えてない
224デフォルトの名無しさん
2026/05/16(土) 08:50:26.09ID:gpo9RdSK 自分はANSI C(C89)が最新の時期にK&R2ndその他を手に取り、その後の追加仕様はWebで補給する形を取っている
今新規で学ぶ人はどのような学習スタイルが最適なのだろう。最新C(C23)をカバーしながら言語自体と適用例を学べる本って無さそうだし、Webだけで学ぶのは常に資料が変容するイメージがあって学習達成感を得にくいと思うんだ
今新規で学ぶ人はどのような学習スタイルが最適なのだろう。最新C(C23)をカバーしながら言語自体と適用例を学べる本って無さそうだし、Webだけで学ぶのは常に資料が変容するイメージがあって学習達成感を得にくいと思うんだ
225デフォルトの名無しさん
2026/05/16(土) 09:08:17.04ID:M0okmgCq 機械語やってるとCは処理系の説明書だけで十分
226デフォルトの名無しさん
2026/05/16(土) 09:09:06.52ID:ice6SjA9 C言語なんか、アセンブラをラップするだけの言語なんだから、設計も糞も無いだろ
227デフォルトの名無しさん
2026/05/16(土) 11:03:25.86ID:9v1K/5l7 馬鹿ってそう感じてたのか
228デフォルトの名無しさん
2026/05/16(土) 13:03:51.17ID:DqJBhPbG Cで脆弱性だらけのプログラムを書くやつが多いのはK&Rのせい
今では非推奨の書き方も多用されてるから新規で学ぶ人用の本ではない
歴史的書物として経験者が読むもの
今では非推奨の書き方も多用されてるから新規で学ぶ人用の本ではない
歴史的書物として経験者が読むもの
229デフォルトの名無しさん
2026/05/16(土) 14:05:26.82ID:JbTEwvtj 今となっては特殊組み込み以外はC使わずにRustがいいよ
230デフォルトの名無しさん
2026/05/16(土) 15:55:48.45ID:D4Up5ilO カニ飯リッチ
231デフォルトの名無しさん
2026/05/16(土) 21:09:13.89ID:l+TnFtsR Cは文法が糞
ザイログ形式のニモニックのまま高級言語化してほしい
ザイログ形式のニモニックのまま高級言語化してほしい
232デフォルトの名無しさん
2026/05/17(日) 00:21:38.18ID:sZl86DxD >>231
76H
76H
233デフォルトの名無しさん
2026/05/17(日) 08:15:32.05ID:hzDNIoZ4 なぜかC9H(Ret)だけ覚えてる
初見の関数どこで関数が終るのか目星をつけるのは今でも変わらないね
初見の関数どこで関数が終るのか目星をつけるのは今でも変わらないね
234💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/18(月) 03:58:06.70ID:X5sfaAzO 🎯👈👈👈👈👈
🤜💥ABC💯🌴
↑PCG: Programmable
🤜💥ABC💯🌴
↑PCG: Programmable
235💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/18(月) 04:00:32.21ID:X5sfaAzO 🎯👈👈👈👈👈
🤜💥ABC💯🌴
↑PCG: Programmable Character Generator
↑by X1シリーズ
🤜💥ABC💯🌴
↑PCG: Programmable Character Generator
↑by X1シリーズ
236デフォルトの名無しさん
2026/05/18(月) 11:26:46.08ID:5A1Ebijf237デフォルトの名無しさん
2026/05/18(月) 12:01:12.39ID:jQf+jbSy voidさんの本か
読んでみたいような読みたくないような
読んでみたいような読みたくないような
238デフォルトの名無しさん
2026/05/18(月) 21:43:34.88ID:GU18Es67 止めとけ
本がでた頃に2chに本人がきたけど本の内容酷評されたりおちょくられたりで撃退されてたw
本がでた頃に2chに本人がきたけど本の内容酷評されたりおちょくられたりで撃退されてたw
239デフォルトの名無しさん
2026/05/18(月) 22:44:51.38ID:3S4Q09d6 1. Effective C
2. Modern C
3. SEI CERT C Coding Standard
Effective Cは第2版がModern Cは第3版が出てる
SEI CERT C Coding StandardはWebで読める
2. Modern C
3. SEI CERT C Coding Standard
Effective Cは第2版がModern Cは第3版が出てる
SEI CERT C Coding StandardはWebで読める
240デフォルトの名無しさん
2026/05/18(月) 23:47:15.86ID:zqbhNErD おすすめ情報元紹介ありがとうございます。
英語文献はブラウザで翻訳できるところは読むようになりました。洋書を読む方は自分で翻訳ですか、すごいですね、、、
英語文献はブラウザで翻訳できるところは読むようになりました。洋書を読む方は自分で翻訳ですか、すごいですね、、、
241デフォルトの名無しさん
2026/05/20(水) 00:32:16.01ID:K4ijhElN 俺はCをやるにあたって「はじめての8086」を読めと言われた
「はじめての486」も併せて買ったけど積ん読した
「はじめての486」も併せて買ったけど積ん読した
242デフォルトの名無しさん
2026/05/20(水) 00:39:25.62ID:7EfSCYUZ 6502がいちばんおもしろかったなぁ。
243デフォルトの名無しさん
2026/05/20(水) 00:45:15.30ID:iGvoShit 初めて読むマシン語、8086、486ナツカシス
244💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/20(水) 01:23:44.91ID:aoS52wMR 4004で電卓戦争やってた人いますか?
245デフォルトの名無しさん
2026/05/20(水) 10:35:47.92ID:VmWwNsDH246デフォルトの名無しさん
2026/05/20(水) 21:23:12.52ID:Z0u59BFL >>242
だがCをインプリメントするとしたら最悪なCPUだよなあ
だがCをインプリメントするとしたら最悪なCPUだよなあ
247デフォルトの名無しさん
2026/05/20(水) 21:45:21.76ID:ZgHSF/QP >>246
ゼロページが変数として使える最強やないか
ゼロページが変数として使える最強やないか
248デフォルトの名無しさん
2026/05/23(土) 13:44:55.22ID:ULl5YR4s 09良いよね
http://www.st.rim.or.jp/~nkomatsu/mc680x/MC6809.html
http://www.st.rim.or.jp/~nkomatsu/mc680x/MC6809.html
249デフォルトの名無しさん
2026/05/23(土) 19:04:49.27ID:p40Ic9M9 ざいろぐちゃん
もすちゃん
もとらちゃん
もすちゃん
もとらちゃん
250デフォルトの名無しさん
2026/05/23(土) 21:41:01.42ID:skqHV7XZ Abstract Data type(ADT)を使ってstackとqueueを、固定長配列、動的配列、linked listで書く演習をやっている。逆ポーランド記法の電卓とか括弧の対応が正しいかというやつ。コードを読めば一応わかるけど一から書けといわれたら無理。stackとqueueは3種類の方法で自在に書けないと試験合格は難しいらしい。もう、6パターンまる覚えするためにひたすら書いているけどいちいちmakeするのが面倒くさい。
来週からはビット演算。そのあとI/Oと標準/数学ライブラリとやって、これでCは一旦終わり。後期からはアセンブラ。どんどん難しくなるんだけど方向性が情報系とは逆な気がする。あっちはあっちで大変そうだけど。
来週からはビット演算。そのあとI/Oと標準/数学ライブラリとやって、これでCは一旦終わり。後期からはアセンブラ。どんどん難しくなるんだけど方向性が情報系とは逆な気がする。あっちはあっちで大変そうだけど。
251デフォルトの名無しさん
2026/05/23(土) 21:57:34.46ID:TIyii4ui へー、高度なことやってるねー。MIT系の教科書かなぁ。
252デフォルトの名無しさん
2026/05/23(土) 22:13:45.25ID:fvZ+wgIe なんか80年代の教育内容だね
Secure Codingについては学んでるんだろうか
Secure Codingについては学んでるんだろうか
253デフォルトの名無しさん
2026/05/23(土) 23:18:15.41ID:YY7E06NG Securityについては、interface(ヘッダ)とimplematation(.cの実体)を使って、high cohesionとlow couplingを意識しろくらいことしか学んでないです。もっと高度なやり方があるんだと思いますが、今のところ応用まで手が出ないです。。。
254デフォルトの名無しさん
2026/05/23(土) 23:29:27.66ID:j4Q0q/xv それはまあCの普通の書き方というか昔々からのよくある設計の方針みたいな話で、セキュアコーディングとは何ら関係ない
本質的にはCに限った話でもないし、もっと言えばその回答は何も言ってないのと同じくらい内容がない
大体ヘッダとソース使ってってCならそらそうだろw
本質的にはCに限った話でもないし、もっと言えばその回答は何も言ってないのと同じくらい内容がない
大体ヘッダとソース使ってってCならそらそうだろw
255デフォルトの名無しさん
2026/05/23(土) 23:41:36.02ID:mQjs53zr セキュアコーディングという私の知らない概念かあるんですね。これから習う内容に入っていれば良いんだけど
256デフォルトの名無しさん
2026/05/23(土) 23:46:06.27ID:gde19rTM メモリを直接操作できる故の話よね
いうてOSやマシン語の知見も必要だし人間が気をつけるにも限界があるから
現実的にはコンパイラや周辺ツールを活用するのが常套(いまならAIもある)
体系だって学ぶ以上に指摘くらって得るものが大きい
いうてOSやマシン語の知見も必要だし人間が気をつけるにも限界があるから
現実的にはコンパイラや周辺ツールを活用するのが常套(いまならAIもある)
体系だって学ぶ以上に指摘くらって得るものが大きい
257💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/23(土) 23:52:28.24ID:cAwIaPoW 構造体型のtypedef宣言とそれを操作する関数のプロトタイプ群をヘッダで宣言してエクスポートする。実体はソースに書く。継承なしのカプセル化であり「データ抽象化」と呼ばれるものである。
258デフォルトの名無しさん
2026/05/23(土) 23:54:43.44ID:CG4aH5xK error handlingて項目が今後の項目にあった。assert.hやsignal.hなど。これがセキュアコーディングの入り口かな? 今はここまで手を広げられないけど
259デフォルトの名無しさん
2026/05/24(日) 00:04:44.66ID:tzxvC/3+ いまはいったん忘れていいよ
後期でアセンブラ着手しだしたら
毎日のようにある脆弱性のニュースと頭の中でつながるから
後期でアセンブラ着手しだしたら
毎日のようにある脆弱性のニュースと頭の中でつながるから
260デフォルトの名無しさん
2026/05/24(日) 00:10:43.42ID:PG7LhSHM >>257
ADTの前方宣言の構造体(incomplete)てやつですね。まさに写経中。freeするのがムズイ。別の関数でmallocしたのをきちんと順を追ってfreeしてやるのが難しい。意識せずにできなきゃいけないんだろうけど。パターンだからそのうち覚えられるかなあ
ADTの前方宣言の構造体(incomplete)てやつですね。まさに写経中。freeするのがムズイ。別の関数でmallocしたのをきちんと順を追ってfreeしてやるのが難しい。意識せずにできなきゃいけないんだろうけど。パターンだからそのうち覚えられるかなあ
261デフォルトの名無しさん
2026/05/24(日) 00:33:21.14ID:YAn8aOoG 解放を忘れたり解放して場所を指したまま使ってしまったり人間はミスをする
特に複雑化して込み合ってくると見落としてミスる
だから現実にセキュリティホールなどが知らぬ間に生じて発見されて悪用されてきた
今はメモリ管理など含めた多くの問題の安全性を言語レベルで保証してくれるRust言語が登場したから移行できるなら移行すべきだけどね
特に複雑化して込み合ってくると見落としてミスる
だから現実にセキュリティホールなどが知らぬ間に生じて発見されて悪用されてきた
今はメモリ管理など含めた多くの問題の安全性を言語レベルで保証してくれるRust言語が登場したから移行できるなら移行すべきだけどね
262💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 01:53:35.07ID:fAG7NgfK >>260
異なる型の2つの構造体が相互にリンクを持ち合う時、そして俺の知る限りその時にのみ、構造体のタグによる前方参照が必要。
他は別にtypedefした構造体を普通の型としてインスタンスを宣言するだけ。newは芋蔓式に次から次へと下請けのnewを呼ぶだろうしdeleteも同様。
頑張れ。
異なる型の2つの構造体が相互にリンクを持ち合う時、そして俺の知る限りその時にのみ、構造体のタグによる前方参照が必要。
他は別にtypedefした構造体を普通の型としてインスタンスを宣言するだけ。newは芋蔓式に次から次へと下請けのnewを呼ぶだろうしdeleteも同様。
頑張れ。
263💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 02:31:18.42ID:fAG7NgfK ある構造体を型としてtypedefしようと思えば、もしそのメンバーとして別の構造体型が用いられていればその構造体型もその時点でtypedefされていなければならない。それをするためにはその別の構造体型のtypedefが行われている別のヘッダをインクルードするのが普通で、それは芋蔓式のインクルードになる。ヘッダの多重インクルード対策は簡単なので問題は起こらないと思う。
264💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 02:37:41.10ID:fAG7NgfK ていうかC++もそうでしょ?
265デフォルトの名無しさん
2026/05/24(日) 12:03:35.04ID:xUBIupda typedef struct { A a; } B;
typedef struct { int i; } A;
typedef struct { int i; } A;
266デフォルトの名無しさん
2026/05/24(日) 12:06:00.15ID:xUBIupda struct A_;
typedef struct { struct A_ a; } B;
typedef struct A_ A;
typedef struct { struct A_ a; } B;
typedef struct A_ A;
267デフォルトの名無しさん
2026/05/24(日) 13:09:36.52ID:s4jEs3HF268デフォルトの名無しさん
2026/05/24(日) 13:22:13.47ID:Qix84Ywx // とあるソース.c
#include "B.h" // Bを使いたい
┗#include "A.h" // BはAを使うのでB.h内部でA.hをインクルードする
#include "A.h" // すでにB.hのなかでA.hがインクルードされているのでインクルードガードにより重複よみこみされない
#include "B.h" // Bを使いたい
┗#include "A.h" // BはAを使うのでB.h内部でA.hをインクルードする
#include "A.h" // すでにB.hのなかでA.hがインクルードされているのでインクルードガードにより重複よみこみされない
269デフォルトの名無しさん
2026/05/24(日) 13:37:30.43ID:Qix84Ywx // 相互参照はインクルードでは対応できないで前方宣言する
struct B;
struct A { …, B *b, … };
struct B { …, A *a, … };
struct B;
struct A { …, B *b, … };
struct B { …, A *a, … };
270💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 13:46:03.43ID:fAG7NgfK こんな感じにできない?(うろ覚え)
typedef struct tag_1
{
struct tag_2* ptr2;
} Type1;
typedef struct tag_2
{
struct tag_1* ptr1;
} Type2;
typedef struct tag_1
{
struct tag_2* ptr2;
} Type1;
typedef struct tag_2
{
struct tag_1* ptr1;
} Type2;
271デフォルトの名無しさん
2026/05/24(日) 14:59:47.15ID:/jkmbLum オンラインのコンパイラでしか試してないけどC++も
class A { class B *b; };
class B { class A *a; };
みたいな記法は許容されてるな
Cはtypedefしないと毎回structが必要になるから省略できるC++とは標準スタイルが違いそう
class A { class B *b; };
class B { class A *a; };
みたいな記法は許容されてるな
Cはtypedefしないと毎回structが必要になるから省略できるC++とは標準スタイルが違いそう
272デフォルトの名無しさん
2026/05/24(日) 22:21:11.99ID:h/YQfM5+ C言語が難しいなんて思うやつは、C++を少しでも知ったら発狂して自殺しそうw
273デフォルトの名無しさん
2026/05/25(月) 09:43:47.28ID:a1IT/WC2 >>270
こういう書き方大っ嫌い
こういう書き方大っ嫌い
274デフォルトの名無しさん
2026/05/25(月) 12:27:59.47ID:ZVLpVWSF 後方参照を許さないC言語が時代遅れなことに気づかないとな
Cコンパイラしか提供されない組み込み環境なら仕方ないが
そうでないならC言語を今すぐ捨てるべきだ
Cコンパイラしか提供されない組み込み環境なら仕方ないが
そうでないならC言語を今すぐ捨てるべきだ
275デフォルトの名無しさん
2026/05/26(火) 19:02:11.19ID:4AYldPgi >>274
C言語はUNIX用のプログラミング言語なんだが?
C言語はUNIX用のプログラミング言語なんだが?
276デフォルトの名無しさん
2026/05/26(火) 22:23:22.62ID:/r0Ypo2p x 設計が悪い
o 設計がシンプル
o 設計がシンプル
277デフォルトの名無しさん
2026/05/26(火) 23:21:22.65ID:GWUdZZ4M 設計が悪いも何も、ポータブルなアセンプラとして計算機に寄り添う形で設計してあって、それは今も変わらないのでは
今となっては古いと言われればそうかもしれないけど、古いことは別に何も悪いことじゃない
今となっては古いと言われればそうかもしれないけど、古いことは別に何も悪いことじゃない
278デフォルトの名無しさん
2026/05/27(水) 08:17:35.98ID:08gSGm1k アセンブラはカッタルイからこんなん作ったよ
なレベルの言語に文句言ってもなぁ
なレベルの言語に文句言ってもなぁ
279デフォルトの名無しさん
2026/05/27(水) 09:54:13.42ID:sb5fUGY6 もともとのC言語はハードウェアの性能を100%出せることを前提に設計されているから
機種依存がわんさかとある言語
機種依存がわんさかとある言語
280デフォルトの名無しさん
2026/05/27(水) 10:10:20.11ID:088jDWOf >>279
UNIXの仕様を想定して作られたC言語は、別のOSでは前提条件が違っていて勝手にC言語を移植されて問題になった。
UNIXの仕様を想定して作られたC言語は、別のOSでは前提条件が違っていて勝手にC言語を移植されて問題になった。
281デフォルトの名無しさん
2026/05/27(水) 10:13:32.14ID:zw6fajFz アセンブラがかったるいからと言って
{とか
}とか
=>とか醜い表現使うなっての
{とか
}とか
=>とか醜い表現使うなっての
282デフォルトの名無しさん
2026/05/27(水) 11:03:05.79ID:sb5fUGY6 自分の知らないC言語のようだ
283デフォルトの名無しさん
2026/05/27(水) 11:13:41.19ID:vt0HUY+p #define begin {
#define end }
#define end }
284デフォルトの名無しさん
2026/05/27(水) 13:28:13.51ID:B9J/OP7Y ゲーッ。17章も参照のこと。
285デフォルトの名無しさん
2026/05/30(土) 01:28:49.19ID:Jsn+beB5 begin/endをdefineするのは懐かしいなぁ。
やったよねぇ、Pascal風の言語にしちゃうやつ。
おれはstructuerにfunction入れてsmalltalk風に使ってた。C++できる以前。
やったよねぇ、Pascal風の言語にしちゃうやつ。
おれはstructuerにfunction入れてsmalltalk風に使ってた。C++できる以前。
286デフォルトの名無しさん
2026/05/30(土) 07:01:10.70ID:m3T0RFG6 プリプロセッサの素晴らしく駄目な使い方だな
287デフォルトの名無しさん
2026/05/30(土) 09:48:01.35ID:XQCyRiRg288デフォルトの名無しさん
2026/05/30(土) 10:50:22.35ID:Jsn+beB5 pascal風の簡易DSLをヘッダーだけで作成して、
最上位の業務階層は、簡易DSLで保守。
pascal部隊もいたので。
最上位の業務階層は、簡易DSLで保守。
pascal部隊もいたので。
289デフォルトの名無しさん
2026/05/30(土) 11:01:27.30ID:Jsn+beB5 可読性の問題だよねぇ。C言語でも効率より可読性をとれば、わかりやすくはなる。
だけど高級アセンブラなので、効率がよく可読性の高い「設計と構築」が求められる。
だけど高級アセンブラなので、効率がよく可読性の高い「設計と構築」が求められる。
290デフォルトの名無しさん
2026/05/30(土) 11:10:01.49ID:Jsn+beB5 プリプリプロセッサを作らないならば、
プリプロセッサだけで効率と可読性を求める。
プリプロセッサだけで効率と可読性を求める。
291デフォルトの名無しさん
2026/05/30(土) 11:17:37.55ID:lVeD90kH ラダー回路が最高
292デフォルトの名無しさん
2026/05/30(土) 12:08:02.72ID:U80OJ//1 初期のC++がただのプリプロセッサだったというのは皮肉
293デフォルトの名無しさん
2026/05/30(土) 16:06:18.89ID:x3RS+DzD ポインタと配列の違いとかまあ微妙だわな。全部ポインタでええやろとは思う
294デフォルトの名無しさん
2026/05/30(土) 17:23:34.48ID:QKLBXZIC さらにポインタはintの使い方の一つという扱いで補って、あれアセンブラのままがシンプルでよかったかな?
295デフォルトの名無しさん
2026/05/30(土) 19:05:09.28ID:fcUvegOR intじゃ代替出来んわな
296デフォルトの名無しさん
2026/05/30(土) 19:22:21.90ID:QKLBXZIC ちょっと厳しかったですか
やっぱりポインタが持つ型というものは、生成コードに間接的にしか表れませんが偉大ですね
やっぱりポインタが持つ型というものは、生成コードに間接的にしか表れませんが偉大ですね
297デフォルトの名無しさん
2026/05/30(土) 20:00:52.87ID:OeNHKzAz まあunsigned charとかintとか設計悪いよな
i8 <- 8bit符号あり整数
u64 <- 64bit符号なし整数
な感じで、i8/i16/i32/i64、u8/u16/u32/u64、f32/f64とかでええやろ
ポインタ型も最初からpi8/pvoidみたいなの使えるようにしとけ
構造体やクラス(C++)もあるから*は必要だが
i8 <- 8bit符号あり整数
u64 <- 64bit符号なし整数
な感じで、i8/i16/i32/i64、u8/u16/u32/u64、f32/f64とかでええやろ
ポインタ型も最初からpi8/pvoidみたいなの使えるようにしとけ
構造体やクラス(C++)もあるから*は必要だが
298デフォルトの名無しさん
2026/05/30(土) 20:57:47.70ID:XFlMbqow >>297
C言語はUNIXを作るために作ったと何度、言われればわかるのか?
C言語はUNIXを作るために作ったと何度、言われればわかるのか?
299デフォルトの名無しさん
2026/05/30(土) 21:34:36.66ID:m3T0RFG6 メモリが56KBとかのマシンで作られた言語だからな
仕様なんて必要最低限しかない
仕様なんて必要最低限しかない
300デフォルトの名無しさん
2026/05/30(土) 21:53:42.53ID:m3T0RFG6 もともとの仕様な
301デフォルトの名無しさん
2026/05/30(土) 22:33:31.82ID:fcUvegOR こういう>>297みたいな「dmrより俺の方が分かってる」みたいな手合いって世界中にいるんだろうな
誰かのやった仕事に対して何十年も経った立場からキャンキャン吠えるとかそんな恥知らずなマネよく出来るなw
誰かのやった仕事に対して何十年も経った立場からキャンキャン吠えるとかそんな恥知らずなマネよく出来るなw
302デフォルトの名無しさん
2026/05/31(日) 00:13:03.27ID:A0lcmmAm 仕様の解釈に柔軟性を持たせたから今でも現役で残っているとも言える
303デフォルトの名無しさん
2026/05/31(日) 11:59:55.21ID:iw1445Th >ポインタ型も最初からpi8/pvoidみたいなの使えるようにしとけ
>構造体やクラス(C++)もあるから*は必要だが
矛盾してるな
構造体aのポインタをpaとするルールを入れろと言ってるようなもの
それなら*aと何も変わらん
>構造体やクラス(C++)もあるから*は必要だが
矛盾してるな
構造体aのポインタをpaとするルールを入れろと言ってるようなもの
それなら*aと何も変わらん
304デフォルトの名無しさん
2026/06/01(月) 05:02:59.72ID:nDSJqHbn 結局上流の仕様を深く考えられる俺たちがC言語設計しとけばだいぶ世の中変わったよなあって話だな
ポインタ一つとってもvoid*でポイドポインタにキャストできる利便性と引き換えに本来の型情報喪失っていう致命的なミスしてるしメモリバグの要因になってる
当時の人は何を思ったのやら
ポインタ一つとってもvoid*でポイドポインタにキャストできる利便性と引き換えに本来の型情報喪失っていう致命的なミスしてるしメモリバグの要因になってる
当時の人は何を思ったのやら
305デフォルトの名無しさん
2026/06/01(月) 07:31:28.81ID:HZwAN0EX だから、アセンブラ直接使いたくなかっただけだから
変数の型なんてレジスタの延長としか考えて無いんだよ
変数の型なんてレジスタの延長としか考えて無いんだよ
306デフォルトの名無しさん
2026/06/01(月) 07:36:06.85ID:RuL1T6Db Cコンパイラしかない組み込み環境でないのならC言語を今すぐ捨てろ
ちゃんとした強い型付け言語を使え
ちゃんとした強い型付け言語を使え
307デフォルトの名無しさん
2026/06/01(月) 08:28:53.94ID:Um4FaBea むかし某旧帝大の講義でヌルポインタを全ビットゼロのポインタのことだとか説明してるのを聴いたときは
所詮日本ってこの程度なんだなあとガッカリしたな
所詮日本ってこの程度なんだなあとガッカリしたな
308デフォルトの名無しさん
2026/06/01(月) 09:15:17.64ID:Y8Ze0X4r309デフォルトの名無しさん
2026/06/01(月) 09:28:24.03ID:UpLtcaM+310デフォルトの名無しさん
2026/06/01(月) 09:43:30.17ID:2Fig2KkG #define NULL ((void *)0)
だもんなあ
しかし、アドレス 0 が有効なアドレスであるシステムならまた違った値になっているだろう
だもんなあ
しかし、アドレス 0 が有効なアドレスであるシステムならまた違った値になっているだろう
311デフォルトの名無しさん
2026/06/01(月) 10:53:28.39ID:zavtC8M7 #define break exit(-1)
312デフォルトの名無しさん
2026/06/01(月) 12:41:39.70ID:z7Brjm4N >>306
Rustと以外でおすすめある?
Rustと以外でおすすめある?
313デフォルトの名無しさん
2026/06/01(月) 12:43:04.75ID:orNocmRO314デフォルトの名無しさん
2026/06/01(月) 12:45:46.65ID:Y/faLFgX CPUのアーキテクチャ次第だからヌルポは0じゃ無くて定義次第
315デフォルトの名無しさん
2026/06/01(月) 12:46:30.75ID:orNocmRO >>314
なるへそ
なるへそ
316デフォルトの名無しさん
2026/06/01(月) 13:08:32.64ID:Um4FaBea317デフォルトの名無しさん
2026/06/01(月) 13:15:11.22ID:Ud3VbC+T318デフォルトの名無しさん
2026/06/01(月) 13:29:41.12ID:Gju4oLNk319デフォルトの名無しさん
2026/06/01(月) 13:58:22.88ID:Ud3VbC+T >>318
C言語の規格書 ISO/IEC9899 にて
NULLポインタは値0と定められています
CPUアーキテクチャとは一切無関係です
プログラミング言語Cが定めているためどのCPUアーキテクチャにおいても同じ値0です
C言語の規格書 ISO/IEC9899 にて
NULLポインタは値0と定められています
CPUアーキテクチャとは一切無関係です
プログラミング言語Cが定めているためどのCPUアーキテクチャにおいても同じ値0です
320デフォルトの名無しさん
2026/06/01(月) 14:44:22.09ID:4HzhGRP/321デフォルトの名無しさん
2026/06/01(月) 15:00:03.91ID:1czkfGd6 ゼロ番地にアクセス出来ないとかモトローラ系とかディスってる?
322デフォルトの名無しさん
2026/06/01(月) 20:01:08.52ID:2Fig2KkG >>319
どのCの規格書だ?C89、C99、C11のドラフトっぽいもので確認すると
stddef.h の所で以下のように記述されている
The macros are
NULL
which expands to an implementation-defined null pointer constant; and ...
どのCの規格書だ?C89、C99、C11のドラフトっぽいもので確認すると
stddef.h の所で以下のように記述されている
The macros are
NULL
which expands to an implementation-defined null pointer constant; and ...
323322
2026/06/01(月) 20:29:11.18ID:2Fig2KkG すまぬ
C11の 6.3.2.3 Pointers の 3 に以下の詰があった
確かに 0、もしくは void * にキャストされた 0 だわ
An integer constant expression with the value 0, or such an expression cast to type
void *, is called a null pointer constant.
C11の 6.3.2.3 Pointers の 3 に以下の詰があった
確かに 0、もしくは void * にキャストされた 0 だわ
An integer constant expression with the value 0, or such an expression cast to type
void *, is called a null pointer constant.
324デフォルトの名無しさん
2026/06/01(月) 20:41:19.52ID:zG8I8hLe C11まだ導入してないな
C99には移行したけど
C99には移行したけど
325デフォルトの名無しさん
2026/06/01(月) 20:46:31.22ID:OMUIYmd4326デフォルトの名無しさん
2026/06/01(月) 20:50:25.71ID:A/7+PPzR >>325
数値0と定められている
数値0と定められている
327デフォルトの名無しさん
2026/06/01(月) 22:32:22.49ID:zavtC8M7 ほんまかいな!?
328デフォルトの名無しさん
2026/06/01(月) 22:49:47.77ID:2Fig2KkG >>325
ただのシンボルだという事は知らなかったわ
実装依存の話だが、仮想記憶のあるモダンOSならユーザーアドレス空間の0ページ目は潰しておいて
ページフォールトが発生するようにしているから、内部でもNULLは0にしているのがほとんどだろう
ただのシンボルだという事は知らなかったわ
実装依存の話だが、仮想記憶のあるモダンOSならユーザーアドレス空間の0ページ目は潰しておいて
ページフォールトが発生するようにしているから、内部でもNULLは0にしているのがほとんどだろう
329デフォルトの名無しさん
2026/06/01(月) 23:43:43.01ID:J16IyJIp null pointer constantとnull pointerは別のもの
330デフォルトの名無しさん
2026/06/02(火) 00:24:25.45ID:LrQcnY0k331デフォルトの名無しさん
2026/06/02(火) 02:23:41.62ID:mtjv5G02 整数0をnullポインタとするがnullポインタのビット表現は全ビット0とは限らない
となっているけど今現在nullポインタのビット表現が全0でない処理系は一つも存在しない
となっているけど今現在nullポインタのビット表現が全0でない処理系は一つも存在しない
332デフォルトの名無しさん
2026/06/02(火) 02:50:41.26ID:+gLw9u1V >>325
nullポインタの内部実装が全0以外の現在も使われているCPUを教えてくれまいか
nullポインタの内部実装が全0以外の現在も使われているCPUを教えてくれまいか
333デフォルトの名無しさん
2026/06/02(火) 09:18:16.49ID:G0ij1AX5 ポインタをメタ情報+アドレス(いわゆるfat pointer)で表現する系とか想定してそう
メタ情報は型IDとかサイズを保持してvoid *だとメタ情報も含めて0になる
メタ情報は型IDとかサイズを保持してvoid *だとメタ情報も含めて0になる
334デフォルトの名無しさん
2026/06/02(火) 12:11:29.47ID:pjjvj95o c/c++って情報更新しなくて古い知識で語ってる場合がよくある
335デフォルトの名無しさん
2026/06/03(水) 21:17:01.74ID:pyJ8HP8Y c11を理解せずにc99ぐらいで止まってる老害は多い。ちょうどJavaのヌルポで老害があぶり出されるのと同じ。
昔から老害の不勉強は変わらない
昔から老害の不勉強は変わらない
336デフォルトの名無しさん
2026/06/04(木) 00:04:22.85ID:m+R0LwSW 車載制御ソフト開発のときはマイコンメーカが提供するコンパイラの縛りはあったかも
337デフォルトの名無しさん
2026/06/04(木) 00:55:02.05ID:BbHFCyvu ワシはC89じゃ
いやマジで
いやマジで
338デフォルトの名無しさん
2026/06/04(木) 01:31:06.95ID:Ta60b9dy 実務じゃ環境指定もあるもんな
339デフォルトの名無しさん
2026/06/04(木) 11:42:33.60ID:GSMyaSRc AIにどの規格で書いて欲しいか頼めば書いてくれるやろ。しょーもない。
340デフォルトの名無しさん
2026/06/05(金) 00:33:28.57ID:SwS5NgPl 俺はC99
構造体の変数初期化で
.member=true
使いたいためだけ
それを除けばAPIは89でもいいや
しかし、俺らの生まれる前の規格まだ使ってるのなんとも言えん
89年って、、、
構造体の変数初期化で
.member=true
使いたいためだけ
それを除けばAPIは89でもいいや
しかし、俺らの生まれる前の規格まだ使ってるのなんとも言えん
89年って、、、
341デフォルトの名無しさん
2026/06/05(金) 00:34:17.79ID:SwS5NgPl342デフォルトの名無しさん
2026/06/05(金) 06:28:59.17ID:bexxxAm9 当時自分の生息圏ではルネサスのNEC系32bit 16bitが多かった
今もC89対応コメント//等一部C99対応という状況みたい
日本企業だからJIS規格に追従なのかも、そしてJISのCは実質C99止まり
同じ車載といっても画面表示系という話になれば状況は全く異なるでしょうが
今もC89対応コメント//等一部C99対応という状況みたい
日本企業だからJIS規格に追従なのかも、そしてJISのCは実質C99止まり
同じ車載といっても画面表示系という話になれば状況は全く異なるでしょうが
343デフォルトの名無しさん
2026/06/05(金) 07:06:59.37ID:3SHpKq3x 仕事場で使われている処理系ってどこのやつが多いんだろ?
昔はGreen Hills一択だったが
昔はGreen Hills一択だったが
344デフォルトの名無しさん
2026/06/05(金) 07:14:42.79ID:3SHpKq3x 昔じゃなくて大昔か
345デフォルトの名無しさん
2026/06/07(日) 02:46:14.18ID:G31AiZvV346デフォルトの名無しさん
2026/06/07(日) 09:25:07.35ID:rVXMWcgY347デフォルトの名無しさん
2026/06/07(日) 12:28:46.24ID:S9aP1pou Geminiに相談
348デフォルトの名無しさん
2026/06/07(日) 14:12:21.08ID:4m4/B3eh 問題が起きたときに責任転嫁できる相手がいることが重要
349デフォルトの名無しさん
2026/06/08(月) 06:22:21.19ID:gzPGpD/Z だからいまだにファックス使ってるんだよな
350デフォルトの名無しさん
2026/06/08(月) 23:02:38.62ID:a61iFu3f Green Hillsのコンパイラの話とか詳しく聞きたいなあ。
もう5chの存在意義ってこういう話題くらいじゃない?
もう5chの存在意義ってこういう話題くらいじゃない?
351デフォルトの名無しさん
2026/06/09(火) 13:00:45.86ID:RY2x18eX GHS懐かしい
コンパイラが変わる移植作業でビットフィールドの順序が逆になるから並べ替えを行った記憶がある
その時の片方のコンパイラがGHSだったかも
pragmaで変更できる場合もあるけどその時は無理で並び替えたんだと思う
コンパイラが変わる移植作業でビットフィールドの順序が逆になるから並べ替えを行った記憶がある
その時の片方のコンパイラがGHSだったかも
pragmaで変更できる場合もあるけどその時は無理で並び替えたんだと思う
352デフォルトの名無しさん
2026/06/09(火) 16:41:30.15ID:d6n81evb Green Hills絶賛使用中だよ
車載だと多いんじゃないか
車載だと多いんじゃないか
353デフォルトの名無しさん
2026/06/09(火) 18:14:34.00ID:0PE+fusR グリーンヒルズ懐かしいな
昔、組み込みやってた頃に触ったっけ
昔、組み込みやってた頃に触ったっけ
354デフォルトの名無しさん
2026/06/09(火) 21:26:28.07ID:TNICk9r6 コンパイラの選定や環境設定は自分でやってないので特に覚えているような事はないかも
つまり印象に残るようなトラブルはゼロだったという意味ね
グリーンヒルズは下手な人がアセンブラで書くよりもいいコードを出すということは耳にしていた
つまり印象に残るようなトラブルはゼロだったという意味ね
グリーンヒルズは下手な人がアセンブラで書くよりもいいコードを出すということは耳にしていた
355デフォルトの名無しさん
2026/06/10(水) 12:14:20.63ID:JzwuglLS >>345
典型的なAIで造った文に観えるが
典型的なAIで造った文に観えるが
356デフォルトの名無しさん
2026/06/10(水) 15:43:52.98ID:Ly8k5LPa ポインタを!ptrみたいに否定演算子でナル判定するのってお前ら的にはどう?
357デフォルトの名無しさん
2026/06/10(水) 18:00:38.08ID:gQT8+tu+358デフォルトの名無しさん
2026/06/10(水) 18:02:04.40ID:YY0HuvZT 別にどうも
359デフォルトの名無しさん
2026/06/10(水) 18:17:21.69ID:Zdw9zzEn360デフォルトの名無しさん
2026/06/10(水) 18:44:09.01ID:MHpuHtRb NULL安全でないC言語は使うのをやめるようにと米政府が表明してから脱Cを進めてるよね
361デフォルトの名無しさん
2026/06/10(水) 19:23:16.14ID:8t/e6lAQ362デフォルトの名無しさん
2026/06/12(金) 20:43:39.95ID:sEpK+LU8 esp32とかマイコンベンダーもrust推してる
363デフォルトの名無しさん
2026/06/12(金) 21:05:39.25ID:06UPCiPG Cコンパイラしか使えない一部の組み込み環境があるけど
そうでないならRustを使った方が良いね
そうでないならRustを使った方が良いね
364デフォルトの名無しさん
2026/06/12(金) 22:08:42.76ID:qQKLRWIu なぜかRustは誰も使ってないからなあ
365デフォルトの名無しさん
2026/06/12(金) 22:31:46.36ID:9rVj1NJY 周囲や知人で誰も!?
珍しい偏った環境だな
珍しい偏った環境だな
366デフォルトの名無しさん
2026/06/13(土) 16:27:37.02ID:CGZmbi53 5chのおっきいおともだちをのぞく
367デフォルトの名無しさん
2026/06/13(土) 18:17:05.96ID:6Z0SGq+Y char*みたいにポインタなのにリテラルも入るとゆうガイジ仕様
368デフォルトの名無しさん
2026/06/13(土) 21:15:51.71ID:vppH1Zg0 アセンブラを楽に使いたいって発想で作られた言語だから型と言う概念が曖昧なんだよ
369デフォルトの名無しさん
2026/06/13(土) 21:42:28.61ID:DArC+J4H370デフォルトの名無しさん
2026/06/14(日) 07:44:35.26ID:4EJ924Q0 char*に文字列リテラルが入っているわけではなく
文字列リテラルへのポインタでしょ?
文字列リテラルへのポインタでしょ?
371デフォルトの名無しさん
2026/06/14(日) 10:30:58.50ID:m8XTSxro いや、アドレスサイズに収まるデータならリテラルだろうが入るだろw
372デフォルトの名無しさん
2026/06/14(日) 11:07:50.71ID:UVmnEvyc 入るから入れちゃうおじさんにはちょっと難しい言語なんだと思う
373デフォルトの名無しさん
2026/06/14(日) 11:09:39.26ID:+misnZ54 配列もポインタとして機能するてそれじゃコード見ただけでコピーか参照を渡してるのかわからんやろ
さすがにゴミ仕様すぎ
cに関わってたケントンプンもgoでこのうんこ仕様使ってないしなんでこんなことになったんや
さすがにゴミ仕様すぎ
cに関わってたケントンプンもgoでこのうんこ仕様使ってないしなんでこんなことになったんや
374デフォルトの名無しさん
2026/06/14(日) 12:56:05.18ID:m8XTSxro だから、アセンブラ面倒くさいでお気楽に作ったトランスレータだからだよw
375デフォルトの名無しさん
2026/06/14(日) 14:13:13.23ID:LMHlkHJq それ
アセンブラすっ飛ばしてCやるにも相応の理解がいる
アセンブラすっ飛ばしてCやるにも相応の理解がいる
376デフォルトの名無しさん
2026/06/14(日) 15:32:42.51ID:4EJ924Q0377デフォルトの名無しさん
2026/06/14(日) 16:47:36.04ID:LcBqA+Ud C言語の開発に携わったケントンプンw
378デフォルトの名無しさん
2026/06/14(日) 17:47:46.47ID:60UGl0Dj アセンブラをラダーのように進化させたうえで
構造化すりゃ最高なんだが
構造化すりゃ最高なんだが
379デフォルトの名無しさん
2026/06/15(月) 09:35:44.11ID:f9fZDmww もはやCがアセンブラみたいな扱いされとるわ
380デフォルトの名無しさん
2026/06/15(月) 11:53:58.19ID:+eswDgG7 将来的にAIがアセンブラ吐き出すよりCを吐き出す方がいいよな
381デフォルトの名無しさん
2026/06/15(月) 13:09:03.14ID:ytEbROtp AI利用でC言語のコードを吐き出させるのはリスクが高すぎてほとんど行われていない
安全が保証されてほぼ同じ速さで動くRustが使われている
安全が保証されてほぼ同じ速さで動くRustが使われている
382デフォルトの名無しさん
2026/06/15(月) 13:15:51.98ID:+eswDgG7 それがリスクなら最初からAIなんか使っちゃだめだよね
383デフォルトの名無しさん
2026/06/15(月) 13:21:06.12ID:Kg9cUovC AIにとっても人間にとっても強い型付け言語が書きやすい
Cのような弱い型付け言語は実行デバッグに陥りやすいため
Cのような弱い型付け言語は実行デバッグに陥りやすいため
384デフォルトの名無しさん
2026/06/15(月) 13:42:16.29ID:Ts3qBACt AIによる手抜きコーディングに対するプログラミング言語ごとの耐性が異なるってことは、AIコーディング時代を迎えるにあたっての知っておくべき現代プログラマーの基礎知識であり、リテラシーなんだよ。
385デフォルトの名無しさん
2026/06/15(月) 16:53:58.81ID:d20nqYsF リーナスがc以外に唯一認めた言語だしesp32とかマイコンもrust向けツールチェーン出してるから組込もどんどんrust移行が増えてる
386デフォルトの名無しさん
2026/06/15(月) 17:25:11.40ID:pvgjMWMI ここにまでRust応援隊が来てるw
387デフォルトの名無しさん
2026/06/15(月) 18:59:23.76ID:9C6xlFtz そもそもrustはC言語の代替として作られたものであるから速やかに移行することが望ましい
懐古趣味でもないかぎりわざわざ質の低い骨董品に固執する理由がない
懐古趣味でもないかぎりわざわざ質の低い骨董品に固執する理由がない
388デフォルトの名無しさん
2026/06/15(月) 19:24:35.51ID:w/g/uR42 Rustを使いこなせるようになった人は100%がCに戻りたくないけど
Rustの抽象的なコーディングのしやすさを会得できない人と食わず嫌いな人が残ってるよ
Rustの抽象的なコーディングのしやすさを会得できない人と食わず嫌いな人が残ってるよ
389デフォルトの名無しさん
2026/06/15(月) 23:47:14.40ID:XkTC9+Vi Rustの学習コストはCプログラマにはかなり高いそうだねえ
390デフォルトの名無しさん
2026/06/15(月) 23:59:25.80ID:9PXYcxLc391デフォルトの名無しさん
2026/06/16(火) 01:10:32.72ID:oLagFGp9 rustは自動型推論もあるからcと比べたらだいぶ楽よな
式で返せるのもなんかかっこいいし
式で返せるのもなんかかっこいいし
392デフォルトの名無しさん
2026/06/16(火) 08:21:53.13ID:53U3iy+w ドットネットに慣れたらRustもちょい使いにくいけどな
派生、継承、オーバーライドをトレイトベースで書くことになる
でも、組み込みやってるとドットネット使えんからCかRustでええや!となる不思議
案件によって言語の得手不得手があって苦手だわ
適材適所な言語選ぶんじゃなくて一個で済ませたい
派生、継承、オーバーライドをトレイトベースで書くことになる
でも、組み込みやってるとドットネット使えんからCかRustでええや!となる不思議
案件によって言語の得手不得手があって苦手だわ
適材適所な言語選ぶんじゃなくて一個で済ませたい
393デフォルトの名無しさん
2026/06/16(火) 09:14:58.18ID:PDaa9uHw includeでまずつまずく
じゃぁ何をincludeすりゃ足りるのか
それで疲れ果てて終わる
最近の開発環境も拡張機能の巣窟で、そこでめんどくせーってなる
じゃぁ何をincludeすりゃ足りるのか
それで疲れ果てて終わる
最近の開発環境も拡張機能の巣窟で、そこでめんどくせーってなる
394デフォルトの名無しさん
2026/06/16(火) 09:58:09.71ID:JPJ54/AT いいこと思いついた!
Rustでウェブブラウザとか作ったら安心安全じゃね?
Rustでウェブブラウザとか作ったら安心安全じゃね?
395デフォルトの名無しさん
2026/06/16(火) 09:58:58.78ID:cUp8nnj3 >>392
クラスの派生、継承、オーバーライドは現在は悪設計とされている
だからモダンな言語Go・Rust・Nim・Zigなどにはクラスが存在しない
言語仕様からクラスを排除することで良い言語になってる
クラスの派生、継承、オーバーライドは現在は悪設計とされている
だからモダンな言語Go・Rust・Nim・Zigなどにはクラスが存在しない
言語仕様からクラスを排除することで良い言語になってる
396デフォルトの名無しさん
2026/06/16(火) 11:00:51.24ID:gSxq/Hmp FireFoxがRustですんごいことになるからもう少し待て
397デフォルトの名無しさん
2026/06/16(火) 11:24:57.63ID:JPJ54/AT398デフォルトの名無しさん
2026/06/16(火) 11:33:43.05ID:OvWs1uo5399デフォルトの名無しさん
2026/06/16(火) 11:45:37.85ID:Ej06GfG5 Servoを使ったVersoというのがあったはず
400デフォルトの名無しさん
2026/06/16(火) 11:51:29.16ID:7u4fMq6Y ChromeもEdgeもFireFoxいずれも部分的にRust化を進めている
新たな機能や改善のため作り直す機能から順に進めてる
どのWebブラウザも長期間にわたってハイブリッド状態が続くだろう
新たな機能や改善のため作り直す機能から順に進めてる
どのWebブラウザも長期間にわたってハイブリッド状態が続くだろう
401デフォルトの名無しさん
2026/06/16(火) 12:29:30.21ID:FYq/akyN Rustの話題はRustスレでやれば、興味をもってくれる人が多いのに
ここではスレ違いなだけなんだぜ
ここではスレ違いなだけなんだぜ
402デフォルトの名無しさん
2026/06/16(火) 17:22:49.57ID:51B0Lg7r オブジェクト指向はオワコンみたいな事言う奴に限って
なぜオワコンなのか説明出来ない
なぜオワコンなのか説明出来ない
403デフォルトの名無しさん
2026/06/16(火) 17:40:00.90ID:HIkC1MzW オブジェクト指向は重要だからRustなどモダンな言語でも採用している
オワコンはクラス継承があるクラス
オワコンはクラス継承があるクラス
404デフォルトの名無しさん
2026/06/16(火) 21:48:54.37ID:r4r2eM1y とりあえずrustのことは忘れような
ここはCのスレだ
rustの話をするならCの話を巻き込んでしよう
ここはCのスレだ
rustの話をするならCの話を巻き込んでしよう
405デフォルトの名無しさん
2026/06/16(火) 22:19:33.69ID:FO3SxX/N ^^
406デフォルトの名無しさん
2026/06/18(木) 01:06:12.05ID:2jzoAy97 >>393
関数名で検索すれば出るだろアホか
関数名で検索すれば出るだろアホか
407デフォルトの名無しさん
2026/06/18(木) 01:08:01.07ID:2jzoAy97408デフォルトの名無しさん
2026/06/18(木) 08:41:15.73ID:GdAiJdcw Rust応援隊の書き込みを真に受けちゃダメ
409デフォルトの名無しさん
2026/06/18(木) 12:16:49.52ID:tb3qMF6M スクリプト言語から来た人たちですらRustはメモリが自動解放されるからCと違って楽と言ってるもんな
410デフォルトの名無しさん
2026/06/18(木) 12:57:23.50ID:3VnC9rE9411デフォルトの名無しさん
2026/06/18(木) 13:15:41.42ID:K0evV8DH まともな言語は関数や型を使う時
その名前空間を宣言する
Cだと名前空間とは別のヘッダー名でインクルードの怪奇
その名前空間を宣言する
Cだと名前空間とは別のヘッダー名でインクルードの怪奇
412デフォルトの名無しさん
2026/06/18(木) 14:13:15.56ID:wiB36zBv 何かをしたいって時に、なぜあるかどうかもわからん関数名を知ることが出来るってんだね?
頭悪い馬鹿がいるもんだ
頭悪い馬鹿がいるもんだ
413デフォルトの名無しさん
2026/06/18(木) 14:22:06.36ID:hmMEYxJt414デフォルトの名無しさん
2026/06/18(木) 14:25:01.15ID:9cwoZf6Y makefileとかゆううんこどうにかならんの
415デフォルトの名無しさん
2026/06/18(木) 14:44:57.42ID:SVVqmSVU ならない
それはCに限ったもんじゃないし
それはCに限ったもんじゃないし
416デフォルトの名無しさん
2026/06/18(木) 14:51:23.22ID:FwVJv7Xn 今のプログラミング言語はライブラリなどの依存関係を自動的に正しく解決するからmakefileのようなものは不要
417デフォルトの名無しさん
2026/06/18(木) 16:12:33.98ID:sOUMtDS+ 漢は黙ってコンパイラ直接起動
418デフォルトの名無しさん
2026/06/18(木) 20:14:50.81ID:OUo0Uc8m パイ直
419デフォルトの名無しさん
2026/06/19(金) 15:59:03.97ID:wvohrjnQ autoconfだっけmakefileつくるやつ
420デフォルトの名無しさん
2026/06/19(金) 16:19:30.86ID:1YSLjldX autoconfがconfigure作ってconfigureがmakefile作るはず
./configure
,/make
./make install
最後にこれやったのいつだろう
./configure
,/make
./make install
最後にこれやったのいつだろう
421デフォルトの名無しさん
2026/06/19(金) 16:19:54.99ID:Itp1SF9t そう
新規プロジェクトならCMake使いまっし
新規プロジェクトならCMake使いまっし
422デフォルトの名無しさん
2026/06/19(金) 17:03:36.27ID:SV4DyR21 最初はアセンブラで長ったらしく書いてたことをまとめて書けるようになって感動したな
それでいて滅多に余計なこともしないから、効率面でも申し分なかった
それでいて滅多に余計なこともしないから、効率面でも申し分なかった
423デフォルトの名無しさん
2026/06/20(土) 12:29:38.21ID:QVDBf7mS アセンブラ使ってた感覚があると
while(*dst++ = *src++);
最強よね
while(*dst++ = *src++);
最強よね
424デフォルトの名無しさん
2026/06/21(日) 09:28:53.05ID:qfN6AuxN volatileないと最適化されてバイトアクセスでなくなる罠
425デフォルトの名無しさん
2026/06/21(日) 09:29:32.07ID:wYdgkh3W 俺がUNIX作るためにCを設計するなら所有権システムとビルドシステムは作り込むと思うね
ちなみに、人間を作るなら盲腸は削除するし歯は生え変わるように設計すると思うよ
ちなみに、人間を作るなら盲腸は削除するし歯は生え変わるように設計すると思うよ
426デフォルトの名無しさん
2026/06/21(日) 09:29:46.55ID:qfN6AuxN スマン勝手にcharだと空目したわ
427デフォルトの名無しさん
2026/06/21(日) 09:56:16.17ID:QIdUqy6R >>425
C言語誕生当初のメモリ搭載容量は約32KB。貴方の気概に感服します
C言語誕生当初のメモリ搭載容量は約32KB。貴方の気概に感服します
428デフォルトの名無しさん
2026/06/21(日) 11:44:27.36ID:sXbVer3A ていうかそもそもUNIXを書くため作られたとかじゃないよね
429デフォルトの名無しさん
2026/06/21(日) 12:13:15.56ID:Q2mR8a67 もともとはワードマシンであるPDP-7で使っていた型無し言語であったB言語があり
バイトマシンのPDP-11のためにcharやintなどの型が産まれNewB言語になり
更に構造体などが追加されてC言語になったと理解している
バイトマシンのPDP-11のためにcharやintなどの型が産まれNewB言語になり
更に構造体などが追加されてC言語になったと理解している
430デフォルトの名無しさん
2026/06/21(日) 12:18:44.67ID:Q2mR8a67 もともとB言語もNewB言語もC言語もどれもUNIXのために作られた言語でもある
431デフォルトの名無しさん
2026/06/21(日) 18:02:47.48ID:OQp7GUn5 最初はスクリプト言語だったよね?
432デフォルトの名無しさん
2026/06/21(日) 19:20:55.04ID:j0p+y8i+433デフォルトの名無しさん
2026/06/21(日) 19:23:44.05ID:j0p+y8i+ >>318
日本語おかしくね?
日本語おかしくね?
434デフォルトの名無しさん
2026/06/21(日) 19:33:05.56ID:aOp6LZRx unix自体金の亡者でうんこ
435デフォルトの名無しさん
2026/06/25(木) 16:18:07.85ID:wlWeKQvT 赤帽
436デフォルトの名無しさん
2026/06/25(木) 18:59:45.86ID:2/zplXnE C言語一極集中はよくない
437デフォルトの名無しさん
2026/06/26(金) 15:03:51.31ID:eLb+uMzH 赤い旗募金横領
438デフォルトの名無しさん
2026/06/27(土) 07:05:04.17ID:65kHVXtG439デフォルトの名無しさん
2026/06/27(土) 18:27:51.14ID:YNxNTHEk 初めてJSに触れたときクラスなくてビビったけど今はあるんだよな
クラスないとかマジでJS以下じゃん
つまり女子幼稚園児。かわいい。
クラスないとかマジでJS以下じゃん
つまり女子幼稚園児。かわいい。
440デフォルトの名無しさん
2026/06/27(土) 19:35:14.62ID:xemxRbmp zig rust goも幼稚園児
441デフォルトの名無しさん
2026/06/27(土) 22:49:55.18ID:XVxBbNIh442デフォルトの名無しさん
2026/06/28(日) 00:35:33.38ID:llZHv8Q+ >>441
sealed classにしといたらいいと思うけれども
sealed classにしといたらいいと思うけれども
443デフォルトの名無しさん
2026/06/28(日) 03:11:37.04ID:QF2WBXy4 豚の耳に真珠
444デフォルトの名無しさん
2026/06/28(日) 03:35:41.22ID:/7kRm4wN >>442
おっしゃる通りクラス継承を完全に禁止するsealed classやfinal classのみ使うのが正しい
しかしそれはclass自体が完全に不要であることを意味する
なぜならクラス継承以外の必要なオブジェクト指向プログラミングの機能はclass以外も備えているからだ
GoやNimやRustやZigなど新たな言語がclassのみ採用しなかった理由がそれ
おっしゃる通りクラス継承を完全に禁止するsealed classやfinal classのみ使うのが正しい
しかしそれはclass自体が完全に不要であることを意味する
なぜならクラス継承以外の必要なオブジェクト指向プログラミングの機能はclass以外も備えているからだ
GoやNimやRustやZigなど新たな言語がclassのみ採用しなかった理由がそれ
レスを投稿する
ニュース
- 【自維】鮭おにぎり198円に絶望、コンビニすら遠い存在に…「生き延びられない」物価高で広がる生活苦★6 [ひぃぃ★]
- 【W杯】韓国が大窮地 悪夢のシナリオ止まらず 決勝T進出順位ボーダーの8位に転落 セネガル、イランに抜かれる ★5 [尺アジ★]
- 【サッカー】「昔のネイマールでしょ」サッカー日本代表・塩貝健人がブラジル戦へ痛快発言…「王国」の印象を問われ ★2 [鉄チーズ烏★]
- イチロー氏、野球と比べてサッカーが「うらやましい」と語る 「チームのためにという感じが」「野球は個人で成績を出さないとボロカス」 [冬月記者★]
- 【サッカー】ブラジル戦、NHKは地上波なし 本田圭佑はBSで解説… 悲鳴続出「マジかよ」 地上波はフジテレビが生中継、解説は小野伸二 [冬月記者★]
- 【サッカー】日本代表、ブラジル戦でアウェーユニホーム着用へ… FIFAが公式発表 爆売れの白デザイン、W杯で初お披露目! [冬月記者★]
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★219【メキシコ/カナダ/アメリカ】
- とらせん
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★218修正【メキシコ/カナダ/アメリカ】
- 〓たかせん〓
- わしせん3
- 巨専】
- おまんこの味
- 高橋洋一、ズバッと断言「2年後に食料品消費税を8%に戻すとなっているが実際は国民から『8%に戻さないで』と言われたら戻さない」 [856698234]
- 地震 [904880432]
- 結局MMOってのは民度悪いくらいがおもしろいんだよ
- 田中みな実(39)「サッカー日本代表にめちゃくちゃカッコいい人見つけたの、フォローしちゃったw」
- 最近のスクリプトって深夜とか平日とか人が少ない時間に湧いて人が多い時間は消えてないか?