!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 153
https://mevius.5ch.net/test/read.cgi/tech/1566050562/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C言語なら俺に聞け 154
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ bf63-lB9F)
2020/01/14(火) 19:32:30.16ID:SgRnb4BR052デフォルトの名無しさん (ワッチョイ bd02-otum)
2020/01/17(金) 20:18:08.47ID:e4Iv2ZR10 >>48-51
ありがとうございます。参考にさせてもらいます。
ありがとうございます。参考にさせてもらいます。
53デフォルトの名無しさん (アウアウウー Sa05-SNGL)
2020/01/17(金) 21:01:33.00ID:IvE1mrxVa POSIXスレッドなら cond wait みたいなの使うのがよさげ
54デフォルトの名無しさん (オッペケ Srd1-s5Rz)
2020/01/17(金) 21:27:33.03ID:fcTBGFJ8r int main()
{
int array[100][10];
array[0][0] = 61;
printf("%d\n", *(int*)array ) ;
}
これなんでIntポインターにキャストしないとだめなん?
arrayでもポインターだから*つければ配列の先頭参照できないとおかしくね?
例えば
char array[] ="unko king";
だとしたら
%s とarrayで文字列表示できるじゃん
*(char*)arrayなんてしないでしょ?
{
int array[100][10];
array[0][0] = 61;
printf("%d\n", *(int*)array ) ;
}
これなんでIntポインターにキャストしないとだめなん?
arrayでもポインターだから*つければ配列の先頭参照できないとおかしくね?
例えば
char array[] ="unko king";
だとしたら
%s とarrayで文字列表示できるじゃん
*(char*)arrayなんてしないでしょ?
55デフォルトの名無しさん (オッペケ Srd1-s5Rz)
2020/01/17(金) 21:32:02.00ID:fcTBGFJ8r %s とarrayで文字列表示できるじゃん
*(char*)arrayなんてしないでしょ?
じゃなくて(char*)arrayだわ
みすった
*(char*)arrayなんてしないでしょ?
じゃなくて(char*)arrayだわ
みすった
56蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ f901-eWjF)
2020/01/17(金) 21:33:28.77ID:90cOo2870 配列はポインタではない。
57デフォルトの名無しさん (オッペケ Srd1-s5Rz)
2020/01/17(金) 21:37:01.79ID:fcTBGFJ8r >>56
添字つけない場合は配列の先頭のメモリアドレスを持つポインタなんだがw
添字つけない場合は配列の先頭のメモリアドレスを持つポインタなんだがw
58デフォルトの名無しさん (オッペケ Srd1-s5Rz)
2020/01/17(金) 21:45:56.20ID:fcTBGFJ8r >>56
例えば
int array[40][40];
array[30][30]=10;
int *p;
p=array;
*(p+(40*30)+30)でarray[30][30]にアクセスできる
例えば
int array[40][40];
array[30][30]=10;
int *p;
p=array;
*(p+(40*30)+30)でarray[30][30]にアクセスできる
59蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ f901-eWjF)
2020/01/17(金) 21:51:59.19ID:90cOo2870 型に互換性があることと、型が同じであることは異なる。int[20][20]はint*とは互換性がない。
60蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ f901-eWjF)
2020/01/17(金) 22:01:25.25ID:90cOo2870 配列はアドレス値を動かせない。
配列とポインタではsizeofの値が違うことがある。
多重ポインタと多次元配列はメモリレイアウトが異なる。
よって配列はポインタではない。
配列とポインタではsizeofの値が違うことがある。
多重ポインタと多次元配列はメモリレイアウトが異なる。
よって配列はポインタではない。
61デフォルトの名無しさん (ワッチョイ 4135-TOPI)
2020/01/17(金) 22:35:45.81ID:EE408Bd70 2次元配列は各行の配列が配置されてるメモリ上のアドレスのリストですか?
その場合、そのリストの要素であるアドレス値はどうやって取り出せますか?
https://i.imgur.com/Ibk3T9G.png
その場合、そのリストの要素であるアドレス値はどうやって取り出せますか?
https://i.imgur.com/Ibk3T9G.png
62デフォルトの名無しさん (ワッチョイ 4135-TOPI)
2020/01/17(金) 22:43:50.57ID:EE408Bd70 この場合で言う、データの列の10,20,30というようなアドレス値を取り出す方法はありますか?
63デフォルトの名無しさん (ワッチョイ 4135-TOPI)
2020/01/17(金) 22:44:02.60ID:EE408Bd7064蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-eWjF)
2020/01/17(金) 22:44:41.28ID:j19gqc7sd 1つの配列は連続した1つのメモリブロックになっている。二次元配列も1つのメモリブロック。配列の中身は実体。
配列名のみを指定すると配列の先頭へのポインタと互換になる。
配列名のみを指定すると配列の先頭へのポインタと互換になる。
65蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-eWjF)
2020/01/17(金) 22:46:16.09ID:j19gqc7sd array[1][2]のように要素を指定できる。
66デフォルトの名無しさん (ワッチョイ 4135-TOPI)
2020/01/17(金) 22:57:35.09ID:EE408Bd70 int array[10][2]はint[10]が2個あるという意味ですか?
67蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-eWjF)
2020/01/17(金) 22:58:16.83ID:j19gqc7sd はい。
68デフォルトの名無しさん (ワッチョイ 4135-TOPI)
2020/01/17(金) 23:01:31.63ID:EE408Bd70 ではそのint[10]というのを行と呼ぶとした時、なぜこの実行結果では行間のアドレス間隔が行数になるのでしょうか。
https://i.imgur.com/CIV0x2N.png
https://i.imgur.com/CIV0x2N.png
70蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ f901-eWjF)
2020/01/17(金) 23:29:55.57ID:90cOo2870 スミマセン
71デフォルトの名無しさん (ワッチョイ 02ad-A78j)
2020/01/18(土) 04:54:51.45ID:GHIm2HIn0 >>66
それはint[2]が10個だ。
それはint[2]が10個だ。
72デフォルトの名無しさん (ワッチョイ 8236-HLSl)
2020/01/18(土) 07:37:38.87ID:cLOUBKze0 >>54
おまえさんが array[0][0] = 61; と書いているように、
int は array[0][0] だ、ここ大事だぞ
array[0] は int ではないことを絶対に忘れるな
知ってのとおり
printf("%p", array); は
printf("%p", &array[0]); と解釈される
つまり int でないもののアドレスとなる
だから
printf("%d", *array); と実体化すると
printf("%d", *&array[0]); のように int でないものとなる
おまえさんが array[0][0] = 61; と書いているように、
int は array[0][0] だ、ここ大事だぞ
array[0] は int ではないことを絶対に忘れるな
知ってのとおり
printf("%p", array); は
printf("%p", &array[0]); と解釈される
つまり int でないもののアドレスとなる
だから
printf("%d", *array); と実体化すると
printf("%d", *&array[0]); のように int でないものとなる
73デフォルトの名無しさん (オッペケ Srd1-s5Rz)
2020/01/18(土) 09:00:32.29ID:8VbKHwfkr74デフォルトの名無しさん (ワッチョイ 42c5-6zBS)
2020/01/18(土) 12:36:57.02ID:ADLYtxAZ0 int three[2][3][4];
これは4の配列が3個で、それが2個ということでおk?
これは4の配列が3個で、それが2個ということでおk?
75デフォルトの名無しさん (ワッチョイ 42d2-Jw1z)
2020/01/18(土) 15:14:27.29ID:DLgVDe3/0 そうじゃない
int [3] [4]が二個
って考える
そのあとint[3][4]について考えると
int[4]が3個ってなる
int [3] [4]が二個
って考える
そのあとint[3][4]について考えると
int[4]が3個ってなる
76デフォルトの名無しさん (ラクッペ MMe5-pplk)
2020/01/18(土) 15:19:38.07ID:TdnAkHteM >>74はそう言ってるのでは?
77デフォルトの名無しさん (ワッチョイ 829f-9xZB)
2020/01/18(土) 15:40:38.09ID:/vLKu3q60 静的に確保された多次元配列の実態はただの1次元配列だから
int array[2][2] = {};
array[1][0] = 2525;
printf(“%d\n”, array[0][2]);
ってやると2525が出力される
int array[2][2] = {};
array[1][0] = 2525;
printf(“%d\n”, array[0][2]);
ってやると2525が出力される
78デフォルトの名無しさん (オッペケ Srd1-s5Rz)
2020/01/18(土) 18:10:12.32ID:8VbKHwfkr 再帰むずすぎてハゲそうだわ
これなにやってるかパット見て分かる人いる?
int rec(int num) {
printf("%d\n", num);
if (num == 1)
return 1;
else {
return num * rec(num - 1);
}
}
これなにやってるかパット見て分かる人いる?
int rec(int num) {
printf("%d\n", num);
if (num == 1)
return 1;
else {
return num * rec(num - 1);
}
}
79デフォルトの名無しさん (ワッチョイ 8236-HLSl)
2020/01/18(土) 18:15:41.86ID:cLOUBKze0 階乗のように見えるが、違うのか?
80デフォルトの名無しさん (ワッチョイ 1db3-EgUp)
2020/01/18(土) 18:16:54.67ID:/9q/+LXn0 再帰の例で一番出てくるヤツ
if の中はゼロとの比較の方が良いと思う
if の中はゼロとの比較の方が良いと思う
81デフォルトの名無しさん (ワッチョイ 42d2-Jw1z)
2020/01/18(土) 18:17:52.93ID:DLgVDe3/0 これをfixとかでやるとますますわからなくなる
82デフォルトの名無しさん (ワッチョイ 1db3-EgUp)
2020/01/18(土) 18:19:40.64ID:/9q/+LXn0 rec(1) = 1
rec(n) = n * rec(n-1)
漸化式による記述
rec(n) = n * rec(n-1)
漸化式による記述
83デフォルトの名無しさん (ワッチョイ 4135-pplk)
2020/01/18(土) 18:25:53.64ID:qr7I8bae0 重要なのはreturnの部分だけだしな
84デフォルトの名無しさん (ワッチョイ 0201-mQF2)
2020/01/18(土) 19:28:24.57ID:34RcyaUW0 >>78
rec(3) 位にして自分でトレースしてみればわかると思う
rec(3) 位にして自分でトレースしてみればわかると思う
85デフォルトの名無しさん (ワッチョイ a9d2-co1w)
2020/01/18(土) 20:39:04.60ID:et7QELfi0 再帰のコードを書いていて不思議な気分になるのは
なんで今書いているものを呼び出せるんだろうとか思っちゃうからかな
なんで今書いているものを呼び出せるんだろうとか思っちゃうからかな
86蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-eWjF)
2020/01/18(土) 20:42:37.39ID:Q+FQEvxBd 再帰できるのはスタックフレームのおかげやで
87デフォルトの名無しさん (ワッチョイ 8679-6zBS)
2020/01/18(土) 20:48:04.45ID:wrxXpMgf0 再帰は遅いから実践ではできれば使わずに済ませたい
88デフォルトの名無しさん (ワッチョイ e252-iiEx)
2020/01/18(土) 21:18:15.56ID:Qnj8VWpB0 単純なループですむならその方がいいだろうな。
木構造の探索みたく本質的に再帰で書いた方が自然なものは再帰のがいい。
木構造の探索みたく本質的に再帰で書いた方が自然なものは再帰のがいい。
89デフォルトの名無しさん (ワッチョイ 0201-mQF2)
2020/01/18(土) 21:47:38.11ID:34RcyaUW0 今どき再帰が遅い?
90デフォルトの名無しさん (ワッチョイ 8679-6zBS)
2020/01/18(土) 21:54:07.90ID:wrxXpMgf0 今時〜が遅いと言い放てる環境ならまず今時Cを使う意味がない
91デフォルトの名無しさん (スップ Sd82-slCE)
2020/01/18(土) 22:37:40.26ID:jIyN1Euld 再帰は遅さより深さが怖い
92デフォルトの名無しさん (ワッチョイ e1da-A78j)
2020/01/18(土) 22:44:24.70ID:ecN+p+Ar0 再帰でなければ実現できないアルゴリズムがあるとすれば,例えばどんなの?
93デフォルトの名無しさん (ワッチョイ c546-KHKa)
2020/01/18(土) 23:02:02.15ID:Kwj2OX4/0 > でなければ実現できない
という要件が気になる。
という要件が気になる。
94デフォルトの名無しさん (アウアウクー MM91-0c/Z)
2020/01/19(日) 02:29:28.66ID:ec7Q1zSDM 迷路のルート検索に再帰で書いた事あるけど10000ぐらいでスタックオーバーするので再帰をループで書き直した思いで
95デフォルトの名無しさん (ワッチョイ 42c5-6zBS)
2020/01/19(日) 04:29:07.91ID:r8dbXOf20 お前ら知ってるか
Pythonの構文解析はgoto文の状態遷移なんだぜ
あれ見てPythonは業が深い言語だと思ったわ
まぁあれが一番早いんだろうけど
Pythonの構文解析はgoto文の状態遷移なんだぜ
あれ見てPythonは業が深い言語だと思ったわ
まぁあれが一番早いんだろうけど
96デフォルトの名無しさん (ワッチョイ 8236-HLSl)
2020/01/19(日) 06:30:18.66ID:6oeBvQPN0 ツリー探索なんか待ち行列を使えば非再帰に変形できるからな
97デフォルトの名無しさん (スップ Sd22-EgUp)
2020/01/19(日) 08:03:33.51ID:D5W6f6uHd C言語で記述可能かどうかって意味なら
どんなものでも非再帰に変形可能
どんなものでも非再帰に変形可能
98デフォルトの名無しさん (ワッチョイ 0201-mQF2)
2020/01/19(日) 08:20:31.11ID:UmCLgzkS099デフォルトの名無しさん (ワッチョイ a17b-WxMz)
2020/01/19(日) 08:26:41.57ID:bqsJmSpA0100デフォルトの名無しさん (ワッチョイ 82a5-36M6)
2020/01/19(日) 09:07:49.21ID:IjeRNxme0 ソースコード上ではあたかも再帰が可能かのように見せかけてるだけでしょ
そういうウソをコンパイラは演出してくれている
そういうウソをコンパイラは演出してくれている
101デフォルトの名無しさん (ワッチョイ e252-iiEx)
2020/01/19(日) 09:13:46.72ID:Wel1D6/w0 >>85
実際に再帰呼び出しが実行されるのはその関数が書き終わったあとなのだから何の不思議もないような気がするが。
実際に再帰呼び出しが実行されるのはその関数が書き終わったあとなのだから何の不思議もないような気がするが。
102デフォルトの名無しさん (ワッチョイ 42d2-Jw1z)
2020/01/19(日) 09:52:53.26ID:L+cLui7g0 そもそもC言語の再帰をコンパイルして出てきたマシーンコードって
スタックに積んでgotoしてるだけのループじゃん
スタックに積んでgotoしてるだけのループじゃん
103デフォルトの名無しさん (ワッチョイ 82a5-36M6)
2020/01/19(日) 10:09:42.96ID:IjeRNxme0 本物の再帰を実現できる無限のメモリーなんて存在しないじゃん
だから現状は擬似再帰、
しかもあと500年くらいは擬似再帰で我慢してもらうしかない
だから現状は擬似再帰、
しかもあと500年くらいは擬似再帰で我慢してもらうしかない
104デフォルトの名無しさん (ワッチョイ 42d2-Jw1z)
2020/01/19(日) 10:31:33.19ID:L+cLui7g0 再帰は再帰専用のメモリースペースを使うから限界がすぐくるだけやぞ
105デフォルトの名無しさん (ワッチョイ 82a5-36M6)
2020/01/19(日) 10:42:13.41ID:IjeRNxme0 今の科学力では本物の数学的な再帰なんて実現出来ない、
だから、擬似再帰に留まってる
あとは実数マシンと整数マシンで、現状は離散的な整数マシン
実数をそのまま扱えるマシンすら存在してない
だから、擬似再帰に留まってる
あとは実数マシンと整数マシンで、現状は離散的な整数マシン
実数をそのまま扱えるマシンすら存在してない
106デフォルトの名無しさん (スップ Sd22-EgUp)
2020/01/19(日) 10:49:21.60ID:RfLx+x9Fd コンピューターに限界がある
なんてことは誰でも知ってるから
いちいち書かなくても良いよ
なんてことは誰でも知ってるから
いちいち書かなくても良いよ
107デフォルトの名無しさん (ワッチョイ 82a5-36M6)
2020/01/19(日) 10:56:48.90ID:IjeRNxme0 だな
>>102が言うからには他の言語ではもっと画期的な方法があるのかと思ってた
>>102が言うからには他の言語ではもっと画期的な方法があるのかと思ってた
108デフォルトの名無しさん (ワッチョイ 42d2-Jw1z)
2020/01/19(日) 10:57:08.36ID:L+cLui7g0 そもそも宇宙は巨大な計算機だからすでに存在してる
109デフォルトの名無しさん (ワッチョイ 4263-A78j)
2020/01/19(日) 11:00:03.37ID:+Juhn6xh0 無限ループこそが再帰の神髄
110デフォルトの名無しさん (スップ Sd22-EgUp)
2020/01/19(日) 11:00:47.42ID:RfLx+x9Fd 本物の再帰
とか
疑似再帰
とか
文系かよ
とか
疑似再帰
とか
文系かよ
111デフォルトの名無しさん (ワッチョイ a17b-WxMz)
2020/01/19(日) 15:32:55.94ID:bqsJmSpA0 >>105
「アナログコンピュータ」ってのがあって、俺がいじったのは
その都度回路を組んで信号を送って電圧計の針の振れを観察するんだが、
あれは一応、物理の限界の精度で実数をそのまま扱うマシンだね。
このスレッドで扱う対象じゃないけど。
「アナログコンピュータ」ってのがあって、俺がいじったのは
その都度回路を組んで信号を送って電圧計の針の振れを観察するんだが、
あれは一応、物理の限界の精度で実数をそのまま扱うマシンだね。
このスレッドで扱う対象じゃないけど。
112デフォルトの名無しさん (スップ Sd22-EgUp)
2020/01/19(日) 15:48:32.08ID:RfLx+x9Fd アナログと実数には遠い溝が...
精度はデジタルの方がはるかに上
精度はデジタルの方がはるかに上
113デフォルトの名無しさん (アウウィフ FF05-otum)
2020/01/19(日) 16:44:13.95ID:ehZNNwbSF >>54
そんなキャストはしてはいけない
お前の使い方が間違ってる
敢えて括弧を付けるが正しいのはこの二つだけ
printf("%d\n", *(array[0]));
printf("%d\n", *(*array));
そんなキャストはしてはいけない
お前の使い方が間違ってる
敢えて括弧を付けるが正しいのはこの二つだけ
printf("%d\n", *(array[0]));
printf("%d\n", *(*array));
114デフォルトの名無しさん (ワッチョイ 8236-HLSl)
2020/01/19(日) 17:47:28.55ID:6oeBvQPN0 無駄なだけの「正しい」括弧なんかやめれ
printf("%d", (*array)[0]); //少なくともこれの意味がわかるようになるまでは
printf("%d", (*array)[0]); //少なくともこれの意味がわかるようになるまでは
115デフォルトの名無しさん (ワッチョイ 02a6-pREH)
2020/01/19(日) 19:24:15.02ID:IVwJAfoP0 ポインターがintと同じサイズと思うなよ
116デフォルトの名無しさん (ワッチョイ 8236-HLSl)
2020/01/19(日) 20:11:46.65ID:6oeBvQPN0 エー、エイチ、オー
117デフォルトの名無しさん (ブーイモ MMcd-lkYm)
2020/01/19(日) 20:13:42.23ID:AxsWVwh/M 丸括弧の次に優先順位が高い角括弧ってだけの話じゃん
識別子に最優先くっついてガツンと先に作用するて意味じゃわかりやすい関数等の丸括弧を除いて最強という。
識別子に最優先くっついてガツンと先に作用するて意味じゃわかりやすい関数等の丸括弧を除いて最強という。
118デフォルトの名無しさん (ワッチョイ e252-iiEx)
2020/01/19(日) 20:40:31.66ID:Wel1D6/w0 >>117
なんか演算子の優先順位をいい加減に覚えてそう。C言語のBNFでも見てきたら?
なんか演算子の優先順位をいい加減に覚えてそう。C言語のBNFでも見てきたら?
119デフォルトの名無しさん (スップ Sd22-EgUp)
2020/01/19(日) 21:31:45.40ID:RfLx+x9Fd + と << が混ざった演算
( ) を付けないと警告を出すアホコンパイラがあるんだよね
( ) を付けないと警告を出すアホコンパイラがあるんだよね
120デフォルトの名無しさん (ワッチョイ 5f44-ET0W)
2020/01/22(水) 18:42:43.98ID:fnLfByOj0 ウィキのバスエラーの所に出ているサンプルをVisual Studioでコンパイルしたんですが
デバッガで見てもゴミ値が入るだけで特に警告もエラーも出さないので
バスエラーになっているかいないか分かりません。バスエラーを体験するにはどうすればいいですか?
コンパイルオプションで対応出来ますか?
https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%B9%E3%82%A8%E3%83%A9%E3%83%BC
デバッガで見てもゴミ値が入るだけで特に警告もエラーも出さないので
バスエラーになっているかいないか分かりません。バスエラーを体験するにはどうすればいいですか?
コンパイルオプションで対応出来ますか?
https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%B9%E3%82%A8%E3%83%A9%E3%83%BC
121デフォルトの名無しさん (ワッチョイ 27b3-oAbd)
2020/01/22(水) 18:48:19.32ID:0ayd3B3Q0 x86はアラインメント不整合でも正常に読み書き出来る
AVXレジスタで
アラインメントが整ってないと使えない命令があるから
それを使えば例外発生する
MOVAPS など
AVXレジスタで
アラインメントが整ってないと使えない命令があるから
それを使えば例外発生する
MOVAPS など
122120 (ワッチョイ 5fda-ET0W)
2020/01/23(木) 20:01:35.17ID:9tTsebGL0 ありがとうございました。
123デフォルトの名無しさん (ワッチョイ 5f61-RMi8)
2020/01/23(木) 20:11:21.63ID:6RFiXn/e0 int main(void)
{
return *(int *)0;
}
の方が簡単
{
return *(int *)0;
}
の方が簡単
124デフォルトの名無しさん (アウアウウー Sa4b-AenA)
2020/01/24(金) 17:55:51.18ID:zcPs/H1Xa >>123
それセグメンテーションフォルトでは?バスエラーになるCPUあるの?
それセグメンテーションフォルトでは?バスエラーになるCPUあるの?
125デフォルトの名無しさん (ワッチョイ 5f36-m6Yn)
2020/01/24(金) 18:05:28.52ID:xfkHfIRp0 リードアクセスだしなあ
0番地が未実装というのは考えにくいね
0番地が未実装というのは考えにくいね
126デフォルトの名無しさん (ワッチョイ c701-/WoK)
2020/01/24(金) 19:16:51.65ID:JBJjeU6+0 そもそもバスエラーとかセグメンテーションフォールトは、CPUの例外等をOS側で適当にマッピングして、そう呼ぶOSがあるというだけだからOS依存。
x86/x64のCPUで>>123のような適当なメモリアクセスを行うと、CPUで例外#GPや例外#PFが発生する。UNIXならそれを状況に応じてセグメンテーションフォールト(SIGSEGV)やバスエラー(SIGBUS)として扱い、WindowsだったらEXCEPTION_ACCESS_VIOLATIONとして扱う。
アライメントがずれている時は、発生した例外#ACをバスエラー(SIGBUS)やEXCEPTION_DATATYPE_MISALIGNMENTとして扱う。
x86/x64のCPUで>>123のような適当なメモリアクセスを行うと、CPUで例外#GPや例外#PFが発生する。UNIXならそれを状況に応じてセグメンテーションフォールト(SIGSEGV)やバスエラー(SIGBUS)として扱い、WindowsだったらEXCEPTION_ACCESS_VIOLATIONとして扱う。
アライメントがずれている時は、発生した例外#ACをバスエラー(SIGBUS)やEXCEPTION_DATATYPE_MISALIGNMENTとして扱う。
127デフォルトの名無しさん (ワッチョイ 5f36-m6Yn)
2020/01/24(金) 20:23:29.22ID:xfkHfIRp0 ASを出してから一定時間経過してもDTACKが帰ってこないとBERR端子をぶっ叩かれてバスエラー
128デフォルトの名無しさん (ワッチョイ 5f61-RMi8)
2020/01/24(金) 20:40:29.99ID:aSv3EoFQ0 68K通った人からするとアライメント不整合はアドレスエラーの印象が強い
129デフォルトの名無しさん (ワッチョイ 27b3-oAbd)
2020/01/24(金) 21:00:31.06ID:3pA3r7pN0 スパッと例外で死んでくれれば良いんだけど
単にズレるだけってCPUがある
単にズレるだけってCPUがある
130デフォルトの名無しさん (アークセー Sx7b-lpLI)
2020/01/25(土) 00:46:35.96ID:cts07rfpx int i;
int *pi = &i;
*((int *) (((char *) pi) ÷ 1)) = 1;
x86はこれがバスエラーにならないね
int *pi = &i;
*((int *) (((char *) pi) ÷ 1)) = 1;
x86はこれがバスエラーにならないね
131デフォルトの名無しさん (バットンキン MMeb-/WoK)
2020/01/25(土) 01:00:05.76ID:vvn39fxSM132デフォルトの名無しさん (アークセー Sx7b-lpLI)
2020/01/25(土) 01:03:11.29ID:cts07rfpx133デフォルトの名無しさん (ワッチョイ 5f63-Jq7D)
2020/01/25(土) 01:05:26.15ID:iDfv/qKw0 そもそもx86だとバスエラー発生が無理なんではないのか?
134デフォルトの名無しさん (ワッチョイ 877b-qY3Q)
2020/01/25(土) 05:21:20.46ID:g3vROROv0 >>129
ARMのCPUでアラインメントの整合を怠ったら
偶数番地/奇数番地か、その2倍のアドレス値だったか
データの半分しか書き込まれなくて…って事態を目撃したことがある。
素朴なビットマップグラフィックのプログラムだったので
画面がシマシマになるのが文字通り目で見えた。
同じソースをx86系で実行すると期待通りの結果になるんだよ。
ARMのCPUでアラインメントの整合を怠ったら
偶数番地/奇数番地か、その2倍のアドレス値だったか
データの半分しか書き込まれなくて…って事態を目撃したことがある。
素朴なビットマップグラフィックのプログラムだったので
画面がシマシマになるのが文字通り目で見えた。
同じソースをx86系で実行すると期待通りの結果になるんだよ。
135デフォルトの名無しさん (ワッチョイ c701-/WoK)
2020/01/25(土) 18:58:17.60ID:OESzqPub0136デフォルトの名無しさん (アークセー Sx7b-lpLI)
2020/01/25(土) 23:01:02.31ID:5aeLZw2zx >>135
130です
130のように書くとバスエラーがなければ ip を破壊する可能性が高いし、最適化でコードが生成されないためのケアもされていて思慮深いコードですね…
しかしGASのオベランドは逆に見えてしまって…
130です
130のように書くとバスエラーがなければ ip を破壊する可能性が高いし、最適化でコードが生成されないためのケアもされていて思慮深いコードですね…
しかしGASのオベランドは逆に見えてしまって…
137デフォルトの名無しさん (ワッチョイ 5f63-Jq7D)
2020/01/25(土) 23:05:55.96ID:iDfv/qKw0 やはりアセンブラの領域にまで踏み込まないと無理なんでしょうね
138デフォルトの名無しさん (ワッチョイ 5fa3-9VUD)
2020/01/25(土) 23:07:44.29ID:tu9lbSH20 >>92
再起はループに起こせるよ
再起はループに起こせるよ
139デフォルトの名無しさん (ワッチョイ 5fc5-9rwV)
2020/01/28(火) 19:15:06.58ID:oIjih5hj0 起こせるけど再帰の方がシンプルに書ける
140デフォルトの名無しさん (ワッチョイ 5fa5-UqN9)
2020/01/28(火) 19:58:49.90ID:KHL1SP2c0 バカには(再帰は)無理
142デフォルトの名無しさん (ワッチョイ 5f36-m6Yn)
2020/01/28(火) 21:28:18.02ID:wcDzWZFN0 枝分かれするとき、「今は進まない」方向を待ち行列に並ばせておいて
あとで対応しにくればええやん
あとで対応しにくればええやん
143デフォルトの名無しさん (ワッチョイ 89b3-W2hh)
2020/01/29(水) 04:36:34.49ID:8i6C3PjP0 複数関数をまたがる再帰
関数コールがたくさんの箇所で行われる
こんなヤツだとループにするのは非常にメンディー
可能ではあるけど
関数コールがたくさんの箇所で行われる
こんなヤツだとループにするのは非常にメンディー
可能ではあるけど
144デフォルトの名無しさん (ブーイモ MMc9-BGKF)
2020/01/29(水) 07:12:24.51ID:6aVmGUgqM クイックソートの非再帰実装とかあちこちに転がってるから勉強しとけ。
待ち行列じゃなくスタックな。
待ち行列じゃなくスタックな。
145デフォルトの名無しさん (ワッチョイ 9e8c-Witc)
2020/01/29(水) 07:41:04.40ID:X/jeBiHu0 大きいプログラムだと差は小さい。
146デフォルトの名無しさん (ワッチョイ b67c-unxX)
2020/01/29(水) 08:52:34.15ID:WHzHFeoy0 >>144
キューでも再帰実装できるし別に良くね?
キューでも再帰実装できるし別に良くね?
147デフォルトの名無しさん (アウアウウー Sa21-lBRq)
2020/01/29(水) 09:55:20.60ID:Ji+gdkxYa もっと口を尖らせて
148デフォルトの名無しさん (ブーイモ MMc9-BGKF)
2020/01/29(水) 10:07:23.93ID:6aVmGUgqM >>146
できる例もあるが一般の再帰では無理
できる例もあるが一般の再帰では無理
149デフォルトの名無しさん (ワッチョイ b67c-unxX)
2020/01/29(水) 10:15:28.71ID:WHzHFeoy0 >>148
太い枝から積んで順にやってけばええんやで
太い枝から積んで順にやってけばええんやで
150デフォルトの名無しさん (JP 0Hb5-BGKF)
2020/01/29(水) 11:54:36.69ID:/CdgIXHbH >>149
よくわからんからコード出して
よくわからんからコード出して
151デフォルトの名無しさん (ワッチョイ 6a36-i7CI)
2020/01/29(水) 11:56:45.66ID:HJZ6WUGV0 金取っていいパターンだな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★5 [蚤の市★]
- 防衛省「レーダー照射時の自衛隊機と中国軍機の距離は52km・148km」 [834922174]
- 日本人のおでん離れ。作る回数減った30.1%🍢 [256556981]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 【速報】中国人の凶悪犯罪が急増!害国人の変遷、韓国→ベトナム→中国へ🏡
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 高市首相「コメ増産を進める」 [834922174]
