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言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/
探検
C言語なら俺に聞け 147
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/16(木) 23:36:02.22ID:fOCSKLtw459デフォルトの名無しさん
2018/08/25(土) 14:53:37.08ID:yggGxXGy460デフォルトの名無しさん
2018/08/25(土) 14:55:14.91ID:0r5h6/lL かわいそうに
精神的勝利か
低学歴知恵遅れのゴミクズ人間が
まともな人間に勝てるワケがないからな
精神的勝利か
低学歴知恵遅れのゴミクズ人間が
まともな人間に勝てるワケがないからな
461デフォルトの名無しさん
2018/08/25(土) 14:56:30.95ID:yggGxXGy462デフォルトの名無しさん
2018/08/25(土) 14:56:39.44ID:y6eIypE7 あのカウントは統治分割の管理用じゃなかったっけ?
463デフォルトの名無しさん
2018/08/25(土) 14:57:17.04ID:0r5h6/lL で、実行結果みた?
464デフォルトの名無しさん
2018/08/25(土) 14:57:45.75ID:yggGxXGy 単に順番にビットを端からスキャンしてるだけ
465デフォルトの名無しさん
2018/08/25(土) 14:58:36.91ID:0r5h6/lL n = 0 (z)0 (f)0 (m)0 (aho)1
n = 1 (z)1 (f)1 (m)1 (aho)1
n = 2 (z)1 (f)1 (m)1 (aho)1
n = 3 (z)2 (f)2 (m)2 (aho)1
n = 4 (z)3 (f)3 (m)3 (aho)1
n = 5 (z)5 (f)5 (m)5 (aho)1
n = 6 (z)8 (f)8 (m)8 (aho)1
n = 7 (z)13 (f)13 (m)13 (aho)1
n = 8 (z)21 (f)21 (m)21 (aho)1
n = 9 (z)34 (f)34 (m)34 (aho)1
n = 10 (z)55 (f)55 (m)55 (aho)1
n = 11 (z)89 (f)89 (m)89 (aho)1
n = 12 (z)144 (f)144 (m)144 (aho)1
n = 13 (z)233 (f)233 (m)233 (aho)1
n = 14 (z)377 (f)377 (m)377 (aho)1
n = 15 (z)610 (f)610 (m)610 (aho)1
n = 16 (z)987 (f)987 (m)987 (aho)1
64bitとか以前の問題だからな
n = 1 (z)1 (f)1 (m)1 (aho)1
n = 2 (z)1 (f)1 (m)1 (aho)1
n = 3 (z)2 (f)2 (m)2 (aho)1
n = 4 (z)3 (f)3 (m)3 (aho)1
n = 5 (z)5 (f)5 (m)5 (aho)1
n = 6 (z)8 (f)8 (m)8 (aho)1
n = 7 (z)13 (f)13 (m)13 (aho)1
n = 8 (z)21 (f)21 (m)21 (aho)1
n = 9 (z)34 (f)34 (m)34 (aho)1
n = 10 (z)55 (f)55 (m)55 (aho)1
n = 11 (z)89 (f)89 (m)89 (aho)1
n = 12 (z)144 (f)144 (m)144 (aho)1
n = 13 (z)233 (f)233 (m)233 (aho)1
n = 14 (z)377 (f)377 (m)377 (aho)1
n = 15 (z)610 (f)610 (m)610 (aho)1
n = 16 (z)987 (f)987 (m)987 (aho)1
64bitとか以前の問題だからな
466デフォルトの名無しさん
2018/08/25(土) 14:59:30.35ID:yggGxXGy お前が劣化コピーしたのがahoの欄
467デフォルトの名無しさん
2018/08/25(土) 15:00:08.15ID:XpRMjBtL 64ビットのとこ直したうえでその結果?
468デフォルトの名無しさん
2018/08/25(土) 15:00:50.04ID:0r5h6/lL 知恵遅れの脳内では987がunsigned intでオーバーフローする
469デフォルトの名無しさん
2018/08/25(土) 15:00:55.69ID:yggGxXGy470デフォルトの名無しさん
2018/08/25(土) 15:01:52.08ID:0r5h6/lL 当然
https://ideone.com/vhpLPV
851 名前:デフォルトの名無しさん (ワッチョイ 0b50-2km2)[sage] 投稿日:2018年08月11日(土) 00時06分54秒68 [深夜] ID:N9ICkOCi0 [1/10] (PC)
10000進数多倍長
超単純なFFT
演算は乗算と加算のみ
誤差の感じから100000進数でも大丈夫そうですね
計算式は基本以下を多倍長にしただけ
多少の無駄は除いてますが
----
uint64_t f(uint64_t n){
n++;
uint64_t a = 1;
uint64_t b = 0;
uint64_t t;
for (int i = 0 ; i < 64 ; i++){
t = b * b;
b = 2 * a * b + t;
a = a * a + t;
if (n & 0x8000000000000000){
t = b;
b = a + b;
a = t;
}
n += n;
}
return a;
}
https://ideone.com/vhpLPV
851 名前:デフォルトの名無しさん (ワッチョイ 0b50-2km2)[sage] 投稿日:2018年08月11日(土) 00時06分54秒68 [深夜] ID:N9ICkOCi0 [1/10] (PC)
10000進数多倍長
超単純なFFT
演算は乗算と加算のみ
誤差の感じから100000進数でも大丈夫そうですね
計算式は基本以下を多倍長にしただけ
多少の無駄は除いてますが
----
uint64_t f(uint64_t n){
n++;
uint64_t a = 1;
uint64_t b = 0;
uint64_t t;
for (int i = 0 ; i < 64 ; i++){
t = b * b;
b = 2 * a * b + t;
a = a * a + t;
if (n & 0x8000000000000000){
t = b;
b = a + b;
a = t;
}
n += n;
}
return a;
}
471デフォルトの名無しさん
2018/08/25(土) 15:02:52.94ID:yggGxXGy472デフォルトの名無しさん
2018/08/25(土) 15:03:38.02ID:0r5h6/lL 知恵遅れがどっかからコピってきたコードはってるわ
473デフォルトの名無しさん
2018/08/25(土) 15:04:01.61ID:yggGxXGy >>470は正しく動きますよ
474デフォルトの名無しさん
2018/08/25(土) 15:04:45.01ID:5ar3I1wr 半角はいつも負けてるな
475デフォルトの名無しさん
2018/08/25(土) 15:04:48.85ID:0r5h6/lL コレが低学歴知恵遅れが低学歴知恵遅れであることの 実 証 も含めた
エレガントなレス
866 自分:デフォルトの名無しさん (ワッチョイ de80-oNxq)[] 投稿日:2018年08月11日(土) 11時39分50秒69 [朝] ID:17qcRus/0 [1/7] (PC)
とりあえずかわいそうなぐらい頭悪いヤツしかいないのは分かった
一旦、多倍長演算向けに3つの方法を評価する
ちなみにgmpの関数にフィボナッチの関数がついてる
きっとこの速度にすら届かないと考えられる(まだ動かしてない)
↓多倍長演算使ってない3つの方法の簡単なコードがコレ
https://ideone.com/vhpLPV
※ オマケでアホが書いたコード(>>851)も入ってる
※ オレの適切なありがたい注釈がついてる
1.ひたすら足し算
2.一般項
多倍長演算をするまえに適切な精度を設定しないといけない
どれぐらいの精度にすればいいかがまだ未解決 ※ とりあえず2回計算することでいけるような気がしないでもない
3.再帰階乗演算
https://www.ics.uci.edu/~eppstein/161/960109.html
探した中でコイツが一番いい感じがする
> This is a recursive algorithm, so as usual we get a recurrence relation defining time,
> just by writing down the time spent in a call to matpow (O(1)) plus the time in each recursive call
> (only one recursive call, with argument n/2). So the recurrence is
> time(n) = O(1) + time(n / 2)
エレガントなレス
866 自分:デフォルトの名無しさん (ワッチョイ de80-oNxq)[] 投稿日:2018年08月11日(土) 11時39分50秒69 [朝] ID:17qcRus/0 [1/7] (PC)
とりあえずかわいそうなぐらい頭悪いヤツしかいないのは分かった
一旦、多倍長演算向けに3つの方法を評価する
ちなみにgmpの関数にフィボナッチの関数がついてる
きっとこの速度にすら届かないと考えられる(まだ動かしてない)
↓多倍長演算使ってない3つの方法の簡単なコードがコレ
https://ideone.com/vhpLPV
※ オマケでアホが書いたコード(>>851)も入ってる
※ オレの適切なありがたい注釈がついてる
1.ひたすら足し算
2.一般項
多倍長演算をするまえに適切な精度を設定しないといけない
どれぐらいの精度にすればいいかがまだ未解決 ※ とりあえず2回計算することでいけるような気がしないでもない
3.再帰階乗演算
https://www.ics.uci.edu/~eppstein/161/960109.html
探した中でコイツが一番いい感じがする
> This is a recursive algorithm, so as usual we get a recurrence relation defining time,
> just by writing down the time spent in a call to matpow (O(1)) plus the time in each recursive call
> (only one recursive call, with argument n/2). So the recurrence is
> time(n) = O(1) + time(n / 2)
476デフォルトの名無しさん
2018/08/25(土) 15:05:25.56ID:0r5h6/lL webコンパイラで動かしてみ
まちがいなく動かない
まちがいなく動かない
477デフォルトの名無しさん
2018/08/25(土) 15:05:34.74ID:yggGxXGy478デフォルトの名無しさん
2018/08/25(土) 15:10:38.17ID:XpRMjBtL 劣化コピーっていうか
わざわざ書き換えてるじゃねーか!
釣りだった
わざわざ書き換えてるじゃねーか!
釣りだった
479デフォルトの名無しさん
2018/08/25(土) 15:13:33.29ID:XpRMjBtL …ほかがunsigned intだから関数名変えるついでに一緒に変えちゃったのか
これは訴訟レベル
これは訴訟レベル
480デフォルトの名無しさん
2018/08/25(土) 15:49:42.93ID:RtKY5+V3481デフォルトの名無しさん
2018/08/25(土) 15:58:16.40ID:R/mHQH6/ >>396
俺の場合はCを使ってMapみたいなものまで使わねばならないほど膨大なデータを扱うことが
滅多にないのでだいたいは不要。数百から数千のデータのキーでの検索なんか何も考えずに
ループさせて全検索してしまう。億単位のデータの処理が必要な場合は(だいたいはCではない
言語を使って)RDBにデータを入れてやるかな。その方が楽だから。
ああ、でも、昔 dbm ライブラリとか使ったことあるなあ。半端に多い場合はそういうので良いかも。
今だと Linux ディストリビューションとかは最初から gdbm ライブラリ入ってるの多いと思う。これね。
https://linuxjm.osdn.jp/html/GNU_gdbm/man3/gdbm.3.html
俺の場合はCを使ってMapみたいなものまで使わねばならないほど膨大なデータを扱うことが
滅多にないのでだいたいは不要。数百から数千のデータのキーでの検索なんか何も考えずに
ループさせて全検索してしまう。億単位のデータの処理が必要な場合は(だいたいはCではない
言語を使って)RDBにデータを入れてやるかな。その方が楽だから。
ああ、でも、昔 dbm ライブラリとか使ったことあるなあ。半端に多い場合はそういうので良いかも。
今だと Linux ディストリビューションとかは最初から gdbm ライブラリ入ってるの多いと思う。これね。
https://linuxjm.osdn.jp/html/GNU_gdbm/man3/gdbm.3.html
482デフォルトの名無しさん
2018/08/25(土) 16:25:32.56ID:R/mHQH6/483デフォルトの名無しさん
2018/08/25(土) 17:08:52.03ID:kfh++Yrt 半角くん、逃亡www
半角さんは、巷にあふれるただのマウント野郎とは違って、きちんとソースを出している
唯の者ではないと思います
唯の者ではないと思います
485デフォルトの名無しさん
2018/08/25(土) 17:46:03.47ID:zd32/hlD コード保守でのバグはこうやって生まれる
うっかりミスの見事な事例がまさかこのスレで見られるとは思ってなかった
うっかりミスの見事な事例がまさかこのスレで見られるとは思ってなかった
486デフォルトの名無しさん
2018/08/25(土) 18:00:04.35ID:yggGxXGy487デフォルトの名無しさん
2018/08/25(土) 18:02:07.86ID:0r5h6/lL 2ちゃんねるでしか自己主張できない低学歴知恵遅れが
なんか必死になってるわ
わかりやすいわ
ホント
なんか必死になってるわ
わかりやすいわ
ホント
488デフォルトの名無しさん
2018/08/25(土) 18:03:03.76ID:0r5h6/lL つまりクソニートと
断定できる
断定できる
489デフォルトの名無しさん
2018/08/25(土) 18:06:11.05ID:yggGxXGy490デフォルトの名無しさん
2018/08/25(土) 18:13:06.50ID:zd32/hlD 働いてはいないがニートと呼べるほど若くもない
早期退職で悠々自適生活の元組込みソフト開発者だよ
早期退職で悠々自適生活の元組込みソフト開発者だよ
491デフォルトの名無しさん
2018/08/25(土) 19:03:57.78ID:kfh++Yrt 半角くんと長文くんのバトルを見てみたい
492デフォルトの名無しさん
2018/08/25(土) 19:15:27.06ID:06VRwQlu 是非別スレでやって欲しい
スレ数はいくら使っても良いから
スレ数はいくら使っても良いから
493デフォルトの名無しさん
2018/08/25(土) 19:18:01.37ID:0r5h6/lL オマエなかなか分かってるわ
オレのレスも文字列的には長い
しかし、中身が濃いから、情報価値も高い
つまり価値が高い情報を継続して提供している
クソニートの長文は情報価値ゼロ
中身スカスカ
ただの落書き
オレのレスも文字列的には長い
しかし、中身が濃いから、情報価値も高い
つまり価値が高い情報を継続して提供している
クソニートの長文は情報価値ゼロ
中身スカスカ
ただの落書き
494デフォルトの名無しさん
2018/08/25(土) 19:20:58.01ID:sh4ZcDkv >>493
フリがなかなか分かりにくいんだけど、そこ笑うとこ?
フリがなかなか分かりにくいんだけど、そこ笑うとこ?
495デフォルトの名無しさん
2018/08/25(土) 19:23:40.50ID:06VRwQlu >>494
失笑なら
失笑なら
496デフォルトの名無しさん
2018/08/25(土) 19:25:27.77ID:0r5h6/lL オレに敗北はない
このスレのクソニートにも敗北はない
ただコレには違いがある
オレは正面から戦う
クソニートは戦わない
コイツラは身をひそめながら遠くからとりあえず石投げる
この違い
このスレのクソニートにも敗北はない
ただコレには違いがある
オレは正面から戦う
クソニートは戦わない
コイツラは身をひそめながら遠くからとりあえず石投げる
この違い
497デフォルトの名無しさん
2018/08/25(土) 19:28:15.91ID:sh4ZcDkv498デフォルトの名無しさん
2018/08/26(日) 02:50:43.41ID:5Jlr+RDR 一日でこの板に少なくとも 23 回「低学歴知恵遅れ」って書いてるね。
どれだけ拗らせてるの?
どれだけ拗らせてるの?
499デフォルトの名無しさん
2018/08/26(日) 03:24:56.95ID:BwlGzYMc 23/35=65.7%
うぷぷぷ
うぷぷぷ
500デフォルトの名無しさん
2018/08/26(日) 09:18:36.35ID:aDjvXB/e 職場で言われていることをここで
501デフォルトの名無しさん
2018/08/26(日) 11:23:23.80ID:0Dyu3Dip いやぁ、今どき職場で「低学歴知恵遅れ」なんて言ってくる上司がいたら
ネット掲示板で同じセリフを繰り返すより、録音して訴えるだろ。
それにしても、まるで署名のように必ず投稿文に盛り込むから、
何か隠された意図があるのでは、と深読みしてしまうのも事実。
単にクセになってて本人には意味の薄い間投詞になってるのかも知れんけど。
…読み取れないとガッカリなので一応書いておくけど、
「いくら匿名の電子掲示板でもそういう言葉遣いは良くないよ」と
たしなめている(忠告している、の方が受け入れやすいかな)つもり。
ネット掲示板で同じセリフを繰り返すより、録音して訴えるだろ。
それにしても、まるで署名のように必ず投稿文に盛り込むから、
何か隠された意図があるのでは、と深読みしてしまうのも事実。
単にクセになってて本人には意味の薄い間投詞になってるのかも知れんけど。
…読み取れないとガッカリなので一応書いておくけど、
「いくら匿名の電子掲示板でもそういう言葉遣いは良くないよ」と
たしなめている(忠告している、の方が受け入れやすいかな)つもり。
502デフォルトの名無しさん
2018/08/26(日) 11:27:57.33ID:aDjvXB/e それが当たっていると、訴えるのも恥ずかしいような
503デフォルトの名無しさん
2018/08/26(日) 12:44:59.10ID:d3emHXQQ >>501
純粋かよ
純粋かよ
504デフォルトの名無しさん
2018/08/26(日) 14:53:35.15ID:hANAm2gW 低学歴底辺のクソニート、そして底辺ドカタなのは
図星なんでしょ
人間をホントのこといわれると
必死になる
図星なんでしょ
人間をホントのこといわれると
必死になる
505デフォルトの名無しさん
2018/08/26(日) 14:56:43.12ID:hANAm2gW 残念なことに
低学歴かどうかとか
知恵遅れかどうかとか
クソニートかどうか
底辺ドカタかどうか
レスからすぐに分かってしまう
まともに人間がみればすぐに分かる
キミラはなまとなに人間未満のゴミクズなワケ
その自覚すらない
だからまともな人間にすらなれないわけ
わかった?
低学歴かどうかとか
知恵遅れかどうかとか
クソニートかどうか
底辺ドカタかどうか
レスからすぐに分かってしまう
まともに人間がみればすぐに分かる
キミラはなまとなに人間未満のゴミクズなワケ
その自覚すらない
だからまともな人間にすらなれないわけ
わかった?
506デフォルトの名無しさん
2018/08/26(日) 16:10:55.42ID:dQLVYknK 必死なのはお前じゃん
507デフォルトの名無しさん
2018/08/26(日) 16:12:25.06ID:LX/My+gD 半コテって一番タチ悪いな
コテハンつけろよNGにするから
コテハンつけろよNGにするから
508デフォルトの名無しさん
2018/08/26(日) 16:25:44.03ID:lAySnCDy 本当は夏休み中の中高生じゃないのか?
何だか妙に精神年齢が幼く思える
何だか妙に精神年齢が幼く思える
509デフォルトの名無しさん
2018/08/26(日) 16:27:03.18ID:aDjvXB/e 名前は半角カタカナで頼む
510デフォルトの名無しさん
2018/08/26(日) 16:29:48.93ID:hANAm2gW 図星でしっかり反応してるしな
やっぱりなこのスレは
駆除が必要な典型的な低学歴知恵遅れの
クソニートとか底辺ドカタしかいないわ
やっぱりなこのスレは
駆除が必要な典型的な低学歴知恵遅れの
クソニートとか底辺ドカタしかいないわ
511デフォルトの名無しさん
2018/08/26(日) 17:09:28.74ID:BwlGzYMc 小馬鹿にした発言が頭悪そうな最高に痛いやつ
512デフォルトの名無しさん
2018/08/26(日) 18:07:37.48ID:ujNq2aVI >>508
確かに夏休み始まった辺りから見かけるようになった気がする
確かに夏休み始まった辺りから見かけるようになった気がする
513デフォルトの名無しさん
2018/08/27(月) 06:20:27.93ID:sdfxNc/O >>499
このスレだけなら 35 だが、この板全体の数なんだ。
必死チェッカーもどきを見たら堂々の 2 位で笑った。
いや、彼の御高説をもっと見たかったんだ。
ちなみに「知恵遅れ」はその 23 とは別に単独で 16 回出てきたよ。
このスレだけなら 35 だが、この板全体の数なんだ。
必死チェッカーもどきを見たら堂々の 2 位で笑った。
いや、彼の御高説をもっと見たかったんだ。
ちなみに「知恵遅れ」はその 23 とは別に単独で 16 回出てきたよ。
514デフォルトの名無しさん
2018/08/27(月) 08:24:49.48ID:4HBkx10J 自称、俺最強君()は、昔からしばしば見かけるけど。
小学生にも苦笑されそうなレスばかりで、相手をする気にならないんだよね。
http://hissi.org/read.php/tech/20180825/MHI1aDYvbEw.html
http://hissi.org/read.php/tech/20180826/aEFOQW0yZ1c.html
勝手に勝利宣言して逃亡するまで放置しておくのが吉。
小学生にも苦笑されそうなレスばかりで、相手をする気にならないんだよね。
http://hissi.org/read.php/tech/20180825/MHI1aDYvbEw.html
http://hissi.org/read.php/tech/20180826/aEFOQW0yZ1c.html
勝手に勝利宣言して逃亡するまで放置しておくのが吉。
515デフォルトの名無しさん
2018/08/27(月) 08:45:35.65ID:4ArgrBnx 半角さんはこの板の唯一の良心
この板は腐ってる
この板は腐ってる
516デフォルトの名無しさん
2018/08/27(月) 11:56:02.39ID:woJf6ZC9 >>413
if (条件) {
…
…
ここで(ブロックから)抜けたい -(1)
… -(2)
} else { … }
こういうこと? (1) はさらに if で条件付で分岐しないと意味がないけど…
※ (1)で分岐しないかぎり (2) 以降が無意味のコードになる
if の外側を do { } while(0) で外を囲って break; したら?
if (条件) {
…
…
ここで(ブロックから)抜けたい -(1)
… -(2)
} else { … }
こういうこと? (1) はさらに if で条件付で分岐しないと意味がないけど…
※ (1)で分岐しないかぎり (2) 以降が無意味のコードになる
if の外側を do { } while(0) で外を囲って break; したら?
517デフォルトの名無しさん
2018/08/27(月) 12:18:18.46ID:yF4/ft+h >>515
これだな
これだな
518デフォルトの名無しさん
2018/08/27(月) 12:18:56.82ID:yF4/ft+h おまえらはすぐにどうでもいいことに流される
519デフォルトの名無しさん
2018/08/27(月) 12:34:41.00ID:ywsjsNTA >>516
それだったら2を実行するための何らかの条件がある筈なのでそのためのifブロックの中に2を入れればよい。
そつではなく無条件に2を実行したくないならばソースから削除するかコメントにでもすればよい。
それだったら2を実行するための何らかの条件がある筈なのでそのためのifブロックの中に2を入れればよい。
そつではなく無条件に2を実行したくないならばソースから削除するかコメントにでもすればよい。
520デフォルトの名無しさん
2018/08/27(月) 12:36:44.69ID:ywsjsNTA すまん。スマホでフリック入力しててタイプミスした。
521デフォルトの名無しさん
2018/08/27(月) 12:42:48.65ID:woJf6ZC9522デフォルトの名無しさん
2018/08/27(月) 12:48:15.12ID:nj2QXsVo523デフォルトの名無しさん
2018/08/27(月) 12:50:40.87ID:vY3QDx2y だから何でdo while(0)なんて変態コードに固執するんだよ
524デフォルトの名無しさん
2018/08/27(月) 12:51:47.69ID:YYT/vI56525デフォルトの名無しさん
2018/08/27(月) 12:54:54.13ID:woJf6ZC9 元質問者に聞くしかない 「goto は使いたくない」の条件で
526デフォルトの名無しさん
2018/08/27(月) 12:59:44.74ID:ywsjsNTA ブロックというものを中に入ったら出られないものと勘違いしているとか。
最初にforやwhileを覚えちゃって勘違いに繋がったとか。
最初にforやwhileを覚えちゃって勘違いに繋がったとか。
527デフォルトの名無しさん
2018/08/27(月) 13:22:18.19ID:vY3QDx2y 何人たりともforより先に関数のブロックを憶えるのにね
関数のブロックだけが何か特別なものと思い込んでるケースが多い
関数のブロックだけが何か特別なものと思い込んでるケースが多い
528デフォルトの名無しさん
2018/08/27(月) 13:25:30.84ID:Q5lEKL35 goto 便利だけどなぁ。
break するがためのフラグ作って何ブロックも break するとか goto を避けるがためのいびつな if を連続させるとかよりよほど可読性が高い。
もちろん意味を的確に表したフラグやifの構造にできるに越したことはないけどさ。
break するがためのフラグ作って何ブロックも break するとか goto を避けるがためのいびつな if を連続させるとかよりよほど可読性が高い。
もちろん意味を的確に表したフラグやifの構造にできるに越したことはないけどさ。
529デフォルトの名無しさん
2018/08/27(月) 13:28:07.17ID:aXwyVMA/530デフォルトの名無しさん
2018/08/27(月) 13:31:18.13ID:vY3QDx2y ジャクソン法やワーニエ法みたいに
データ構造とプログラム構造を一致させる構造化プログラミング()では
データが損傷していた場合にはプログラム構造を一致させることができない
よって構造化定理を諦めたアプローチをせざるを得ない
こういうのがgotoやlongjmpの出番
データ構造とプログラム構造を一致させる構造化プログラミング()では
データが損傷していた場合にはプログラム構造を一致させることができない
よって構造化定理を諦めたアプローチをせざるを得ない
こういうのがgotoやlongjmpの出番
531デフォルトの名無しさん
2018/08/27(月) 13:32:12.14ID:vY3QDx2y532デフォルトの名無しさん
2018/08/27(月) 13:35:23.06ID:ywsjsNTA ま、Cの場合は適切にgoto使った方が良いだろうな。後から作られた言語では break でラベル指定できるだの例外処理できるだのしてるから使わなくて済むようになってるわけで、それのないCはそれの代わりにgoto利用しちゃった方が分かりやすく書ける。
533デフォルトの名無しさん
2018/08/27(月) 13:41:42.47ID:vY3QDx2y いやCのgotoは制限がキツすぎて
いざという時には役立たず
だからlongjmpがある
いざという時には役立たず
だからlongjmpがある
534デフォルトの名無しさん
2018/08/27(月) 14:22:47.97ID:Q5lEKL35 そんな制限キツかったっけ?
longjump の方がキツいでしょ
longjump の方がキツいでしょ
535デフォルトの名無しさん
2018/08/27(月) 14:23:38.81ID:vY3QDx2y 何がキツいって関数から出らんない
536デフォルトの名無しさん
2018/08/27(月) 14:34:05.72ID:J1p6Vf0T setjump/longjumpは簡易タスクディスパッチャーをC言語だけで実現するためだけにあるのかと思ってたよ。
それ以外の用途はあんまり思い浮かばないなぁ。
それ以外の用途はあんまり思い浮かばないなぁ。
537デフォルトの名無しさん
2018/08/27(月) 14:40:44.92ID:TsaU1TVW 自分で対処不能なエラーが起きたときに、初期化してやり直す時に使ったな
だもんで通常の処理の流れで使うものだとは思わなかった
だもんで通常の処理の流れで使うものだとは思わなかった
538デフォルトの名無しさん
2018/08/27(月) 16:09:02.07ID:vY3QDx2y ディスパッチャとしてはダメダメじゃん
jmp_buf jb;
void sig(int n)
{
longjmp(jb, 1);
}
int main(void)
{
signal(SIGINT, sig);
if (setjmp(jb) == 0) for (;;) ;
else puts("ok");
return 0;
}
俺んとこではokが出ない
おまいらんとこではどんな結果になる?
jmp_buf jb;
void sig(int n)
{
longjmp(jb, 1);
}
int main(void)
{
signal(SIGINT, sig);
if (setjmp(jb) == 0) for (;;) ;
else puts("ok");
return 0;
}
俺んとこではokが出ない
おまいらんとこではどんな結果になる?
539デフォルトの名無しさん
2018/08/27(月) 16:16:45.47ID:J1p6Vf0T 確かsignalとlongjmpは相性悪かったような?
よく覚えてないけど。
よく覚えてないけど。
540デフォルトの名無しさん
2018/08/27(月) 16:27:43.33ID:VuJs8kRo >>538
こちらは Linux (CentOS7)だが、出たよ。
こちらは Linux (CentOS7)だが、出たよ。
541デフォルトの名無しさん
2018/08/27(月) 16:29:13.02ID:VuJs8kRo >>539
sigsetjmp(), siglongjmp() ってのがあるので、そっち使った方が良さそうではあるな。
sigsetjmp(), siglongjmp() ってのがあるので、そっち使った方が良さそうではあるな。
542デフォルトの名無しさん
2018/08/27(月) 16:33:51.80ID:J1p6Vf0T Linuxとかならpthreadがあるのでわざわざ自分でディスパッチャ作ることはないと思うけど、組み込み用に簡易的に作ることはあるかもね。
俺は組み込みならprotothreadsのほうがシンプルで好き。
俺は組み込みならprotothreadsのほうがシンプルで好き。
543デフォルトの名無しさん
2018/08/27(月) 17:20:53.65ID:cJbIVPPr #include <signal.h>
void (*signal(int signum, void (*sighandler)(int signum)))(int signum);
この宣言が読めない
void (*signal(int signum, void (*sighandler)(int signum)))(int signum);
この宣言が読めない
544デフォルトの名無しさん
2018/08/27(月) 17:30:35.88ID:vY3QDx2y signal 関数名
signum 第1仮引数名
sighandler 第2仮引数名
sighandler ポインタ
*sighandler 関数
signum 第1仮引数名
signalの返却値はsighandlerと同じ型
signum 第1仮引数名
sighandler 第2仮引数名
sighandler ポインタ
*sighandler 関数
signum 第1仮引数名
signalの返却値はsighandlerと同じ型
545デフォルトの名無しさん
2018/08/27(月) 18:31:36.73ID:C1HpzEi0546デフォルトの名無しさん
2018/08/27(月) 18:49:30.60ID:C1HpzEi0547デフォルトの名無しさん
2018/08/27(月) 19:22:28.99ID:FN2jn8ES >>546
全て別の方法で実現しちゃうので、俺的にはlongjmpの必要性を感じないかな?
全て別の方法で実現しちゃうので、俺的にはlongjmpの必要性を感じないかな?
548デフォルトの名無しさん
2018/08/27(月) 19:30:11.24ID:m5aHtIH2 >>530
高度すぎてなに言ってるかわからん
高度すぎてなに言ってるかわからん
549デフォルトの名無しさん
2018/08/27(月) 19:46:09.70ID:nZJhjhuf まあデータの損傷をいきなりデータ構造そのものの破綻に結びつけるのは些か強引な論理展開ではあるな
550デフォルトの名無しさん
2018/08/27(月) 19:55:16.65ID:C1HpzEi0551デフォルトの名無しさん
2018/08/27(月) 20:08:36.09ID:FN2jn8ES >>550
こんな感じ。
OSのタスク切り替え処理
→普通にOSの機能を使う、カーネルなしで簡易ディスパッチャ実装はpthread
ブートローダーからアプリケーションへのジャンプ
→アドレス固定ならアドレスを関数ポインタにキャストしてジャンプ、またはインラインアセンブラ
リセット
→周辺機能やbssやdataセクションも初期化したいのでWDT等のCPUリセット機能を使う
例外処理
→密結合を避けるためオーソドックスに返り値で判定、最後にgoto使うかも?
そういや例外処理longjmpで思い出したけど、一昔以上前のCマガジンにマクロでC++と同じようなtry〜catch構文実装方法の記事があったけど、確かにそのマクロ内ではsetjmp/longjmp使ってたわ。
マクロでカプセル化してれば例外処理で使うかも。
こんな感じ。
OSのタスク切り替え処理
→普通にOSの機能を使う、カーネルなしで簡易ディスパッチャ実装はpthread
ブートローダーからアプリケーションへのジャンプ
→アドレス固定ならアドレスを関数ポインタにキャストしてジャンプ、またはインラインアセンブラ
リセット
→周辺機能やbssやdataセクションも初期化したいのでWDT等のCPUリセット機能を使う
例外処理
→密結合を避けるためオーソドックスに返り値で判定、最後にgoto使うかも?
そういや例外処理longjmpで思い出したけど、一昔以上前のCマガジンにマクロでC++と同じようなtry〜catch構文実装方法の記事があったけど、確かにそのマクロ内ではsetjmp/longjmp使ってたわ。
マクロでカプセル化してれば例外処理で使うかも。
552デフォルトの名無しさん
2018/08/27(月) 20:17:29.99ID:C1HpzEi0 カーネルなしでpthreadの意味がわからん
553デフォルトの名無しさん
2018/08/27(月) 20:21:53.00ID:FN2jn8ES554デフォルトの名無しさん
2018/08/28(火) 15:16:05.31ID:wM2MhSxp http://techtipshoge.blogspot.com/2011/02/blog-post.html
このサイトで、書いてることは正しいと思うしし、実際こうなるんだけど、俺の頭悪いせいでわからない。
駄目な例のsetStr(a)の a は、 &a[0] という”アドレス”を渡してる訳ではないんでしょうか?
なんで駄目な例だと上手くいかないのかという理屈がわからない・・・
このサイトで、書いてることは正しいと思うしし、実際こうなるんだけど、俺の頭悪いせいでわからない。
駄目な例のsetStr(a)の a は、 &a[0] という”アドレス”を渡してる訳ではないんでしょうか?
なんで駄目な例だと上手くいかないのかという理屈がわからない・・・
555デフォルトの名無しさん
2018/08/28(火) 15:16:57.00ID:wM2MhSxp あ、レスして気づいたけどcoutがあるってことはc++なのかな?
まあこれはprintfってことにしといてくださいw 重複質問になりそうなのでこちらで処理したい。
まあこれはprintfってことにしといてくださいw 重複質問になりそうなのでこちらで処理したい。
556さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/28(火) 15:27:14.25ID:cEEOiaf2 newもC++のキーワードなんだけど。。
関数に実引数のポインタを渡すとその値が、対応する仮引数に代入(コピー)され、以後、仮引数は変数のように使える。
仮引数の値を変えてもコピーが書き換えられるだけで元の実引数の値には影響しない。
書き換えられるようにするには、書き換えたい場所のアドレスを渡して、*演算子か、[]演算子を使わないといけない。
関数に実引数のポインタを渡すとその値が、対応する仮引数に代入(コピー)され、以後、仮引数は変数のように使える。
仮引数の値を変えてもコピーが書き換えられるだけで元の実引数の値には影響しない。
書き換えられるようにするには、書き換えたい場所のアドレスを渡して、*演算子か、[]演算子を使わないといけない。
557デフォルトの名無しさん
2018/08/28(火) 15:27:46.08ID:10z9ufr/ 駄目な例のa = new char [8];はmainのaの複製への代入なのでmainのaはNULLのまま
良い例の*a = new char [8];はmainのaそのものへの代入なので期待した結果が得られる
良い例の*a = new char [8];はmainのaそのものへの代入なので期待した結果が得られる
558さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/28(火) 15:37:02.95ID:cEEOiaf2 関数呼び出しのとき、実引数がどこにコピーされるかというと、「スタック」という積み上げ式のメモリーブロックか、一時的なCPUレジスタが使われる。
インラインではない関数呼び出しにおいては、関数の戻り先のアドレスと、仮引数のデータがスタックに積み上げられる。
積み上げ式だから、自分自身の関数を呼び出しても動作する。これを「再帰呼び出し」という。
インラインではない関数呼び出しにおいては、関数の戻り先のアドレスと、仮引数のデータがスタックに積み上げられる。
積み上げ式だから、自分自身の関数を呼び出しても動作する。これを「再帰呼び出し」という。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 働いて参ります
- ( ・᷄ὢ・᷅ )あ?
- 地震
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- ブタをぶったたく
