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


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

C言語なら俺に聞け 161



1 名前:デフォルトの名無しさん (ワッチョイ 0f63-sFbk) mailto:sage [2023/04/21(金) 14:05:20.18 ID:rqj2HSDF0.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C17
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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/

※前スレ
C言語なら俺に聞け 160
https://mevius.5ch.net/test/read.cgi/tech/1672191630/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

64 名前:デフォルトの名無しさん (ワッチョイ 5963-/Rus) mailto:sage [2023/04/26(水) 13:38:42.38 ID:UWqGaqQz0.net]
f(0); //こうできるしな

65 名前:デフォルトの名無しさん mailto:sage [2023/04/26(水) 14:31:03.82 ID:dG3YoJcz0.net]
>>57
comp_func は 関数のポインタとして宣言されてる変数っすよ

まぁ >>62 だということで納得

66 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-ASru) mailto:sage [2023/04/26(水) 17:00:12.69 ID:NF11/Xrv0.net]
余談だが >>62 はあくまでも C の場合の話で、
C++ では名前解決の話が合わさって複雑になってる。
関数呼出しのときに関数名を括弧で囲むかどうかで結果が変わってしまう場合がある。
https://wandbox.org/permlink/MO8NWeVmjoLTLly6

C のコードを C++ に持っていくことはそれなりにあることなので
変な書き方をしてると組み合わせの妙で引っかかることもあるかもね。

67 名前:デフォルトの名無しさん (スップ Sd0a-cnX/) mailto:sage [2023/04/26(水) 20:23:11.35 ID:WMGk7nvid.net]
正直どうでもいい
遠い昔Z80のニモニックでJP (HL)と書くけど本来はJP HLとなるはずじゃないかなと思ってたけどそれと同じw

68 名前:デフォルトの名無しさん (ワッチョイ 2a4b-ywdm) [2023/04/26(水) 20:32:10.51 ID:XZbLdYRG0.net]
まぁ普通は関数名をカッコで括ったりしないし

69 名前:デフォルトの名無しさん (ワッチョイ ea79-lTfL) mailto:sage [2023/04/26(水) 21:13:49.50 ID:zbbRZmOB0.net]
Cで関数のポインタガーとかやってる暇あったらC#のデレゲートとかラムダとか覚えた方がいいとおもった午後

70 名前:デフォルトの名無しさん (ワッチョイ 0afb-i/u1) [2023/04/26(水) 21:41:13.75 ID:tw2MKSIb0.net]
「min」と「max」の関数形式マクロをわざわざ定義する.hがあるらしい

71 名前:デフォルトの名無しさん (ワッチョイ 5d2d-YWDm) mailto:sage [2023/04/27(木) 00:02:52.04 ID:6BBE08oV0.net]
stdbool.hでも覗いてみればいい

72 名前:デフォルトの名無しさん (ワッチョイ 7502-kSx0) mailto:sage [2023/04/27(木) 05:12:28.80 ID:sEk/rgYZ0.net]
>>67
コンバイラ、甘やかしてはイカン
最初から攻める気持ちが大切



73 名前:デフォルトの名無しさん (ワッチョイ a902-V++f) mailto:sage [2023/04/27(木) 08:37:39.22 ID:OthllRbe0.net]
コンバイラ?

74 名前:デフォルトの名無しさん (テテンテンテン MM3e-HodF) mailto:sage [2023/04/27(木) 09:03:22.20 ID:AVBMGEcwM.net]
コンバトラーV

75 名前:デフォルトの名無しさん (ワッチョイ 2a7c-fzJl) mailto:sage [2023/04/27(木) 13:43:25.58 ID:kFL/uqTX0.net]
JP (HL)って8080だとPCHLだっけ
アセンブラがとことん楽するようなニモニックだったな…

76 名前:デフォルトの名無しさん (テテンテンテン MM8f-HoNx) mailto:sage [2023/05/01(月) 16:24:43.62 ID:8iWiof/XM.net]
関数の引数リストの中で新たな構造体を定義するってことってできないの?
void func(struct X{int a;} b){
... something ...
}
みたいに?
構文上は可能だと思うんだけどどうなんですか?

77 名前:デフォルトの名無しさん (スフッ Sdbf-oZQI) mailto:sage [2023/05/01(月) 18:21:57.14 ID:sEB4u3D3d.net]
構造体が使われる場所より前で定義する必要がある

78 名前:デフォルトの名無しさん (オイコラミネオ MM4f-ylw9) mailto:sage [2023/05/01(月) 19:09:18.47 ID:Cn3LrXy/M.net]
>>47
いみもなく勿体つけるオジサン
「関数ポインタは難しいから後でやろうね~オマジナイだよ~」

79 名前:デフォルトの名無しさん (オイコラミネオ MM4f-ylw9) mailto:sage [2023/05/01(月) 19:15:34.08 ID:Cn3LrXy/M.net]
>>53
それで後々になって質問すると
>>47,48みたいのが湧くでしょ

80 名前:デフォルトの名無しさん (オイコラミネオ MM4f-ylw9) mailto:sage [2023/05/01(月) 19:29:42.98 ID:Cn3LrXy/M.net]
未だに初っ端からコンソールにハローワールド表示させるとこから教えてるんだろうね勿体つけオジサンたちは

81 名前:デフォルトの名無しさん (オイコラミネオ MM4f-ylw9) mailto:sage [2023/05/01(月) 19:36:49.71 ID:Cn3LrXy/M.net]
勿体つけオジサンたちはChatGTPで「C言語で関数名に()付けるのって何ですか?」って聞いてみればいいよ
機械以下のゴミw

82 名前:デフォルトの名無しさん (ワッチョイ 3702-ITaW) mailto:sage [2023/05/01(月) 19:44:56.10 ID:cY285a3R0.net]
医者から処方された薬は指示通り飲まないとだめだぞ



83 名前:デフォルトの名無しさん (ワッチョイ ff63-fitb) mailto:sage [2023/05/01(月) 20:12:14.98 ID:kp1qtDVi0.net]
配列に対してポインタでアクセスするとか、単純な者だと絵に描けば大体理解出来るが
構造体内のポインタ変数やら、さらに配列かして行くと、記述もすんなりとできなくなるし
ましてや別人が書いたソースで、それらが一体何をアクセスしているのか理解するのは大変だ

84 名前:デフォルトの名無しさん (スプッッ Sd3f-rFN3) [2023/05/01(月) 20:21:43.22 ID:RHMPP4K9d.net]
>>76
返り値のほうならなぜかgccでいけた
まあ型推論がないC言語じゃあ役に立たないんだけど

// main.c
struct {int a;} func();
int main(){
printf("%d\n", func());
}

// other.c
int func(){ return 42;}

85 名前:デフォルトの名無しさん (ワッチョイ 572d-wHlW) mailto:sage [2023/05/02(火) 02:30:44.97 ID:FbQbKVUa0.net]
void func(struct {int a;} b){
b.a = 10;
printf("%d\n", b.a);
}

tccでもこれ通るな

86 名前:はちみつ餃子 mailto:sage [2023/05/02(火) 11:04:32.32 ID:HpVmkNB+0.net]
>>76
私が知る限りにおいて文法上は正しい。
しかし X の有効範囲 (スコープ) は関数内だけなので
関数の外で struct X に対応する値を生成できず、
まともな方法では適切な実引数を与えることができない。

内容が同じ構造体は「適合」するし引数が適合する関数も適合するはずなので
強引にキャストして呼出しても言語仕様に反しないと思うのだけど
適合の概念をちゃんと理解できてる自信はない……

void func(struct X{int a;} b){}

int main(void) {
struct X{int a;} b = {1};
// このキャストはたぶんアリだと思うけど自信はない
void (*f)(struct X) = (void(*)(struct X))func;
f(b);
}

87 名前:デフォルトの名無しさん (スップ Sdbf-s2+g) mailto:sage [2023/05/02(火) 20:11:42.15 ID:ovfmjnkKd.net]
>>76
素直に最初に構造体をtypedef しとけば楽だと思うんですが
文法上で言えばstruct Xとだけ書いといて後でstruct Xの中身を定義しても正しい
もちろんそれでは関数スタックのサイズを計算できないのでエラーになるだろうが

88 名前:デフォルトの名無しさん (アウアウウー Sa1b-wHlW) mailto:sage [2023/05/03(水) 14:42:04.19 ID:wz1HqF7Da.net]
Cは
struct Hoge {int a;} b;

struct {int a;} b;
を区別しない

89 名前:デフォルトの名無しさん (ワッチョイ 975f-By2c) mailto:sage [2023/05/03(水) 15:45:19.73 ID:1ndhLr9O0.net]
>>88
名前の有無が違うし、変数名を変えて並べれば違う型になるし、明らかに違うと思うんだけど
何をもって「区別しない」なんて言うのか。

90 名前:デフォルトの名無しさん (ワッチョイ 975f-By2c) mailto:sage [2023/05/03(水) 18:10:57.61 ID:1ndhLr9O0.net]
>>86
「内容が同じ構造体は「適合」する」について確認すると策定中の C23 から
内容に加えてタグ名まで同じ場合に限り適合する(compatible になる)ように変更されるようで、
現時点では正しくない模様。
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3037.pdf

91 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-By2c) mailto:sage [2023/05/04(木) 00:37:13.28 ID:zfmlH8qj0.net]
>>90
厳格な方向に改定してんのね。
今までが緩すぎたからしょうがないね。

92 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 01:26:39.82 ID:KJPnL+/P0.net]
>>91
あ、ごめん書き方が悪かった。
これまではタグ及び内容が同じでも適合しなかったところ、 C23 から適合するようになるという話。
有効になるプログラムが増えるので、どちらかというと緩くなる変更。



93 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 04:12:02.40 ID:W+5O3yqN0.net]
急に凄くレベル低い話して申し訳ないんだけど
#include <stdio.h>

int main()
{
int a[101] = {};
a[0] = 2;
a[1] = 3;

for (int i = 4; i < 1000; i++) {
int r = 1, j;
for (j = 0; j <= 100 && a[j] != 0; j++) {
if ((i % a[j]) == 0) {
r = 0;
break;
}
}
printf("%d %d %d %d %d \n", i, j, a[j], i % a[j], r);
if (r)
a[j + 1] = i;
}
for (int i = 0; i < 100; i++)
printf("%d ", a[i]);
}
なんでこれ上手く動かないんだろう

94 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 05:17:57.46 ID:P5ZkmciJ0.net]
このスレいつもレベル低いから大丈夫でしょ
上手く動かない?そもそもそのコードはどう動いて欲しいのか読み取れないんだよな
日頃から入出力を意識して書けって言われてない?まるで実践できてないからダメか

95 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 07:37:53.19 ID:6SJC1K3b0.net]
>>93
二つ目の for ループから抜ける条件の一つが「a[j]がゼロ」なのに、そのループから抜けた直後で i % a[j] とかやってて、jが2のときにa[2]が0でループから抜けるから、ゼロ除算で落ちる

それとこっちは直接の原因ではないけど、int a[101]と宣言すると a[0]~a[100]までしかアクセスできないのにa[102]までアクセスする可能性があるようなコードになってるのもダメだな

96 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 08:36:39.17 ID:Hj8mrajJd.net]
とりあえず初期化するとき

int a[101] = {0,1,2};
と書いたほうが楽じゃん
ちなみに初期値がない部分は0になる

後はめんどくさいから明日読むわ

97 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 08:46:33.13 ID:Hj8mrajJd.net]
間違えた
int a[101] = {1,2};


ちなみに int a[101] = {};
ではまったく初期化されないからこのプログラムでは[0][1]以外のところには0ではなく不定値が入ってるのでうまく動かないのはそれなんじゃね

int a[101] = {0};
と書いておけば省略した部分もすべての要素が0で初期化されるよ

98 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 09:36:07.29 ID:GmhF7zKn0.net]
>>93
i と j  ってわかりづらいから j は k に置き換えて言うけど

i=4 のとき k=0 で 4%2 となり割り切れるため、何もせずに次
i=5 のとき k=2 で a[k]==0 なので k のループを抜ける(このときk==2でa[2])
抜けた後のif (r) a[k + 1] = i; で a[3] = 5 になっていて a[2] は 0 のまま
で0除算でドボン

まずはif (r) a[k + 1] = i; ではなく if (r) a[k] = i; だね

99 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 09:58:25.07 ID:GmhF7zKn0.net]
>>93
それとこれって素数を見つけるプログラムと思うけど、 1000までの間に163個あるっぽい
a の要素数はそれ以上必要
(0除算している部分のprintfがデバッグ用のように、デバッグで100までに制限しているのかもしれないけど)

一応言っておくと0除算でドボンは本質とはちょっと違うからね
if (r) a[j] = i;
printf("%d %d %d %d %d \n", i, j, a[j], i % a[j], r);
とa[j] への代入とデバッグ用のprintfの位置を入れ替えれば0除算は起きないから

100 名前:デフォルトの名無しさん (ワッチョイ 572d-wHlW) mailto:sage [2023/05/04(木) 10:19:34.63 ID:W+5O3yqN0.net]
>>95-99
丁寧な解説、ありがとうございます。

>>95,99
printfの中で0で割ってる可能性に気づいてなかったです。
a[k + 1]に代入しておかしくなってたので、原因を突き止めようとしたら
新しいバグを作ってしまっていました。

>>97
私の使ってるコンパイラだとどれでも
int a[101] = {};
でなぜか全部0が入ります。そんなものかと思って通してました。

101 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 11:22:57.44 ID:qhvAhFwp0.net]
初期化は自動変数と静的変数で変わるんでしょ?

102 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 12:22:57.41 ID:gcRtXg3v0.net]
右辺のない変数宣言だけのパターンでは変わってくるけど
静的だろうが自動だろうが 初期化の = { } は 省略部以降すべて0 → 全部0フィル でしょ



103 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 12:26:03.41 ID:ZxdTo52k0.net]
初期化って必ず初期値を設定するものとばかり思ってた

104 名前:デフォルトの名無しさん [2023/05/04(木) 12:29:51.46 ID:ocVXr2wXd.net]
配列を「={};」で初期化したときの挙動は全要素が0埋めされるとC言語規格で決まってる

105 名前:はちみつ餃子 mailto:sage [2023/05/04(木) 12:50:52.53 ID:zfmlH8qj0.net]
C17 までは初期化子が 0 個の状況は規定されていない。
一個以上が必要。 0 個を許容するとしたら処理系の拡張。

C23 からは >>102 の説明で正しい。

106 名前:デフォルトの名無しさん mailto:sage [2023/05/05(金) 01:44:39.83 ID:Dgp4PAAq0.net]
むかしニコ動で動画上げたらそのこと教えてくれた人いたな
今でも覚えてるわ

107 名前:デフォルトの名無しさん mailto:sage [2023/05/08(月) 08:20:55.10 ID:o4wr0iPb0.net]
なので 全省略せずに = { 0 }; と書くことは多いね

108 名前:デフォルトの名無しさん (ワッチョイ 9354-ouLR) mailto:sage [2023/05/10(水) 14:54:20.05 ID:Sp9BCNLV0.net]
規制解除テスト

109 名前:デフォルトの名無しさん mailto:sage [2023/05/12(金) 07:37:29.65 ID:uK8Qnmg70.net]
https://ideone.com/Kj806d

うちの環境(tcc)だと
ビット操作の実行時間: 0.634000秒
一時変数の利用の実行時間: 0.444000秒
ポインタの利用の実行時間: 0.471000秒
になるんですね、最適化が弱いにしても完全に想像と逆の結果になって驚いてる

110 名前:デフォルトの名無しさん mailto:sage [2023/05/12(金) 08:42:01.03 ID:7oN7jOgdd.net]
ポインタのそれ交換できてるか?

111 名前:はちみつ餃子 mailto:sage [2023/05/12(金) 08:58:12.44 ID:AJ54S3Uh0.net]
CPU の性質も考慮する必要がある。
ビット演算はメモリのロード/ストアとは並列化できない分が効いて遅くなるんじゃないかと思う。
間接参照があればその分だけ遅くなるのも自然だし、想像通りだろ。

112 名前:デフォルトの名無しさん [2023/05/12(金) 08:58:57.96 ID:dEJrL9Tpd.net]
gcc(-O2)で見てみたら核の部分はswap_bitsが6命令、swap_tempが4命令になってるね

swap_bits:
.LFB0:
.cfi_startproc
endbr64
cmpq %rsi, %rdi
je .L1
movl (%rdi), %eax
xorl (%rsi), %eax
movl %eax, (%rdi)
xorl (%rsi), %eax
movl %eax, (%rsi)
xorl %eax, (%rdi)
.L1:
ret
.cfi_endproc
swap_temp:
.LFB1:
.cfi_startproc
endbr64
cmpq %rsi, %rdi
je .L4
movl (%rdi), %eax
movl (%rsi), %edx
movl %edx, (%rdi)
movl %eax, (%rsi)
.L4:
ret
.cfi_endproc



113 名前:デフォルトの名無しさん mailto:sage [2023/05/12(金) 22:24:54.99 ID:josTNWjFd.net]
ビット演算はそりゃ遅いだろ
読んで演算して書く
よりも
読んで書く
のほうが早いに決まってるじゃん

114 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 123e-tcUg) mailto:sage [2023/05/12(金) 23:57:42.36 ID:AJ54S3Uh0.net]
ビット演算バージョンの特徴は一時的な格納場所が不要なところにある。
レジスタに空きが無いときにメモリに退避するよりはビット演算のほうが
マシということはありうると思う。

素朴なアーキテクチャだとメモリの読み書きが (レジスタと比べて) だいぶん遅かったり
レジスタの数が少なかったりするし。

色々な条件が絡み合うので「決まってる」とまでは言い切れない。

115 名前:デフォルトの名無しさん (スプープ Sd1f-Ynfg) mailto:sage [2023/05/13(土) 07:20:30.86 ID:q/ntHDOzd.net]
この件の場合は
関数の形でメモリから読んで書くことは確定だからそれ以上の最適化は不可能なので決まってるのだ

116 名前:デフォルトの名無しさん (スッップ Sd1f-paFp) mailto:sage [2023/05/13(土) 12:31:34.66 ID:scApfF3jd.net]
大昔の技術
今使うやつはアホ

ビット演算の方が有意に速い事なんか無いよ

117 名前:デフォルトの名無しさん (ワッチョイ 335f-eWQc) mailto:sage [2023/05/13(土) 13:31:03.33 ID:77gpFXkp0.net]
論理演算はマシン語1命令だろw

118 名前:デフォルトの名無しさん (テテンテンテン MM7f-PaoB) mailto:sage [2023/05/13(土) 14:34:03.15 ID:ToDbeQGOM.net]
std::swap使えばマシン語のxchgを使ってくれそうな気がするけどね
xchg使うのが最速だろう
Cにはstd::swapに相当するもんが無いな

119 名前:デフォルトの名無しさん (スッップ Sd1f-paFp) mailto:sage [2023/05/13(土) 15:37:18.91 ID:trdeSgBWd.net]
>>117
movだけなら演算ポートを使わないで済む

>>118
マシン語のxchgは非常に遅い

120 名前:デフォルトの名無しさん (スプープ Sd1f-Ynfg) mailto:sage [2023/05/13(土) 18:27:17.14 ID:0CcYb4xxd.net]
>>117
初心者が陥りやすい錯覚だな
「何もしない(NOPのことではない)」よりも速い命令はないのだ

121 名前:デフォルトの名無しさん (ワッチョイ cf34-TSnC) mailto:sage [2023/05/13(土) 18:39:48.47 ID:Er9DBy9d0.net]
>>117
やめとけ
言ってわかる相手じゃない

何もかも機械がやってくれるから
自分の頭で考える必要はないって手合いだぞ

122 名前:デフォルトの名無しさん (スッップ Sd1f-paFp) mailto:sage [2023/05/13(土) 18:43:02.66 ID:trdeSgBWd.net]
×自分の頭で考える必要はない
○アホが工夫すると遅くなる



123 名前:デフォルトの名無しさん (スッップ Sd1f-paFp) mailto:sage [2023/05/13(土) 18:46:13.79 ID:trdeSgBWd.net]
今では通用しない技術を偉そうに語る
老害の典型
==>はちみつ

124 名前:デフォルトの名無しさん (ワッチョイ cf34-TSnC) mailto:sage [2023/05/13(土) 18:50:59.33 ID:Er9DBy9d0.net]
身に覚えのあるやつがファビョってるね
ん~いい返事だ

125 名前:デフォルトの名無しさん (テテンテンテン MM7f-PaoB) mailto:sage [2023/05/13(土) 22:00:35.83 ID:8DjxrcvEM.net]
>>119
遅いってのは、レジスタを余計に1つ消費する方法よりも更にデメリットが有るぐらい遅いのか?

126 名前:デフォルトの名無しさん mailto:sage [2023/05/13(土) 22:53:11.07 ID:w2ITJ0dJd.net]
最適化されてもmovより遅くならない程度で決して速くなることはない
おそらくもっと複雑な処理の途中でレジスタが全て使用中の場合にレジスタをスタック等に退避することなく値を交換するテクニックとして使われたら速くなるのかもしれんが
こんなシンプルなコードでは起きないだろう

127 名前:デフォルトの名無しさん mailto:sage [2023/05/13(土) 23:18:57.76 ID:6X/C93dk0.net]
xorスワップは昔クヌースのメモリを使わないGCのマーク&スイープ手法だかで多用されてた気がする
当時はこれが神が作りしコードかあみたいに感動しかなかった

128 名前:デフォルトの名無しさん mailto:sage [2023/05/13(土) 23:46:50.93 ID:TLDrNKkXM.net]
>>126
普通のコードだとレジスタは常に足りてないだろ
ベンチマーク的なコードは本当の速度を表してないな
Benchmarks gameとかそれぐらい複雑なコードを複数動かしてやっと分かるもんだろうね

129 名前:はちみつ餃子 mailto:sage [2023/05/13(土) 23:49:44.86 ID:vqN1nVlv0.net]
>>125
現代的な CPU だと直接的に使われるレジスタのほかに内部にはもっと多くのレジスタがあって
見かけ上はレジスタを余計に消費していても実際には一時的に割り当てられるレジスタなことがある。
いわるゆる「機械語」も CPU 内部ではさらに分解されてよりよい命令列に置き換えられるので
同じ機械語でも文脈によって違うことをしてる。
複雑すぎて詳細な挙動を事前に

130 名前:\測するのは無理。
xchg が存在するからには有用な場面もあるんだろうとは思うが、
結局のところは実際にやってみないとよくわからん。
[]
[ここ壊れてます]

131 名前:デフォルトの名無しさん mailto:sage [2023/05/14(日) 01:15:20.67 ID:XjDIggiO0.net]
xchgはスピンロックを作るときに使うよね

132 名前:デフォルトの名無しさん mailto:sage [2023/05/14(日) 07:12:36.39 ID:YUNKAbGY0.net]
変数のswapって、マシン語に限らずどこででも高い頻度で使うぞ



133 名前:デフォルトの名無しさん mailto:sage [2023/05/14(日) 11:51:05.47 ID:eMKrHX/5d.net]
>>129
つまり
有用な場面を知らないわけだ
レジスタを節約するためでも微妙な高速化のためでもないから

134 名前:デフォルトの名無しさん mailto:sage [2023/05/14(日) 19:49:42.92 ID:9VZQjQ6WM.net]
アトミックのことかな
はちみつ氏のレスは慎重で丁寧だし、噛みつく必要はないだろう

135 名前:デフォルトの名無しさん mailto:sage [2023/05/14(日) 19:54:24.09 ID:B0168DkC0.net]
そもそもアセンブラででも書かない限りある値がレジスタに維持される期間は人間の考えとは異なるんだよなぁ

136 名前:デフォルトの名無しさん (ワッチョイ cf34-TSnC) mailto:sage [2023/05/14(日) 22:22:28.93 ID:YUNKAbGY0.net]
人間の考えw
人情っすか?

137 名前:デフォルトの名無しさん (ワッチョイ cf63-ZkZz) mailto:sage [2023/05/14(日) 23:14:42.36 ID:fNcGY7kH0.net]
レジスター猫

138 名前:デフォルトの名無しさん (ワッチョイ 0310-ZkZz) mailto:sage [2023/05/15(月) 07:45:53.34 ID:wYJ4tfRu0.net]
シュレーディンガーのレジスター猫猫

139 名前:デフォルトの名無しさん (ワッチョイ cf46-1d5q) [2023/05/15(月) 10:53:41.51 ID:Ro1LlfRG0.net]
レンジ猫?

140 名前:デフォルトの名無しさん (ワッチョイ 3302-Cej3) mailto:sage [2023/05/15(月) 11:26:46.74 ID:qSKQiR6e0.net]
猫は電子レンジで乾かせません

141 名前:デフォルトの名無しさん (ワッチョイ ffad-ZkZz) [2023/05/15(月) 11:51:40.11 ID:Bppn4Lb30.net]
じゃあ何なら乾かせるんですか?

142 名前:デフォルトの名無しさん (ラクッペペ MM7f-fulC) mailto:sage [2023/05/15(月) 12:00:56.43 ID:Uo8X26KHM.net]
タオルとドライヤー



143 名前:デフォルトの名無しさん (ワッチョイ ff97-7xmi) mailto:sage [2023/05/15(月) 12:22:52.88 ID:L2eqquJo0.net]
愛情を込めて暖める

144 名前:デフォルトの名無しさん (スプープ Sd1f-Ynfg) mailto:sage [2023/05/15(月) 20:16:31.37 ID:8Cq/OAued.net]
つまんないボケはどうつっこんでもつまんない

145 名前:デフォルトの名無しさん (スプッッ Sd07-zj+H) mailto:sage [2023/05/16(火) 08:51:47.45 ID:gG4dlKgfd.net]
技術ないやつが妬みで荒らしてるだけだからな

146 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 15:56:44.97 ID:mGp2Y9l5a.net]
DJNZがatomicだと思っていた時期が私にもありました

147 名前:デフォルトの名無しさん (ワッチョイ c301-Np+b) mailto:sage [2023/05/16(火) 20:31:19.40 ID:afLAkRaY0.net]
日本はC言語さえ難しいエンジニアもいるんだよな

148 名前:デフォルトの名無しさん mailto:sage [2023/05/16(火) 20:55:13.02 ID:bTPsQg7Pd.net]
>>137
おお、読み出すまで値が確定しないレジスタ
乱数発生専用レジスタですね
わかります

149 名前:デフォルトの名無しさん (スプッッ Sd1f-zj+H) mailto:sage [2023/05/17(水) 07:09:46.32 ID:s9zxu+xkd.net]
異分野からきた地頭のいい人がCも使えるようになると
おまえら仕事取られるぞ

150 名前:デフォルトの名無しさん (ワッチョイ 0310-ZkZz) mailto:sage [2023/05/17(水) 07:46:38.82 ID:BUhbFeo00.net]
外国人労働者が来たら、AI化されたら、昔から色んな業種で何度も言われてるわな。

151 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 13:27:27.48 ID:hbqXME+r0.net]
いろんな分野で確かに仕事を奪われている

152 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 16:15:47.93 ID:ZA2j/mjnd.net]
> AI化されたら

ここム板だよな



153 名前:デフォルトの名無しさん mailto:sage [2023/05/17(水) 19:23:47.84 ID:HVYpBx2Dd.net]
>>148
恐れるに足らん
こっちは守護だぞ幕府が後ろ盾だぞ

154 名前:デフォルトの名無しさん (スププ Sdea-i/qU) [2023/05/24(水) 06:34:08.09 ID:TwXy7dIZd.net]
前回のこのスレの投稿で関数名に()をつける場合があるという意味がわかった。#undefを使わなく
てもいいように関数に()をつける場合がある。

ans = (sqr)(n);
という具合に。

155 名前:デフォルトの名無しさん (ワッチョイ 6746-3pER) [2023/05/24(水) 07:05:53.93 ID:ea8bFP4r0.net]
void laugh(笑);

156 名前:デフォルトの名無しさん (ワンミングク MMbf-4z7j) mailto:sage [2023/05/31(水) 15:57:04.61 ID:fnFbD7jZM.net]
誰か笑いをとめてやってくれ

157 名前:デフォルトの名無しさん mailto:sage [2023/05/31(水) 16:11:38.59 ID:ck+UIxN/0.net]
abort();

158 名前:デフォルトの名無しさん mailto:sage [2023/05/31(水) 18:02:31.09 ID:vB7s5b6d0.net]
GotoBlueScreen();

159 名前:デフォルトの名無しさん mailto:sage [2023/05/31(水) 18:16:26.97 ID:i7J0Z4vH0.net]
__halt();

160 名前:デフォルトの名無しさん mailto:sage [2023/05/31(水) 21:00:07.40 ID:ck+UIxN/0.net]
void a() __attribute__((naked));
void a()
{
asm(" halt");
}
int main(void)
{
a();
}

161 名前:デフォルトの名無しさん mailto:sage [2023/05/31(水) 21:19:20.18 ID:soKXUOD/0.net]
[STOP]+[A]

162 名前:デフォルトの名無しさん [2023/06/03(土) 19:40:08.42 ID:hD2oGIQP0.net]
文字列処理用のリングバッファ作ったんですが、同じ処理をint型でも行いたいです。
当たり前ですが、同じプログラムをint型に変えればできると思います。
ですが、処理自体は同じなので、共通化できないものでしょうか?

C++ではテンプレート関数を使えばできるようですが、純粋なC言語では難しいですか?



163 名前:蟻人間 mailto:sage [2023/06/03(土) 19:48:40.44 ID:Pce1Bw+fd.net]
>>161
#defineと#includeを使えばできるよ。

164 名前:デフォルトの名無しさん (ワッチョイ 916e-aXLw) mailto:sage [2023/06/03(土) 20:14:57.23 ID:SlTHxzvh0.net]
俺的には#includeよりtypedefかな






[ 続きを読む ] / [ 携帯版 ]

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

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