22/09/24 03:04:58.63 75jIGLYK0.net
>>447
蓮舫を育てようと思います。
465:デフォルトの名無しさん
22/09/24 03:08:40.20 75jIGLYK0.net
国民ファーストの政治を必要とするなら、自分で政党を立ち上げなければならない。
これ、もはや国家崩壊してるでしょ。
主権が国民に無い。
主権者が統一教会になっちまってる。
466:デフォルトの名無しさん
22/09/24 06:11:34.12 +qZ8jiZga.net
で、C言語話は…?
467:デフォルトの名無しさん
22/09/24 06:40:53.02 52DloiQc0.net
>>420
詳細知らんけどそれって単に契約のやり方がまずかったって話じゃねーの?
契約書に書いてないのに未来永劫パートナー契約し続けてもらえると思ってたなら頭おかしい
468:デフォルトの名無しさん
22/09/24 07:25:32.65 wr9kx4s90.net
書き込み順位&時間帯一覧
1 位/32 ID中 時間 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Total
書き込み数 9 0 12 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23
使用した名前一覧 書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ 5f01-JEMU)
デフォルトの名無しさん (ワッチョイ b701-JEMU [60.87.151.68])
C言語なら俺に聞け 159
【統計分析】機械学習・データマイニング32
469:デフォルトの名無しさん (ワッチョイ 7f2c-i8Eu)
[ここ壊れてます] .net
東大・財務省が中華。
御用学者の浜田・伊藤などが、日本の借金が千兆円あると嘘を流して、
30年間緊縮財政を続けて、軍事費を減らした
だから、高橋洋一・三橋・中田敦彦・山本太郎などが、
借金は本当に千兆円あるのかとか、YouTube で言い出した
30年間で金融緩和をしたのは、安倍・黒田だけ。
だから円安になって、労働人口が増えた。
それが民主党・中華に都合が悪かった。それで暗殺された
NHK 党の黒川がNHKの討論番組で歌った歌がある
「安倍は、おじいちゃんの代からCIA」
安倍の祖父・岸信介はCIAだから、戦犯を許されて総理になった。
CIAが共産党と戦うために、文鮮明・統一教会と組んだ。
これが反共産主義の国際勝共連合
でも、また財務省が円安を嫌って、為替介入した。
これには米国・欧州もあきれた。
金融緩和して、0金利を続けているのに、それとは逆の円高にするの?w
岸田ロボットを操作している木原官房副長官も、東大・財務省だから中華。
楽天も中華資本が入ってる。
だから、ガーシーに叩かれている
470:453
22/09/24 08:46:42.89 L5pk3riv0.net
RAPT理論プラスアルファ
ガーシーは中共のハニトラ工作員!! NHK党は中国共産党の工作機関
YouTube に動画あるけど、
このデマには、さすがにNHK 党も怒って、この動画の謎の美人2人を訴えると言ってるw
これはラプト様を使っての、ロリ谷・木原の逆襲かも
むしろ、中華のハニートラップは林。
大王製紙の井川が、安倍から聞いたと言ってた。
たぶん、林はハニトラに掛かっていると
471:デフォルトの名無しさん
22/09/24 10:52:53.07 9ODShywE0.net
�
472:\造体のメンバー変数にstaticが書けなくてつらい悲しい struct Hoge { static int x; static int y; };
473:デフォルトの名無しさん
22/09/24 11:31:35.42 Ohf7lvDf0.net
>>455
それで何がしたいの?
474:デフォルトの名無しさん
22/09/24 11:39:11.29 uYCDlyGwM.net
C言語的には
int Hoge_x;
だな
C++的には::で繋ぐところを、Cでは_で繋ぐ
それでええやん
475:デフォルトの名無しさん
22/09/24 12:15:29.27 52DloiQc0.net
>>455
static struct Hoge hoge; じゃダメなの?
476:デフォルトの名無しさん
22/09/24 12:49:54.31 OHRjm0Oh0.net
Java脳に3000ペリカ
477:デフォルトの名無しさん
22/09/24 13:02:23.00 9ODShywE0.net
もう覚えてないんだけど、countだけシングルトン風に管理したかったんだと思う。
struct Hoge{
static int count;
int data;
};
Hoge *hoge;
hoge=malloc(sizeof(Hoge)*n); // dataは配列
Hoge.count // countはシングルトンっぽく
478:デフォルトの名無しさん
22/09/24 13:27:17.87 52DloiQc0.net
>>460
ああなるほど、やりたくなる気持ちはわかるし実装もそんなに難しくはないように思う
ただそんな要望がどれだけあるかと言うと...
479:デフォルトの名無しさん
22/09/24 13:35:25.97 PoJJisuz0.net
>>453
10年以上かけて、ドイツにGDPを追い抜かれるんだから、アベノミクスは大失敗だよ。
専業主婦だった人はもとより、70歳以上の人まで働いてるんだよ。
そこまでして、国際的地位が落ちて行ってる。
これはもう、力の差を認めて、地道に教育に力を入れるしかない。
30年後の復活を目指して。
480:デフォルトの名無しさん
22/09/24 13:38:33.45 PoJJisuz0.net
女性や老人を働かせたことで、子供を見る人が居なくなり、出生率がさらに低下してる。
20年後の見通しもさらに悪化した。
481:デフォルトの名無しさん (テテンテンテン MMde-0S4t)
[ここ壊れてます] .net
>>461
いや実装は無理だろw
mallocしてんのに、一部分だけ共有するんだぞ
もっとデカイ単位なら仮想記憶のトリックで可能だろうけど
482:デフォルトの名無しさん (テテンテンテン MMde-0S4t)
[ここ壊れてます] .net
Cにnew演算子を導入するところから始めないといけないから、変更点がデカすぎる
483:デフォルトの名無しさん (ワッチョイ 12ad-r4yT)
[ここ壊れてます] .net
count だけポインタにして初期化の時に static の変数へのポインタ入れておけば良いんじゃね?
484:デフォルトの名無しさん (ワッチョイ 1201-ut7I)
[ここ壊れてます] .net
>>464
static の変数は静的領域に割り付けてそれ以外の変数だけをヒープやスタックに確保するだけでいいだろ
>>460 の例なら
static int _Hoge_count;
struct Hoge{
int data;
};
みたいな感じ
まあインスタンスを生成してないのにcount が割り付けられるのは気持ち悪いとかあるけど
485:はちみつ餃子
22/09/24 18:16:51.56 2HWwrIyG0.net
要するに C++ でやってるみたいに出来ればいいねという話だろう。
構造体を名前空間の一種としても使うとなるとマングルが必要になるから割と面倒な話だと思うよ。
486:デフォルトの名無しさん
22/09/24 18:20:14.80 5HKoejah0.net
>>460
C言語のstaticの意味を他の言語と勘違いしてるっぽい
487:デフォルトの名無しさん
22/09/24 18:22:42.35 Ohf7lvDf0.net
そこはC言語固有のキーワードではなく
言わんとするところをくみ取って許してやろう
488:デフォルトの名無しさん
22/09/24 18:38:39.89 5HKoejah0.net
そっか
489:デフォルトの名無しさん
22/09/24 19:23:44.32 52DloiQc0.net
>>469
関数内のstatic変数みたいな奴ってことだろ
490:デフォルトの名無しさん
22/09/24 19:29:04.02 Ohf7lvDf0.net
配列メンバーなのに実体は一つしかないという
491:デフォルトの名無しさん (ワッチョイ 9fe6-+bWc)
[ここ壊れてます] .net
>>425
ふむふむ、なるほど、複雑怪奇な仕様をねじ込む
492:ことで、より簡単な処理まで改善される、という理解でいいですか?
493:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-tX/F)
[ここ壊れてます] .net
>>474
複雑かどうかは重要じゃない。
対応せざるを得ない状況を押し付けるってことだよ。
494:デフォルトの名無しさん
22/09/25 01:07:06.13 97XvxZke0.net
>>431
Huawei App GalleryはAppleストアやGoogle Playを凌ぐ世界最大市場らしいが、少し考えれば当たり前の事だけど
かくいう俺のHuawei製スマホにはHuaweiとPlay両方入ってた、まあ日本向けアプリはPlayの方が充実してるのであまり使ってない
495:デフォルトの名無しさん
22/09/25 10:40:52.48 fwqkSCspH.net
>>475
うふふ、絵文字は各国ともやりたがっているので絵文字には対応せざるを得ない、すると漢字にも完璧な対応を強いられる、ってことですか、策士ですねえ‥‥
496:デフォルトの名無しさん
22/09/25 11:23:47.11 LohnzUwr0.net
unicodeのハングル文字登録で揉めたって聞いたけどどう決着ついたのかな。
497:デフォルトの名無しさん
22/09/25 13:10:20.12 5FaXssIeM.net
>>477
それが完璧にはならんのよ
東アジアの文字幅(East Asian Width)問題がある
ただ色々ワークアラウンドが有るからなんとかなる事が大半
498:デフォルトの名無しさん
22/09/25 13:14:31.77 weLer2R50.net
生後6ヶ月以上4歳以下もワクチン打たないと駄目だぞ
URLリンク(www.mhlw.go.jp)
499:デフォルトの名無しさん
22/09/25 13:15:17.92 weLer2R50.net
すまん誤爆した
500:デフォルトの名無しさん
22/09/25 20:31:15.08 g7GNUN1K0.net
>>340
そういう話ではない。外国人に対して見慣れない表現を使うのは古臭い。
501:デフォルトの名無しさん
22/09/25 20:35:04.13 g7GNUN1K0.net
>>344
それは単に日本語みたいな言語が世界の主流ではないから起こる現象。
半角のカナ文字だと濁点、半濁点はそれだけで1文字になる。
英語で日本語を打つときは濁音、半濁音記号を文字として打つ方が楽なのでそうしていることがある。
502:デフォルトの名無しさん
22/09/25 20:38:08.74 g7GNUN1K0.net
>>375
その数字と記号の融合表現は日本語独特のものだから。
英語圏はタイプライターの流れを受け継いでいる。
タイプライターだとたくさんの文字には対応できなかった。
503:デフォルトの名無しさん
22/09/25 20:40:05.44 ffdbvYikM.net
ウムラウトみたいな扱いでよかったな
504:デフォルトの名無しさん
22/09/25 21:43:25.78 N2ZwTqP1M.net
>>483
役所とかでフリガナ振る時、升目が有ると濁点を1文字として書いちゃうからな
そういう時に「か゛」みたいのに対応してるのは助かるのだろう
Unicodeはちゃんと1文字として表示してくれる
ま、しょうもない文化だよw
505:デフォルトの名無しさん
22/09/25 22:22:02.29 sgDwh9fo0.net
○の中にアラビア数字
別に違和感感じないと思うけどな
506:デフォルトの名無しさん
22/09/25 22:23:46.38 DPfmU3jJ0.net
①②・・・ああ、機種依存文字だから使うな!と言ってた時代があったなぁ。
507:デフォルトの名無しさん
22/09/25 22:25:44.57 eY/sWScXH.net
黒丸に白抜きで1~199
白丸に黒字で1~199
も準備してほしいなあ
508:デフォルトの名無しさん
22/09/25 22:27:37.06 sgDwh9fo0.net
アルファベットにアンダーライン入れるなんて普通にやってたけどな
509:デフォルトの名無しさん
22/09/25 22:38:12.24 sgDwh9fo0.net
LaTeXだと、これで○内に文字入れられる
\ajMaru{1}、\ajMaru{100}、\ajMaru{101}
510:デフォルトの名無しさん
22/09/25 23:05:05.48 g7GNUN1K0.net
>>487
それ�
511:ヘ日本で生まれ育って、ずっと日本にいるから。
512:デフォルトの名無しさん
22/09/25 23:06:50.59 g7GNUN1K0.net
>>488
それむしろ逆で、外国とのやり取りの際は、避けるのがいまの主流。
日本語事情に詳しくない外国人にとっては、丸囲みのニュアンスがわからない。
513:デフォルトの名無しさん
22/09/25 23:07:39.55 g7GNUN1K0.net
>>490
それ文字として分ける必要がないだろうに
514:デフォルトの名無しさん
22/09/25 23:10:54.01 sgDwh9fo0.net
丸数字も同じでしょう
アラビア数字の修飾なんだから
515:デフォルトの名無しさん
22/09/25 23:12:36.12 sgDwh9fo0.net
漢数字を丸囲みしたら、それは読めないかもしれないが
中味は万国共通のアラビア数字なんですよね
ローマ数字なんかよりは遙かに分かりやすいでしょう
516:デフォルトの名無しさん
22/09/25 23:13:51.02 sgDwh9fo0.net
避けるのが今の主流って言う根拠示せますか?
517:デフォルトの名無しさん
22/09/25 23:14:39.94 sgDwh9fo0.net
独自主張としか見えないんですよね
518:デフォルトの名無しさん
22/09/25 23:38:41.08 PDKGWlWe0.net
>>497
今と言うか昔から海外の資料で丸付数字なんて見たことない
って言うのは理由にならんか?
519:デフォルトの名無しさん
22/09/25 23:48:49.59 sgDwh9fo0.net
ならないでしょ
520:デフォルトの名無しさん
22/09/25 23:54:40.36 sgDwh9fo0.net
使われていないということと
避けるのが今の主流という主張では、
開きが大きすぎる
使ってはいけないものなら、
国際化される際に却下されても良いでしょう
ウムラウト等のアクセント記号も使ってはいけなくなりそう
英文字のアンダーラインと同様アラビア数字の修飾と受け取れば良いのでは
521:デフォルトの名無しさん
22/09/25 23:58:01.58 sgDwh9fo0.net
特に異議がなければ、スレ違いですので、私はこの話題は止めたいと思います
続けるまら、この板の文字コードスレに移動した方が良いと思います
522:デフォルトの名無しさん
22/09/26 14:23:54.07 heiSJ5NKa.net
よほど埋めたい話題が100レス以上前に
523:デフォルトの名無しさん
22/09/26 18:48:56.08 4uVE3Hdr0.net
>>497
日本のグローバル企業は、PCですら英語キーボードで統一している。
ファーストリテイリング社は日本でもすべて英語キーボード。
日本語、英語、中国語が社内公用語で、日本語特有の文字は使わない。
524:デフォルトの名無しさん
22/09/26 18:51:46.46 4uVE3Hdr0.net
>>502
あのさ、英語のドキュメントや、英語のマニュアルが原文の日本語で①や②なんて見たことねえだろ?
しかも丸で囲むことにたいした意味がない。
①だったら、1. と書けばいい。
525:デフォルトの名無しさん
22/09/26 19:13:51.47 m6MfDOb60.net
>>505
>>499 が実現すると記譜が書けるようになるんですけど
526:デフォルトの名無しさん
22/09/26 22:51:14.79 n/I9g/yq0.net
>>504
使う文字とキーボードってほとんど関係ないんじゃ?
527:デフォルトの名無しさん (ワッチョイ b35f-4fyb)
[ここ壊れてます] .net
>>507
じゃあ、英語のキーボードで日本語の記号をどれだけ変換なしで入力できるか、やってみて感想を書いてくれ。
528:デフォルトの名無しさん (ワッチョイ b35f-4fyb)
[ここ壊れてます] .net
英語のキーボードはとにかくキーが少ないから苦労するよ。
アプリケーションのショートカットキーも日本語版と英語版のアプリケーションで違ったりもする。
529:デフォルトの名無しさん (ワッチョイ 1263-tX/F)
[ここ壊れてます] .net
英語キーボードで、ドイツ語のsや、フランス語のcってどうやって入力するんだろう
変換無しで頼む
530:デフォルトの名無しさん (ワッチョイ 1263-tX/F)
[ここ壊れてます] .net
ちゃんと貼り付いてなかった
ドイツ語のエスツェット(βに似ている奴)、フランス語のシーセディーユ(ヒゲのあるC)
それぞれの国用キーボードだと入力は簡単なんだろうが
531:デフォルトの名無しさん
22/09/27 21:09:33.13 /UUTRmF20.net
>>508
変換なしって、カナ入力か?使ったことないからわかんないや。
というか、漢字の入力でさえ変換が必要なのにそんな変な縛りを入れる意図はなんだろう。
532:デフォルトの名無しさん
22/09/27 22:52:29.05 6x+L03Z70.net
ctrlなんとかで打つか
記号や
533:数字のキートップを犠牲にしているようですね
534:デフォルトの名無しさん
22/09/28 11:46:12.53 3agmovDa0.net
>>510,511
ß "s-zet" (ß): Hold down "control" and press the ampersand (&) (i.e. Shift + 7)
Cédille (ç), type ' then c. Circonflexe (ê), type ^ (shift + 6) then e. Tréma (ö), type ” (shift + ') then o. To type French quotation marks « » use ctrl + alt + [ and ], respectively.
535:デフォルトの名無しさん
22/09/28 21:52:38.01 rizFYsT00.net
スレチだったら申し訳無いんですが…
WinFormsやQt、WindowsOSのエクスプローラといったGUIのコントロール(ボタンやテキストボックス等)って
一般的にどの程度のインターバルでユーザの入力を監視しているものなんでしょうか?
モニターのリフレッシュレート?60Hzとか決め打ち?
536:デフォルトの名無しさん
22/09/28 22:06:07.08 FwwpeUCX0.net
1文字キー入力するとイベントが発生するので1文字毎じゃないの?
そういう話じゃなくて?
537:デフォルトの名無しさん
22/09/28 22:35:53.49 Jk2txA1W0.net
ゲームじゃないんだからフレームレート毎の判定になんて普通はならない
(大昔のゲームならボタンなどが押されたか判断する為に、レジスタをVBlank中にチェックするみたいなのはあった)
>>516が言う通り、OSがキーイベントが発生してGUI部品にも伝播されるからOSの処理に依存しているという感じかと
もっと細かく言えば、キーボードを押されると割込みが発生してOSがそれを処理し
該当のウィンドウのイベントキューにキーイベントを設定するみたいな流れかと思う
ボタンなどは大体が親ウィンドウから伝播される流れかと思う
538:はちみつ餃子
22/09/28 22:37:47.62 koSj9wX00.net
>>515
昔のデバイスではハードウェア割込みを使っていたが USB はホスト側からのポーリングが必要で、ポーリング周期は 1 ミリ秒。
監視の周期は 1 ミリ秒といえると思う。
私も詳しいことは知らんから規格を読んで。
539:デフォルトの名無しさん
22/09/28 23:04:30.86 rizFYsT00.net
画面の更新とは独立して検知しているんですね。
レスくれた方ありがとうございます。
540:デフォルトの名無しさん
22/09/28 23:08:09.59 TpKsshQJ0.net
このスレは言語だけでなくハードにも詳しい人がいるから面白い
541:デフォルトの名無しさん
22/09/29 00:10:32.04 SSQ+XiTZM.net
Linuxでマウスのポーリング間隔を計測したら124Hzだった
かなりの高頻度でポーリングしてんだな
USB3.0ポートに繋いでるからかもね
安もんマウスなんで高頻度過ぎて多分無意味w
542:デフォルトの名無しさん
22/09/29 02:33:05.99 LGluMbhi0.net
ここで聞いていいかわからないんですが、↓こういうことをCでできますか?
URLリンク(ideone.com)
func1~3を並列で動かしたいということです。
おかしな質問だったらごめんなさい。
543:デフォルトの名無しさん
22/09/29 03:21:58.53 A75TDx2R0.net
字面通りの仕様ならばFIFO QueueとThreadかな。あと排他制御も必要。
C++にはdequeというのがあるがC言語には無いのでFIFO Queueは自作。
threadとmutexはpthreadにある。
そもそも並列処理にする必要があるのかという疑問。
544:デフォルトの名無しさん
22/09/29 07:11:32.06 u1XdWODdd.net
その用途に
545:dequeはあんまり使いたくない
546:デフォルトの名無しさん
22/09/29 10:55:30.48 LGluMbhi0.net
>>523
なるほど、マルチスレッドならできそうですね。
ありがとうございました。
547:デフォルトの名無しさん
22/09/29 11:36:57.56 coJQxMplM.net
1reader 1writer なら、ロックの要らないリングバッファが有るからそれ使えば簡単
548:デフォルトの名無しさん
22/09/29 20:52:44.75 JJSkrqV80.net
>>515
それ機械的な割り込みのことを聞いているのか?
549:デフォルトの名無しさん
22/09/29 20:58:02.77 JJSkrqV80.net
出力と入力が同じようなものと思うの発想が斬新だなw
550:デフォルトの名無しさん
22/09/29 21:32:48.50 mQhfaXoY0.net
V-Sync割り込みとかで止まってる爺かも
551:デフォルトの名無しさん
22/09/29 23:05:54.85 A5fNHdBh0.net
HALTして割り込みで復帰が普通
552:デフォルトの名無しさん
22/09/30 03:14:55.05 iZ78CqR8a.net
質問者はキーボードやマウスなど入力と、画面の表示が一緒だと思っているようなコンピューターオンチだ。
画面はパラパラアニメだということもわかっていない。
アニメや映画の仕組みもわかっていないレベル。
553:デフォルトの名無しさん
22/09/30 03:21:25.79 iZ78CqR8a.net
ハードウェアよりBIOS、BIOSよりOSが低レベルを担っていると思うのは、すべてが逆だよな。
日本人は機械がなくてもWindowsがあれば、掃除機が出現すると思うレベルまでITオンチが進んだのか。
とにかくおそろしい。
554:デフォルトの名無しさん
22/09/30 07:11:56.10 8MIWcIcdd.net
通販?
555:デフォルトの名無しさん
22/09/30 09:18:49.43 gcn5oswqr.net
>>518
URLリンク(www.kumikomi.net)
本家あたるのはしんどいので、似たところでこれか
USB の電線上では 1ms(125us) だけど
USBホストコントローラから CPUへ割り込みの発生もやってるっぽい (ホットプラグ関連)
556:デフォルトの名無しさん
22/09/30 18:40:09.67 J+iH2myB0.net
一部のゲームだとOSから発生したマウスイベントを処理するんじゃなくてゲームのメインスレッドでボタン押下をチェックしてボタン押下の処理をすることもあるし、
質問者がそう思うのも不思議じゃないかな。
普通のGUIフレームワークじゃイベントはキューに貯まると思うけども。
557:デフォルトの名無しさん
22/09/30 20:39:03.45 wR7Vqe0SM.net
家庭用ゲーム機の場合は入力をポーリングしてる気がしないな
ゲームコード側から1/60秒毎に要求が有るからそれに対応すれば良いだけだし
ま、確証は無いけどね
558:デフォルトの名無しさん
22/09/30 20:54:41.19 J+iH2myB0.net
実際処理落ちするとフレームが更新されるまでボタンを押し続けないと駄目なゲームって結構あるでしょ。そういうことだよね。OpenGLなんかでプログラム書くと普通にグラフィック更新とキー処理なんかは同じスレッドでするしね。
普通のGUIアプリでもOSのカーネルタスクがめちゃくちゃ重くなるとキー入力を取りこぼしたりするのは、ポーリングが人間の入力に間に合ってないからだと思うな。遅れるわけじゃなくて初めと最後だけ入力されたりとかする。
559:はちみつ餃子
22/10/01 01:21:56.84 yMZ0QeEO0.net
アプリケーションレイヤでの話としては Windows のコントロールは基本的にメッセージを介した非同期的な
処理なので周期もくそもないんだけどこのスレに現れて GUI フレームワークの知識があるくらいの人 (>>515) が
イベントドリブンの理念を知らないなんてことあるだろうか?
根本的な勘違いをしているのか質問が下手なのか。
どういう事情があってこういう質問をしたのか気になる。
一応はある瞬間に状態を取得する API (GetAsyncKeyState)
560:もあってゲームとかではそれを使うこともあるが…… その場合にはディスプレイのフレームレート (というかそのソフトで画面を書き換える頻度) 以上の頻度で読んでもあまり意味がないから フレームレートに合わせるということはあるかもしれんね。
561:デフォルトの名無しさん
22/10/01 01:42:40.84 QBMbIy+T0.net
ある8bitPCのBASICでVsync割り込み時にキーボード信号読み取ってたの思い出した。
(INPUT、INKEY$等キーバッファ関連用)
562:デフォルトの名無しさん
22/10/01 01:53:45.14 6Ogoexfu0.net
ファミコンやスーパーファミコン時代はVSync割込みが始まってVBlank期間内に
あらゆるレジスタの入出力をしないといけないので、キー関連はそのタイミングで取得して
内部の特定ワークに保存(一つ前の情報も残しておいて押しっぱなしかどうかの判断も出来るようにする)してた
最近だとUnityでもキーの状態を取得する処理があるので
ゲームだと処理タイミングの時点で取得も普通にあるという事なのだろう
563:デフォルトの名無しさん
22/10/01 09:29:35.56 k1H7sgVC0.net
陰気$
陰茎$
564:デフォルトの名無しさん
22/10/01 14:27:53.39 AfDQiB090.net
>>535
それDirectXとかの場合でしょ?、
565:デフォルトの名無しさん
22/10/02 14:33:41.09 HMtDa2gtd.net
>>540
ハードウェア上の要求というより
画面上のキャラが1単位動く間に2回以上キー入力できても意味がないから…
ゲームセンターあらしではパックマンのモンスターが1/60秒に一回しか動けないことを見きってそれ以上の速度で動いてかわしてたっけなw
566:デフォルトの名無しさん
22/10/02 17:08:59.14 6R54+eoOM.net
炎のコマw
自機だけ超速で動かすとか、絶体不可能なのはちょっと考えれば分かる事だが、子供の頃は夢中になって読んでたな
平和な時代だった
567:デフォルトの名無しさん
22/10/03 07:25:12.33 W4n4sBc4d.net
高橋名人は16連射してたけど、1ギガ連射位すれば高周波で誤動作させたりできるんじゃね? 知らんけどw
568:デフォルトの名無しさん (ワッチョイ 7f36-8eI1)
[ここ壊れてます] .net
某レースゲームは画像は60fpsでも内部では120fpsだか240fpsで処理(挙動計算?)
してるってインタビューあったわ。
当時はすげぇと思ったけど、PCの場合モニタのフレーム数(60/144Hzの違いとか)によって挙動(操作感覚)
が変わるの防ぐには必要な仕様なんだと思った。
569:デフォルトの名無しさん
22/10/03 09:27:43.78 f3Oj1zc00.net
この話に標本化定理って関係ある?
570:デフォルトの名無しさん
22/10/03 11:06:24.59 BGisZcina.net
>>515
ポーリングじゃなくてハードウェア割込みでメッセージキューに入るんだろ
敢えてポーリングってことで言うならメッセージループディスパッチャを回す速度に依存
571:デフォルトの名無しさん
22/10/03 11:12:07.71 BGisZcina.net
>>534
USBじゃなくて受信機がUSB接続のリモコンとか
bluetoothの可能性もあるな
572:デフォルトの名無しさん (ワッチョイ 2369-7uza)
[ここ壊れてます] .net
>>549
(Windowsで)キーボード・マウスの HIDドライバがどういうことやってるか調べることになりそうだな
イベントドリブンになってるのか、テーブル更新しつつ親元でポーリングしてもらうのか
573:デフォルトの名無しさん
22/10/03 16:42:09.20 wqwjoJ6ZM.net
>>546
物理エンジンは1フレーム内でほんのちょっとずつ動かしながら何10回も計算するよ
現実を模倣するには無限大回数計算しないといけないけど、コンピューターでそんなこと不可能だし、floatの精度の問題も有るから適当なところで妥協しないといけない
その�
574:モが工夫のしどころなんだろう
575:デフォルトの名無しさん (スッププ Sdff-o6p2)
[ここ壊れてます] .net
その最少単位をフレームと呼ぶんじゃないかね
576:デフォルトの名無しさん (ワンミングク MM9f-A0fl)
[ここ壊れてます] .net
処理回数なんてメインループのsleep(0.1)をsleep(0.05)にするだけじゃね
577:デフォルトの名無しさん
22/10/03 23:10:54.51 i+Hjk1b8M.net
>>552
いや、1/60秒は余りにも刻みが粗すぎる
もちろん表示するのは1/60秒の1フレーム単位だけど
578:デフォルトの名無しさん
22/10/04 06:12:56.51 zVvu+tPFd.net
1/60が「フレーム」じゃないぞ
579:デフォルトの名無しさん
22/10/04 17:12:48.24 yz9a92LC0.net
画面表示の仕組みを知らないやつは延々と変なことを言い続けるんだろうな
580:デフォルトの名無しさん
22/10/04 17:45:25.41 aM4Np9N0d.net
昔は単純だったな
1/60か1/30程度の違いしかなかった
今では画面リフレッシュ・画面レンダリング・ゲームメインのすべてフレームレートが違うこともあり得る
581:デフォルトの名無しさん
22/10/04 19:20:23.55 HRzr8cMv0.net
URLリンク(ja.wikipedia.org)
フレームレート (Frame rate)は、動画において、単位時間あたりに処理させるフレームすなわち「コマ」の数(静止画像数)を示す、頻度の数値である[1]。
582:デフォルトの名無しさん
22/10/05 15:02:45.22 e4u4SFLE0.net
>>557
そういう話ではない
583:デフォルトの名無しさん
22/10/05 15:08:40.11 j989iulk0.net
ここはC言語のスレなんだから、もうちょっとC言語寄りの話題に
584:デフォルトの名無しさん
22/10/07 12:25:51.07 d4ub3t4La.net
最小tickがOSのAPIに依存する件
(というか関数毎に違うよね)
585:デフォルトの名無しさん (スッップ Sd1f-o6p2)
[ここ壊れてます] .net
APIは単に最少論理単位を定義してるだけで実際の最少単位はOSバージョンやハード構成によって変わるはず
586:デフォルトの名無しさん (スッップ Sd1f-o6p2)
[ここ壊れてます] .net
>>558
>CGの用語では、この処理レートを「フレームレート」と呼ぶ場合があったため、混乱が生じた。
587:デフォルトの名無しさん
22/10/07 22:30:13.84 XEr8QNZEM.net
VRAMにあるデータを決まった間隔でモニターに表示する。
VRAMのデータの書き換え速度はビデオボードによる。
C言語そのものは画面表示の速度の規約がない。
C言語は画面表示のライブラリすら持っていない。
588:デフォルトの名無しさん
22/10/08 04:40:32.95 M3iYd9Ol0.net
日本が世界に誇るハイレゾリューション VGA 640x480 60 Hz インタレース。
日本の技術は世界一。
589:デフォルトの名無しさん
22/10/08 10:43:30.99 PvpQyv2P0.net
おじいちゃん、その昔話は耳にタコが出来るくらい聞いたわよ(´・ω・`)
590:デフォルトの名無しさん
22/10/08 12:19:20.81 ZnjC3ipUd.net
PC98やファミコン時代の話は誰も求めてないだろw
591:デフォルトの名無しさん
22/10/08 13:35:27.64 bICsKedU0.net
MSXは?
592:デフォルトの名無しさん
22/10/08 20:16:07.42 ymYjs6gE0.net
>>565
PC-9801 は 640x400 じゃなかったかな?
640x480 の VGA は IBM-PC の方だからアメリカでは?
593:デフォルトの名無しさん
22/10/08 20:26:05.65 0FC8+6ie0.net
IBM-PC 最初の頃の規格だとCGAで80x25、640x200だったような
8000シリーズでもこれに合わせてたような
VGAはPS/2あたりから出てきたんじゃなかったかな
EGA, MCGA, VGA, SVGA, XGAとか、色々あったっけな
594:デフォルトの名無しさん
22/10/08 21:21:27.32 HMr71tmI0.net
>>569
だよな
98は400を「超高解像度」と言ってたw
595:デフォルトの名無しさん
22/10/08 22:15:12.93 ZFrVAqsjM.net
VGAと言ったら320x200だな
1ドット1バイトなので丁度64KBになって、16bitコードがリニアにアクセス出来た
ただ、1ドットが正方形じゃないので、正方形のMode X(320x240)を使うにはDOSエクステンダーが必要だったな
596:デフォルトの名無しさん
22/10/08 23:35:22.44 +S45qfPzd.net
>>572
どーでもいいことだが
聞き捨てならんw
320x200は65536じゃねーよw
597:デフォルトの名無しさん
22/10/08 23:45:07.70 0FC8+6ie0.net
じゃあ、PC8001 はVGAだったんだな
598:デフォルトの名無しさん
22/10/08 23:49:08.81 uyhPMEAG0.net
画面に表示されない、VRAMの余り部分はCG用ワークエリアに使われることが多い。
88とかは1プレーンに16Kバイト用意されてるけど、表示されるエリアは640ドット(80バイト)x200ラインで16000バイト。
あまった384バイトを使って背景とキャラを重ね合わせ描画をして表示エリアへ転送とかやってた。
話をプログラム寄りにもどして、
ゲームでCG表示が他ゲーより余りに遅いの見かけると、
CG周りをアセンブラじゃなくてC等の高級言語で書いてるんじゃないかと邪推してた。
599:デフォルトの名無しさん
22/10/08 23:52:19.01 ymYjs6gE0.net
縦が200ドットというのはNTSCでの出力の都合だろうな。
600:デフォルトの名無しさん
22/10/09 00:46:24.07 MI3uCIAzM.net
>>573
丁度じゃなかったw
ま、64KB以内ということで
601:デフォルトの名無しさん
22/10/09 04:58:58.93 PpV7AUpt0.net
そういや昔インターレースなのを利用して400ドットを表示するなんてことやってなかった?
チラチラして見れたもんじゃないが一応表示はされるという。
602:デフォルトの名無しさん
22/10/09 06:16:13.64 pElHhn0J0.net
>>578
Basic Master Level 3 かな
かな文字表示のためにインターレース表示しててチラつき防止のために専用の長残光ディスプレイがあった
603:デフォルトの名無しさん
22/10/09 11:31:59.17 ktekxUQbd.net
わー懐かしい
カーソル点滅が速くて仲間内でハイフラって呼んでた
604:デフォルトの名無しさん
22/10/09 15:31:02.03 ER77cUawF.net
PC98でラスター480表示するTSRも存在した希ガス
605:デフォルトの名無しさん
22/10/09 16:21:41.40 bJ7Ye0Ve0.net
26行計画だっけか?
表示エリアの外に表示しますってプログラムがあったね
606:デフォルトの名無しさん
22/10/09 16:56:05.30 Rj5ElR5Pd.net
30行計画
607:デフォルトの名無しさん
22/10/09 17:07:00.15 Rj5ElR5Pd.net
FDDのオーバートラック
286のHMA
CRTCをプログラムでハード破壊
なんか、こういうの色々あったな
608:デフォルトの名無しさん
22/10/09 20:59:59.12 x4NHwN4o0.net
C言語ってパソコンの内部まで理解してないとムズイ?
メモリがどうとかクロック数が幾つとか
609:デフォルトの名無しさん
22/10/09 21:14:06.38 pElHhn0J0.net
>>585
> メモリがどうとかクロック数が幾つとか
そんなものは知らなくても組めるけどそもそもC言語使う必要あるのか?
610:はちみつ餃子
22/10/10 00:47:38.73 95zl+JNn0.net
>>585
C の言語仕様は言語仕様上で規定する仮想的な機械の挙動として記述されていて
現実の処理系がどのような機械語を生成するのかは規定してない。
見かけ上の挙動が仕様通りならどういう機械語が生成されてもよいことになってる。
現代的な処理系はすごく高度な最適化をするのでどういう機械語が生成されるのか事前に想像するのは難しいし。
どうしてもすごく高速に動いてほしいプログラムを気合い入れてチューニングしたりする場合には
ハードウェアの知識が
611:必要になることも有るし、 他の言語との接続が必要なときにはメモリの管理方法を協調させないとおかしなことになったりもするけど 結局のところやりたいこと次第だし、入門レベルでは気にする必要はない。 今ならアプリケーションレイヤで動くプログラムでクロックを意識するようなことはまずない。 現代のパソコンやスマホくらいの高級な CPU では機械語を分解して 最適化した内部命令 (インテルだと μop と呼んでいるようだがメーカーによって名称はいろいろ) を生成したりする 工程があるので、クロックも一定とは限らない。 そこまで高度なことをしない CPU でもだいぶん前からパイプラインは採用されてるから、 単純に命令ごとのクロック数を合算した値が処理時間になったりはしないし。
612:デフォルトの名無しさん
22/10/10 01:08:56.92 dL9jKsv+0.net
i++; 辺りは効率の良い機械語翻訳を期待していると思う
613:はちみつ餃子
22/10/10 01:16:27.83 95zl+JNn0.net
言語仕様で規定する仮想的な機械が (C が初期に使われ始めたコンピュータである) PDP と親和性が良すぎるので C のことを PDP エミュレータと揶揄することもあるらしいね。
614:デフォルトの名無しさん
22/10/10 06:33:30.58 ICu0RgND0.net
>>585
何のプログラムを作るかによる
おまえさんが言うようにハードがわかる必要があったり
簿記や不動産取引がわかる必要があったり
615:デフォルトの名無しさん
22/10/10 08:21:20.44 C38R1GQo0.net
おそらくそこまで高度なことは求めてないよ
クロックという言葉を知ってたから口走ってしまっただけで意図としてはハードウェアの知識をつけないとC言語は使えないのかと聞きたかっただけだと思う
616:デフォルトの名無しさん (ワッチョイ 8a7c-O9y3)
[ここ壊れてます] .net
C言語関連のシステム系の質問していいですか?
微妙にスレチっぽいですが、このスレの人が一番詳しそうなのでご容赦ください。
最近Windows Server 2019マシンを導入し、Windows10で使っていたソフト(他社製)を持ってきたところ
ほぼ全部問題なく動くのですが、一つだけ10倍以上遅いソフトがありました。
そのソフトはexe1個のみの構成で、Dependency Walkerで調べると C:\Windows\System32\msvcrt.dll に依存していました。
(他の正常動作するソフトでmsvcrt.dllに依存するものはなし)
Cにはあまり詳しくないのですが、昔mallocが異様に遅い環境で苦しんだことを思い出し
もしかしてWindows Server 2019のmsvcrt.dllの出来が悪いor相性問題が原因なのではと思いました。
そこで考えたのですが、Windows10のmsvcrt.dllを持ってきて使ってみるというのはどうでしょうか?
とりあえず速度が正常に戻ってくれれば十分なのですが、やめたほうがいいでしょうか?
617:デフォルトの名無しさん (アウアウウー Sa2f-tmeX)
[ここ壊れてます] .net
やめた方がいい
絶対他に原因あるわ
618:デフォルトの名無しさん
22/10/10 11:44:15.39 5N3s1AfQ0.net
>>593
やっぱりそうですかね・・・
リソースモニターとかで調べてはみたものの原因がさっぱり分かりません。
特にIOが遅いように感じるんですが、ハイグレードなSSDを積んでいるのでハードとしては問題ないと思います。
100万円クラスのマシンですし他のハードもスペック的には問題ないはずです。
ちなみに試しにWindows10のmsvcrt.dllをexeと同じフォルダに置いてみたのですが、どうも使われていなさそう。
dll検索順ってカレントディレクトリが最優先じゃなかったでしたっけ?
できるか知りませんが、System32のdllをspecificに参照するようになっていたらそもそも無理ですね。
開発元に聞けたらいいのだけど諸
619:事情でそれが不可能です。
620:デフォルトの名無しさん
22/10/10 13:06:26.88 +EPzVvoud.net
微妙じゃなくて完全にスレチw
Windowsシステム関連のスレで聞いたほうがいいと思う
621:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-kHT+)
[ここ壊れてます] .net
>>594
> dll検索順ってカレントディレクトリが最優先
もし単純にそういう順序を適用するとマルウェアがファイルをそこに置くだけでプロセスを乗っ取れてしまう。
レジストリのどこかに登録されているやつは別扱いにするとかのややこしいルールがあったはず。
> 特に IO が遅いように感じる
IO が遅いというのが事実だとしたら
① 物理的に乗っているのが SSD でもハードウェアの自動認識が誤っていて古いインターフェイスでやり取りしている
② たまたまそのアプリケーションがデバイスドライバかコントローラのバグを踏むような制御になっている
② HDD で性能が出るようにアプリケーション内で凝った制御をしていたが SSD が速すぎて狂った
などの事情は思いつくけど……
622:デフォルトの名無しさん
22/10/10 14:32:16.59 5N3s1AfQ0.net
>>595
Windowsシステム関連のスレがないか探しましたが、どうもこれというのがないんですよね。
Windows板かな?あそこは一般コンシューマが多くてこの手の質問はしにくいのが・・・。
引き続き海外フォーラムを漁ってみます。
>>596
詳しくありがとうございます。
ご提示のものが原因とすると、ちょっと自分の手に余りそうです。
他の似たようなソフトは軒並み問題ないのに何でこのソフトだけ・・・と釈然としませんが
どのWindowsでも同じように動きますなんてそう甘い話はないということかな。
623:デフォルトの名無しさん
22/10/10 14:37:10.94 1bdf6+Ty0.net
存在しないネットワークドライブにアクセスしに行って、タイムアウトするまで固まるとかは時々遭遇するけどはたして
624:デフォルトの名無しさん
22/10/10 14:51:34.42 YCEUCnMua.net
ていうか作者に障害報告しろや
625:デフォルトの名無しさん
22/10/10 14:56:11.84 mfO2JKX70.net
ライセンス料を払いたくないやつかな?
626:デフォルトの名無しさん
22/10/10 14:58:25.83 2QXR7TRNd.net
鯖機だとベンダー独自の機器やドライバが入ってたりするだろうから分かる奴はほぼいないだろうな
627:デフォルトの名無しさん
22/10/10 15:00:55.06 dL9jKsv+0.net
>>597
>一つだけ10倍以上遅いソフト
この製造元に聞くのが最短だと思う
628:デフォルトの名無しさん
22/10/10 18:15:26.96 5N3s1AfQ0.net
製造元には軽く聞いてみたのですがサポート対象外ですと一蹴されました。
諸事情により相手のほうが立場が上で、現段階でこれ以上聞き出すのは難しいのですが
上手く機会を作って情報を得たいと思います。
皆さんありがとうございました。
629:デフォルトの名無しさん
22/10/11 07:55:01.73 1DnVcsvQd.net
やはりな
630:デフォルトの名無しさん
22/10/11 08:00:48.49 +IdMirEn0.net
Windows Server で Hyper-V 動かしてその上に Windows 10 入れてそのアプリ動かせばええやん
631:デフォルトの名無しさん
22/10/11 09:05:08.75 1DnVcsvQd.net
ハイパーバイザー型よりホスト型の方が融通効くしフリーのもある
632:デフォルトの名無しさん
22/10/11 09:19:51.89 lDI8MaGS0.net
個人利用なら好きにすればいいけど共用のサーバー機でそんなことして問題起きると責任問題になるよ
633:デフォルトの名無しさん
22/10/11 09:26:18.23 +IdMirEn0.net
>>606
Hyper-V は両方あるからわざわざ 「Windows Server で」って書いてある
>>607
普通はシステムのdll置き換えようとしてる時点で責任問題になるしそもそも Windows 10からアプリ持ってきてる時点でライセンス大丈夫か?って思うだろ
634:デフォルトの名無しさん
22/10/11 09:44:54.24 S5uegLjFa.net
msvcrtってMicroSoft Visual C/c++ RunTimeなんだよね
C言語ってライブラリを静的リンクすることが多いけど共通部分をdllにしたらディスク容量が少なくて済むんじゃねって発想で作られた過去の遺物
今は積極的に使うべきものじゃない
おそらく古い古いソフトなんじゃね
635:デフォルトの名無しさん
22/10/11 09:48:41.00 S5uegLjFa.net
そういう古いソフトは当然のように32ビット(ひどい時には16ビット)だから64ビット環境ではエミュレーションが働く
その辺に何かありそうな気がするな知らんけど
コンパイルし直せば直るような気がしないでもないがメーカーが対応する気ないんじゃどうしようもない
636:デフォルトの名無しさん
22/10/11 14:18:13.05 UUE3JARA0.net
>>585
メモリとハードディスクの違いくらいはわかってないと無理でしょ
637:デフォルトの名無しさん
22/10/11 14:24:20.66 e/MLj7zo0.net
Z80 は楽だったなあ
638:ハノン108
22/10/11 18:29:10.92 RNyxjBqNH.net
>>610
16ビットはエミュレーションは利きません!
639:デフォルトの名無しさん
22/10/11 18:50:36.59 D4ywmAPt0.net
>>613
なんで?
URLリンク(learn.microsoft.com)
640:デフォルトの名無しさん
22/10/11 19:07:33.88 M2HX+v9qM.net
64bit Windowsでは16bitアプリは動かせない(エミュレーション環境は32bitだけ)
32bit版Win10 ならかろうじて可能性はあるがWinServer2019は64bitだけなので完全に無理
641:ハノン
22/10/11 19:10:36.62 RNyxjBqNH.net
>>614
それは 32 ビット版 Windows の話
64 ビット版 Windows は 16ビットアプリを捨てました、AMD64 アーキをもっと勉強してね!
642:デフォルトの名無しさん
22/10/11 19:31:53.97 D4ywmAPt0.net
>>616
サードパーティだがWineVDMというのを使えば動くようだ
勉強になったか?
643:デフォルトの名無しさん
22/10/11 19:49:30.50 e/MLj7zo0.net
32ビット版の仮想を動かしてその中で16ビットアプリを動かす事は出来る
そういう多段ロケット使えば良いんだがそこまでして今動かすものがないw
644:デフォルトの名無しさん
22/10/11 20:01:38.90 1DnVcsvQd.net
>>616
64bitホストに32bitゲスト載せるとさ
普通に16bitアプリを実行できるんだけど
本当にハード的に不可能なんかね?
645:デフォルトの名無しさん
22/10/11 20:05:48.94 1DnVcsvQd.net
32bit OSでは4GB超えできないとかさ
マイクソの集団催眠にかかったやつの言う
ちったあ勉強しろってマウントは
呆れるの通り越して笑う価値もない
646:デフォルトの名無しさん
22/10/11 20:10:22.58 D4ywmAPt0.net
エミュレータ使うならできない理由はないなあ
単にマイクロソフトが自前のエミュレータの提供をやめたというだけでAMD64がどうとか言うのは知識不足のマウンターの妄言としか思えないな
647:デフォルトの名無しさん
22/10/11 20:51:12.11 X1iGovPsM.net
32ビットすら打ち切りたそうなのに?
648:デフォルトの名無しさん
22/10/11 22:06:01.71 aJhELtxJ0.net
じゃあまずお好きな言語でエミュレータを作ってそこで動くZ80プログラムを作れ。
649:デフォルトの名無しさん
22/10/11 22:06:38.42 aJhELtxJ0.net
リロード忘れた。間に山盛りに他の書き込みが。
削除できないからもういいや。わすれてくれ。
650:デフォルトの名無しさん
22/10/11 22:31:48.32 aIs/ZXKV0.net
XP mode はエミュレータか? おいサル
651:ハノン
22/10/11 22:36:50.66 d6pThQK8H.net
>>617,619
それってエミュレータでしょ?仮想的なCPUをコードでガリガリ書いてインタプリタしているって奴、そんなのでもまともに動く時代になったんですねえ
>>618,619
私も 16 ビットを 64 ビットで動かすときはエミュっています
URLリンク(takeda-toshiya.my.coocan.jp) が有名で私も便利に使っています
652:デフォルトの名無しさん
22/10/11 22:46:46.46 D4ywmAPt0.net
>>626
AMD64の
653:勉強したらこの話に関係ないことがわかったか?
654:デフォルトの名無しさん
22/10/11 23:02:05.82 d6pThQK8H.net
まあ私も「エミュレーション」という言葉を、ソフトウェアによるエミュレーションか、80386 がやり始めた仮想86モードという意味でのエミュレーションかをはっきり区別せずにパンパン書いたせいもありますね、ごめんなさいね
655:デフォルトの名無しさん
22/10/11 23:04:40.15 D4ywmAPt0.net
WOW64とサンクはその話とはまた別だぞ
それはハードの話だろ
MSが提供しなくなったのはサンクだ
656:デフォルトの名無しさん
22/10/11 23:21:05.30 aJhELtxJ0.net
thanks
657:デフォルトの名無しさん
22/10/12 01:05:29.68 P/bHT4Cpr.net
サークルKサンクス潰れたから提供のしようがない
658:デフォルトの名無しさん
22/10/15 18:58:46.26 fQccGg0Vd.net
なぜつまらないとわかっていてオヤジギャグを何故言ってしまうのか
チコちゃんで脳科学的に分析してて笑ったわw
659:デフォルトの名無しさん
22/10/15 19:44:27.23 jaz9tT2QH.net
>>632
なんでなんで!
660:デフォルトの名無しさん
22/10/20 03:24:32.42 y3K9DSVg0.net
ジジイだからだよ。
661:デフォルトの名無しさん
22/10/20 11:13:15.74 SiOwIn850.net
ここはジジイしかいないからな
662:デフォルトの名無しさん
22/10/20 19:25:01.75 aXExphHPd.net
>>633
歳を取ると語彙が増えていき頭の中でダジャレが浮かびやすくなる
それと同時にセンスが低下して面白いギャグかどうかがだんだんわからなくなる
結果的におっさんはつまらないダジャレを思いついたらすぐ言うようになる
663:デフォルトの名無しさん
22/10/20 19:54:53.72 UUAxnkpP0.net
オヤジギャグやダジャレより
連想したものをただ言ってれば、
例えツッコミ扱いしてくれて楽だろう
664:デフォルトの名無しさん
22/10/20 19:58:46.29 4Jg9TvVE0.net
つまらなくても笑えよ。敬老精神が欠如しているのか。
665:デフォルトの名無しさん
22/10/20 20:00:11.34 SiOwIn850.net
ソースにもだじゃれ入れてそう
666:デフォルトの名無しさん
22/10/20 20:25:40.72 w47Nq7BKH.net
>>639
char aznable
667:デフォルトの名無しさん
22/10/20 22:06:49.25 SiOwIn850.net
カウント変数にcuntは止めろとねんを押された
668:デフォルトの名無しさん
22/10/20 22:28:20.65 NFETJM8p0.net
コーディング規約があるなら守りましょう
669:デフォルトの名無しさん
22/10/20 22:29:14.08 NFETJM8p0.net
一瞬idがNEETかと思ったが違ったw
670:デフォルトの名無しさん
22/10/20 22:48:13.58 SiOwIn850.net
ソースではなく、make終了時にBIGCOCKと表示させてた奴を知ってる
本人いたら、ゴメンナサイ、バラしました
671:デフォルトの名無しさん
22/10/21 21:25:54.17 CZbur0iYd.net
そう、こういうの
全然どうでもいい事をさも重要な秘密のようにw
672:デフォルトの名無しさん
22/10/30 07:10:33.74 9/1OGIJE0.net
独り言です
インデントは4を使ってきたのだがプロの世界?では2みたいだな
軽くショックを受けた
673:デフォルトの名無しさん
22/10/30 07:12:57.69 9/1OGIJE0.net
ちなみにインデント2を使ってるのはcatコマンドのソースです
URLリンク(sources.debian.org)
674:デフォルトの名無しさん
22/10/30 07:27:37.61 i1fpLCEI0.net
プロの現場にそういうところもあるというだけだよ
1つ目撃したからってそれが全てだと思うのは
早まった一般化という誤謬だ
誤謬を多発するやつは論理思考が苦手ってことだ
むろんプログラマとしての適性ではマイナス要素だ
675:デフォルトの名無しさん
22/10/30 07:32:06.64 A1wSH6ms0.net
昔は画面が狭かったからそういう主義のやつも割といた
そろそろ淘汰されてる頃じゃね
676:デフォルトの名無しさん
22/10/30 07:39:15.76 i1fpLCEI0.net
一画面ルールってのもあったな
677:デフォルトの名無しさん
22/10/30 08:27:39.75 HgiMaBnhM.net
今でもそこそこ使われてるだろ
一画面とは言わないまでも100行ルールとかの発展型も多い
ひとつの関数が何千行もあればコードレビューで問題にされる
678:デフォルトの名無しさん
22/10/30 08:40:19.94 i1fpLCEI0.net
ダラダラ書くなって話が廃れたとは言ってないんだが
679:デフォルトの名無しさん
22/10/30 09:25:59.68 +gGQ3BRS0.net
GNUスタイルのインデントはゴミ
680:デフォルトの名無しさん
22/10/30 09:26:11.73 KYgyTmU4M.net
名前空間やクラスを使わないC言語は特に文が長くなりがちだから、2のほうが使い勝手がいいと思うことはよくある
681:デフォルトの名無しさん (ワッチョイ 1363-HLP5)
22/10/30 10:52:42.74 vrlOFY0H0.net
>>647のcatソース見たけれど、
私にはブロックが分かりにくいと感じた
見慣れれば良いのかも知れないが
682:デフォルトの名無しさん
22/10/30 17:05:35.10 wnFbyiurd.net
>>647
rms仙人の直筆か
プロ?と言って良いのかはさておきスーパーハッカーではあるね
関数呼び出しの()前の空白とかは結構独特なスタイルだと思うぞ
683:デフォルトの名無しさん
22/10/30 17:11:32.88 c3va8FLBd.net
✗直筆
✓監修
プロとは我らIT土方の事を指すのです
684:おじ乳輪様
22/10/30 17:12:30.77 .net
中括弧の位置とか関数呼び出しのスペースとかなんでこんな独特なスタイルなの?
なんのメリットが?
685:デフォルトの名無しさん
22/10/30 17:24:51.13 xXAnW4UR0.net
もともとは egrep とかで使いやすい
とかいう理由だった気がする
686:デフォルトの名無しさん
22/10/30 17:30:55.10 1Zssd/uh0.net
URLリンク(web.sfc.wide.ad.jp)
687:デフォルトの名無しさん
22/10/30 17:33:33.15 ZM6oqeKp0.net
GNUのソースは読もうと思って読んだがあのスタイルに拒否反応が出て駄目だったわ
688:デフォルトの名無しさん
22/10/30 23:05:10.18 KHak5nKt0.net
( ´_ゝ`)フーン
689:デフォルトの名無しさん
22/10/30 23:45:46.77 QW7VZG88M.net
インデントごときで読む気が無くなるのは、単に向いてないだけだなw
690:デフォルトの名無しさん
22/10/30 23:52:22.08 vrlOFY0H0.net
うん、むいてないからお前がやってくれ
691:デフォルトの名無しさん
22/10/31 00:03:46.32 EzTz1A6M0.net
(
´_ゝ`
)
フーン
692:デフォルトの名無しさん
22/10/31 00:23:37.56 8d/Em0+h0.net
スタイルがあるなら従うべきだけど、300-500行目に連発する
}
else
{
はさすがに目が滑る
スクロールして追うのも辛い
693:デフォルトの名無しさん
22/10/31 00:32:37.86 MKojko7I0.net
ブロックの前にインデントを入れてるのはブロックも文なんだから単一文の時と同じようにインデントを入れるべきという理屈かな?
694:デフォルトの名無しさん
22/10/31 01:42:04.37 8d/Em0+h0.net
>>667
それ自体は一貫してるからいい、ただしこの場合は対応するifから平気で50行以上も離れているので、elseだけじゃスクロールバックしないと条件が何か分からん
エディタのfold機能を活用するのもアリだけど、プレーンテキストとして読めるべきという姿勢のようだから、まさに>>660にある
#ifdef foo
...(長いコード)
#else /* not foo */
のようにelseにコメントを添えさえすれば、俺的にはオッケー
余談だけど
個人的にはプリプロセッサの条件も自由にインデントしてる
# ifdef foo
...
# ifdef bar
....
のように
殆ど見かけないから決して他人には勧めはしないけど
695:デフォルトの名無しさん
22/10/31 01:43:55.98 oYB2uzRMM.net
GNUのインデントは、Pythonを考慮すると利にかなってんだよな
if foo:
bar
if (foo)
{
bar;
}
という対応がある
Pythonはインデント自体にブロック要素があるから余計なカッコが要らないけど、Cはブロック要素にカッコが必要だから書いてあると考えれば、実はPythonと一緒なんだよ
これに気付いた時はrmsは天才なんだと思い知らされた
696:デフォルトの名無しさん
22/10/31 02:16:22.63 8d/Em0+h0.net
>>669
結果的に同じ形に落ち着いてるけど、pythonとは正反対の思想から生じている事もお忘れなきよう
尊師の第一言語はcでなく言語に構文要素自体が存在しないlispだから、改行のみからコードブロックとインデントレベルがフォーマッタを問わず一意に定められる
c系統(いわゆるブレース言語)は言語に構文を採用しつつ、フリーフォーム記述の許す折衷だから、フォーマッタとスタイルにバリエーションが生じる
697:デフォルトの名無しさん
22/10/31 02:24:22.85 8d/Em0+h0.net
翻って、エディタ入力支援/フォーマッタプログラム無しにlispを記述するのは事実上不可能に近いので賛美してるわけではないよ
念の為
698:デフォルトの名無しさん
22/10/31 11:19:45.88 0hSBCDEtd.net
))))))))くらいは序の口だし、括弧を数えてたら気が狂うわな
ネストレベルに応じて機械的に挿入されるインデントのみによって構造を把握するから、Lispは実質的にPython並にインデント強制
699:はちみつ餃子
22/10/31 11:43:48.99 HpV/6ZOj0.net
今となっては C だってエディタの支援なしに書く気にはならんけどな。
700:デフォルトの名無しさん
22/10/31 13:07:16.76 J5/naAYk0.net
>>673
それは慣れの問題
701:デフォルトの名無しさん
22/10/31 15:59:12.44 YDjtl0u50.net
そう言うのには慣れたくない
702:デフォルトの名無しさん
22/10/31 16:35:29.26 gpqFhr3z0.net
LISP は先にあるんだし、Python の文法は諸々の言語の影響結果だろ
ブロックの開閉で改行するってのは、ALGOL系のBEGIN~ENDの強い影響を感じる
Cではむしろ、少し自由な書式書法になっていたのが退化した
703:デフォルトの名無しさん
22/10/31 16:49:19.46 YDjtl0u50.net
Cが退化したのではなく、人間が退化したんだろう
704:デフォルトの名無しさん
22/10/31 20:11:09.56 a6AXXlaBa.net
括弧の入れ子がひどいコードを作ることがやばい
705:デフォルトの名無しさん
22/10/31 21:12:31.27 YDjtl0u50.net
初心者のために、本来不要だけど括弧を付けるときはあった
706:デフォルトの名無しさん
22/10/31 21:55:34.36 MKojko7I0.net
ウザ
707:デフォルトの名無しさん
22/10/31 22:06:42.50 gNe27yrb0.net
>>679
俺は未来の自分のために言語仕様としては不要な括弧を付ける
708:デフォルトの名無しさん
22/11/01 07:24:39.67 8mAHYLmxd.net
初心者でも務まる仕事か
709:デフォルトの名無しさん
22/11/01 15:13:43.68 hGXBrabD0.net
若手に優しい配慮は必要だと思う
いらないと言うことに気がつけば
それはそいつの進歩だ
710:デフォルトの名無しさん
22/11/01 18:32:43.22 8mAHYLmxd.net
甘やかしでしかない
711:デフォルトの名無しさん
22/11/01 18:40:22.15 hGXBrabD0.net
たった1人で好きなシステム組んでみて
712:デフォルトの名無しさん
22/11/01 18:45:14.28 8mAHYLmxd.net
議論になってない
713:デフォルトの名無しさん
22/11/01 20:23:05.05 Lnx9eR9fM.net
議論なんかしてないだろう
714:デフォルトの名無しさん
22/11/01 21:17:55.24 hxzN6YDm0.net
ということにしたいのですね
715:デフォルトの名無しさん
22/11/01 22:30:37.78 hGXBrabD0.net
オッサンは呼んでない
716:デフォルトの名無しさん
22/11/02 11:37:22.22 1ThO0l2A0.net
はつみみです
717:デフォルトの名無しさん
22/11/02 21:00:24.72 C3BaP9Oq0.net
焼き鳥の通だけが知ってる稀少部位?
718:デフォルトの名無しさん
22/11/07 17:58:10.87 BvZ6DXqw0.net
>>658
呼び出し前スペースはプリプロセスをm4で強化するときに少し面倒になるな
GNUはm4大好きなのにな
719:デフォルトの名無しさん
2022/11/20(
720:日) 17:25:16.95 ID:u5cvtrdO0.net
721:デフォルトの名無しさん
22/11/21 03:19:48.32 Amw5zf2Y0.net
大昔、sendmail.cf を生成するのによく使われてな。久しぶりに名前を聞いた。
autoconf をがんがん使うプログラマがいればワンチャン。
722:デフォルトの名無しさん
22/11/23 15:53:36.98 U6TEG1mTa.net
sendmail.cf なつかしす
postfix に乗り換えちゃった
723:デフォルトの名無しさん
22/11/23 19:55:29.66 aRKGS4gV0.net
CF使った事あるw
724:デフォルトの名無しさん
22/11/25 12:32:01.04 FzNlCQf10.net
すまん、聞くことないわ
725:デフォルトの名無しさん
22/11/25 12:49:25.94 PV2ZG9bua.net
CF は m4 ではないやろ?
726:デフォルトの名無しさん
22/12/01 15:02:39.09 ZPuEPm3M0.net
URLリンク(atcoder.jp)
このコードを実行するとscanfで入力を待つはずなのですが即座に終了してしまいます
たまにそういうコードを見かけるのですが何が原因なのでしょうか
printfを入れても実行されないのでmainがスキップしているような。。
727:デフォルトの名無しさん
22/12/01 15:40:10.03 q8NQ5dwmd.net
あなたの環境のせいかと
728:デフォルトの名無しさん
22/12/01 16:09:51.97 JXDLC/Oi0.net
コードが酷くてワロタw
729:デフォルトの名無しさん
22/12/01 16:26:50.49 jAeBwf3w0.net
>>699
典型的な scanf() あるあるだな
最初の scanf() で数字 + 改行が読み込まれるが"¥d"だと数字だけ取り出して改行が残っちゃう
2回目以降のscanf()は改行が残っているから入力をスキップしてしまう
scanf 改行 読み込み とかでぐぐると色々出てくる
URLリンク(hiroyukichishiro.com)
回避方法はいくつかあるけど、個人的には
static b[100];
fgets(b, sizeof b, stdin);
N = atoi(b);
...
fgets(b, sizeof b, stdin);
d[i].key = atoi(b);
みたいにするかな
>>700
釣りか?
730:デフォルトの名無しさん
22/12/01 16:29:17.59 LIu803lba.net
普通のマージソートを読んでるだけで別に酷くなくね?
エラーハンドリングしてないってことなら競プロではそれが常識だぞ
何を見て酷いと言ってるのか説明してくれ
731:デフォルトの名無しさん
22/12/01 16:33:06.65 LIu803lba.net
>>702
\dじゃなく%dのことかな?
そのコードの下にACが30個並んでるだろ?
これは用意された30通りのテストケースにおいて想定通りに動いたということなんだよね
つまりコードのせいではないよ
732:デフォルトの名無しさん
22/12/01 16:36:36.47 q8NQ5dwmd.net
改行が問題になるのは%cのときくらいで
%dのあと%dだから空白類文字は問題ないよ
733:デフォルトの名無しさん
22/12/01 16:42:55.52 LIu803lba.net
>>701
ちなみにこのコードを書いたのはオレンジコーダー
URLリンク(atcoder.jp)
オレンジというのは一部上場企業でも一人もいないことが珍しくないレベルの高レベルプログラマを超える化け物レベルの超高レベルプログラマを超える頭おかしいレベルのプログラマ
734:デフォルトの名無しさん
22/12/01 16:47:51.25 knNtAgEU0.net
y[200001];とd[200001]がスタック壊してしまいます涙
735:デフォルトの名無しさん
22/12/01 16:54:14.03 LIu803lba.net
>>707
Linuxではメモリの許す限りスタックが使えるから
736:デフォルトの名無しさん
22/12/01 16:54:27.16 ZPuEPm3M0.net
>>707
ありがとうございます
それでした
737:デフォルトの名無しさん
22/12/01 17:04:51.34 IEkrCGic0.net
おま環定期
738:デフォルトの名無しさん
22/12/04 21:55:28.56 7byHd/K/d.net
>>708
とはいえmallocにしたほうがいいんでない?
739:デフォルトの名無しさん
22/12/04 22
740::07:50.79 ID:RAGda7mP0.net
741:デフォルトの名無しさん (US 0H31-fHn/)
22/12/04 22:16:11.60 Yt2fANdLH.net
>>712
C++ で見捨てられた VLA なんか使いたくないですね
742:デフォルトの名無しさん
22/12/04 22:29:52.59 xXGWnQN3d.net
>>712
VLAはC99で採用されたけどC11でオプション仕様に格下げされたよ
743:デフォルトの名無しさん
22/12/04 22:31:57.30 JQ3spjvfM.net
>>708
それってどこ情報なん?
744:デフォルトの名無しさん
22/12/04 23:03:10.81 UdvGlPZ+0.net
Cで通信系いじりたいんやけどなにからすればええ?
まずはゲームとか作ってC言語に慣れた方がええんやろか
「無線 C言語」と調べてもコロナ社の本しか出てこん
本買った方がええんか?
右も左もわからん、どなたか教えてください!!!
745:デフォルトの名無しさん
22/12/04 23:04:19.10 AOlAqVGT0.net
まず何がやりたいのかはっきりさせろ
何もわからんぞ
746:デフォルトの名無しさん
22/12/04 23:09:42.46 HgjSOVEG0.net
通信系って、無線通信?
C言語には電波を飛ばす機能はないよ
747:デフォルトの名無しさん
22/12/04 23:14:41.99 UdvGlPZ+0.net
ネット通信とか無線通信はC言語だとどっかで耳にしたからとりあえずやりたくなったんや
なんかいい通信系の入門サイトとかあれば教えてほしい
748:デフォルトの名無しさん
22/12/04 23:17:10.93 UdvGlPZ+0.net
>>718
無線通信系に興味ある
電波飛ばす機械をC言語でなんかするんじゃないん?
749:デフォルトの名無しさん
22/12/04 23:26:26.75 MiJYA0Kr0.net
通信をする方法が無線かどうかはハードウェアの問題。
更にOSやデバイスドライバやOSのシステムコールをどのように呼べば良いかを知る必要がある。
C言語の知識が必要になるとすると通常はここからだ。
そうではなくてハードウェアはあるがOSがなくI/Oポートを直接読み書きするようなプログラムを
作る必要がある場合はアセンブラかC言語で作ることになると思う(必ずしもそうである必要は
ないが)。その場合はOSのデバイスドライバを自作するような感じになる。
750:デフォルトの名無しさん
22/12/04 23:27:41.55 HgjSOVEG0.net
有線にしろ無線にしろ、通信という以上は相手があって
その相手とルールの取り決めをしてからそのルールにしたがってやり取りする
だから最初に、誰と、どういう取り決めでデータのやり取りをするかを決めないといけない
インターネットもそういうルールをみんなで決めてやり取りをしている
とりあえずインターネットの通信を学んでみたらどうだろう
この掲示板に書き込みをしているのだから、その通信が可能だし、
その機種を使って試すところから始めると良い
751:デフォルトの名無しさん
22/12/05 00:30:23.98 ddGzHpStd.net
>>712
スタックの仕様は機種依存が激しいから可搬性を考えたらスタックは無限にあると考えないほうがいい
というかLinuxではデフォルト8MBみたいだけど
752:デフォルトの名無しさん
22/12/05 00:47:01.63 ddGzHpStd.net
というかスタックというのは一番効率の悪いメモリの使い方なので
本を片っ端から積み上げて下の方は取れなくなってしまうイメージ
大規模な配列はスタックに置かないほうがいいというのは基本では
断片化があるとはいえmallocのほうが効率的
753:デフォルトの名無しさん
22/12/05 00:55:05.00 d/jwcHzh0.net
一番上と、一番下でアクセスの速度は同じでしょう
754:デフォルトの名無しさん
22/12/05 01:09:57.27 rpvKYALB0.net
スタックが上のデータに埋もれて下のデータが取り出しにくくなるなら、ヒープでも全く同じことが発生するはず。
適当なアナロジーで間違った理解をしている典型例だと思う。
755:デフォルトの名無しさん
22/12/05 01:14:21.69 ZI2+JeHur.net
デカいデータで最適化が効くことがあるのはグローバル変数
756:デフォルトの名無しさん
22/12/05 01:15:32.38 m5vf/Aut0.net
Cのローカル変数は、マシン語レベルではスタック領域に生成されるが
相対アドレシングで自由にアクセスするので問題ない
757:デフォルトの名無しさん
22/12/05 01:21:11.87 op7KwCv70.net
領域の確保開放が上からしか出来ないだけで読み書きはどこでもできるもんな
758:デフォルトの名無しさん
22/12/05 06:17:33.64 0xhTnbB50.net
>>723
え、無限にあると考えることがあるの?
・・・あれか、マイクソソフトが吹聴してる例の有害なやつか
759:デフォルトの名無しさん
22/12/05 08:28:01.18 d0zhDPVSa.net
>>711
競プロだぞ
760:デフォルトの名無しさん
22/12/05 08:42:20.41 AHxKL62Z0.net
有限さん「おい、スタックが無限にあると考えられるとはどういうことだ?証明して見せろ!!」
ムゲンさん「わかりました。では無限なメモリを積んだコンピュータを用意してきてください。そしたら証明して見せます。」
有限さん「そんなことできるわけないだろ!」
ムゲンさん「ザンネン。じゃああなたのご希望に沿うことはできないですね。」
ボク「それってつまり、無限のスタックは存在しないってことなんじゃ?」
ムゲンさん「『無限なメモリを積んだコンピュータは存在しない』というのは悪魔の証明であって、存在しないと断言すること自体が不可能です。」
ボク「屏風の虎…一休さんかよ」
761:デフォルトの名無しさん
22/12/05 09:23:30.88 0xhTnbB50.net
観測可能な宇宙に原子が8e79個あり、
DDR4のセル電荷が2.4e-14クーロンとすると
メモリは6.7e73バイトまでしか作れない
∴ 無限のメモリは存在しない
762:デフォルトの名無しさん
22/12/05 09:27:43.41 AHxKL62Z0.net
観測不可能な宇宙領域がまだあるではないか
そこには無限の(ry
763:デフォルトの名無しさん
22/12/05 09:44:59.30 BaBCvHVhM.net
量子メモリであれば無限の状態を記憶できるか?
764:デフォルトの名無しさん
22/12/05 10:56:43.18 ddGzHpStd.net
>>725
速度の問題ではなく
用済みになっても開放できずにいつまでも抱え込んでいなければならないことが問題
765:デフォルトの名無しさん
22/12/05 11:14:13.11 d/jwcHzh0.net
スタック上の変数って、その関数内でしか用は無いのだから
関数が終了と同時二メモリーから消え去ります
抱え込むことはありません
766:デフォルトの名無しさん
22/12/05 11:22:51.84 hYIKK9DOp.net
児童変数の事?
767:デフォルトの名無しさん
22/12/05 11:23:28.04 E9Ntil7Ed.net
効率悪い実装してれば効率悪くなるだけの話やな
スタックは一時変数の効率的確保の極みなんだけど関数化を怠った結果そうなる
768:デフォルトの名無しさん
22/12/05 11:24:48.36 hYIKK9DOp.net
児童変数を関数の戻り値にするのは実体渡しだけにしておかないと痛い目に逢ったなぁ
769:デフォルトの名無しさん
22/12/05 11:28:42.22 d/jwcHzh0.net
>用済みになっても
と言うことだから、関数間の受け渡しは考慮しなくて良いでしょう
770:デフォルトの名無しさん (ワッチョイ e2ad-4FAg)
22/12/05 18:42:27.81 M2dfOAYW0.net
自動変数用のスタックは本物のスタックポインタ無視して別に作っちゃってもできるな。
そういうコードを吐くコンパイラも作れるというだけのことではるが。
でもその方がリターンアドレスが詰まれている所に変数混ぜるより安全な感じはする。
特にC言語の場合は配列の範囲をオーバーしても平気でどんどん書き換えちゃって関数の終わりで明後日の方向にリターンなんてものも作れちゃうから。
771:デフォルトの名無しさん
22/12/05 18:46:56.29 d/jwcHzh0.net
ワープ航法w
772:デフォルトの名無しさん
22/12/05 19:26:38.80 3chMJcRmp.net
8ビット時代にゃスタックジャンプは普通にやってたなぁ
773:デフォルトの名無しさん
22/12/05 19:33:53.84 XYzlQpP/M.net
スタック保護
URLリンク(www.ipa.go.jp)
774:デフォルトの名無しさん
22/12/05 20:04:47.35 9YGPhFSH0.net
>>742
> 自動変数用のスタックは本物のスタックポインタ無視して別に作っちゃってもできるな。
当たり前だろ、その
775:本物とやらのスタックポインタもたないマシン(例えば汎用機)もあるんだし > でもその方がリターンアドレスが詰まれている所に変数混ぜるより安全な感じはする。 暴走するか変なデータになるかの違いしかない どっちがマシかは状況による
776:デフォルトの名無しさん
22/12/05 20:08:14.24 AHxKL62Z0.net
いや暴走のがマシなんて状況あるん?
変なデータは使用する時点でチェックすれば防げるけど
777:デフォルトの名無しさん
22/12/05 21:05:25.92 9YGPhFSH0.net
>>747
> いや暴走のがマシなんて状況あるん?
今時のプロセッサーなら暴走したら不当命令とか>>745のリンク先にあるデータ実行防止で止まる可能性が高い
> 変なデータは使用する時点でチェックすれば防げるけど
それが完全なら良いけど例えば金額が多少間違っててもチェックできないケースもあるだろ
778:デフォルトの名無しさん
22/12/05 22:17:34.11 d/jwcHzh0.net
補助輪つき自転車みたいだ
779:デフォルトの名無しさん
22/12/06 00:15:19.77 XVvWtcz/d.net
>>737
抱えたまま他の関数を呼び出したり
あと再帰呼び出しとかスタックを利用する一番の利点とされてるけど?
問題なのは呼び出された関数がすでにスタックが残り少ないのを知る手段がなく
そこでクラッシュしても原因がわかりにくいという開発上のトラップだな
まあ大規模なソフト開発してみればわかるよ
780:デフォルトの名無しさん
22/12/06 00:17:55.95 PYPomZFd0.net
それはメモリー不足が何時起きるか分からないと言ってるのと同じ事ですが
781:デフォルトの名無しさん
22/12/06 00:44:18.64 8IYUkFNt0.net
スタックオーバーフローという
エラーメッセージがあるのでは?
782:デフォルトの名無しさん
22/12/06 00:44:54.36 8IYUkFNt0.net
スタックオーバーフローという
エラーメッセージがあるのでは?
783:デフォルトの名無しさん
22/12/06 00:47:21.54 qZ0a8ZvK0.net
スタックオーバーフローという
エラーメッセージがあるのでは?
784:デフォルトの名無しさん
22/12/06 00:47:27.32 qZ0a8ZvK0.net
スタックオーバーフローという
エラーメッセージがあるのでは?
785:デフォルトの名無しさん
22/12/06 00:48:27.88 PYPomZFd0.net
スタックオーバーフローは、大規模なソフト開発とはあまり関係ないデスね
大規模なソフト開発してて、スタックオーバーフローでプログラム落ちたら、
笑われると言うか、怒られるかも
786:デフォルトの名無しさん
22/12/06 01:09:59.63 LDJX4o340.net
スタック上に大領域確保するにしても
内部で余計な関数呼ばない結果だけ返す関数作って抱え込まない
深さを限定できない再帰呼び出しもありえないし
787:デフォルトの名無しさん
22/12/06 03:07:59.72 PbeCdWM30.net
699 デフォルトの名無しさん (ワッチョイ 972d-zuBb) sage 2022/12/01(木) 15:02:39.09 ID:ZPuEPm3M0
URLリンク(atcoder.jp)
このコードを実行するとscanfで入力を待つはずなのですが即座に終了してしまいます
たまにそういうコードを見かけるのですが何が原因なのでしょうか
printfを入れても実行されないのでmainがスキップしているような。。
788:デフォルトの名無しさん
22/12/06 03:09:09.32 PbeCdWM30.net
>>758
いまだにhを取るあたりがもう超絶無能
789:デフォルトの名無しさん
22/12/06 03:10:27.42 PbeCdWM30.net
>>758
25年くらい前のネットの書き方だな
790:デフォルトの名無しさん
22/12/06 08:24:16.80 zdZ3zkNx0.net
Win98時代は1Mバイト程度の配列変数作っただけで動作がおかしくなってたな。
スタック増やせって言われてコンパイルオプション弄ったけど改善しなかった記憶・・・。
DOSからWinに来たときは64kバイト以上のメモリ確保さえ避けてた。
791:デフォルトの名無しさん
22/12/06 08:27:50.69 63yxghiR0.net
そりゃー8086のセグメント方式なんだから64k超えは問題ありまくりんぐでそ
792:デフォルトの名無しさん
22/12/06 11:20:14.67 yvaEv+2ca.net
>>761
> Win98時代は1Mバイト程度の配列変数作っただけで動作がおかしくなってたな。
それは今でも一緒だろ
Windows の既定のスタックサイズは1MBのままだぞ
URLリンク(learn.microsoft.com)
793:デフォルトの名無しさん
22/12/06 11:30:06.24 PYPomZFd0.net
MS-DOSの頃は、メモリ1MB積んだPCってスゴイ豪華な印象だったな
搭載メモリーを使い切る様なプログラムを、オレは書けるんかって思ってた
794:デフォルトの名無しさん
22/12/06 12:01:21.10 63yxghiR0.net
I/Oバンク方式かEMSかって時代か
795:デフォルトの名無しさん
22/12/06 14:59:37.11 iX2JPZR5d.net
本当のメインメモリとして使えたのは640kBまでで
残りの384kBはバンクかEMSの増設メモリだった
796:デフォルトの名無しさん
22/12/06 19:43:39.61 PYPomZFd0.net
最初はハードウェアで実装してたけれど
そのうち仮想86モードだったかで、
特別なハードを追加せずにメモリアクセス出来る様になってたね
797:デフォルトの名無しさん
22/12/06 20:33:29.46 zjGx1PLy0.net
>>766
残りはハードウェアのIOやらROMやらVRAMなどだ
EMSウインドウはその開いている隙間アドレスにねじ込んだだけ
798:デフォルトの名無しさん
22/12/06 21:49:14.42 63yxghiR0.net
>>767
あったねー、ソフトウエアEMS>ハードウエアEMSなんて珍現象
799:デフォルトの名無しさん
22/12/09 05:45:28.61 QbuGAkRx0.net
#include <stdio.h>
#include <time.h>
void
main(void)
{
time_t now, now2;
now = time(NULL);
now2 = time(NULL);
struct tm *tm1 = localtime(&now);
struct tm *tm2 = localtime(&now2);
tm2->tm_mday = 1;
tm2->tm_mon = 1;
printf("%d %d\n", tm1->tm_mday, tm1->tm_mon);
printf("%d %d\n", tm2->tm_mday, tm2->tm_mon);
}
800:デフォルトの名無しさん
22/12/09 05:46:27.95 QbuGAkRx0.net
tm2を変更するとtm1も同じ値になってしまいます。
回避方法を教えて下さい。
801:デフォルトの名無しさん
22/12/09 05:47:05.17 QbuGAkRx0.net
OS:Linux Mint
コンパイラ:gcc です
802:デフォルトの名無しさん
22/12/09 06:15:54.45 rdO0dbBS0.net
URLリンク(linuxjm.osdn.jp)
localtime_r()を使いましょう
struct tm *tm1 = localtime(&now);
こんな使い方をするって時点でlocaltime()が「何」を返すのか、察しましょう
803:デフォルトの名無しさん
22/12/09 06:58:19.07 QbuGAkRx0.net
>>773
サンクス、動いた
804:デフォルトの名無しさん
22/12/09 07:14:28.04 aKtIUC7D0.net
このへん、言っちゃなんだけどクソだね
なんでこんな変な設計にしたんだろう
805:デフォルトの名無しさん
22/12/09 07:27:22.65 G83XZmEL0.net
ローカルで構造体を定義してそこへのポインタを返すとスタックから消えてデータが壊れますか?
806:デフォルトの名無しさん
22/12/09 07:54:25.65 DDM/thjI0.net
>>775
いちいち使う人に領域確保させる手間をかけさせたくなかったってことでしょ
マルチスレッドなんてない時代だし
807:デフォルトの名無しさん
22/12/09 07:57:34.07 DDM/thjI0.net
>>776
構造体に限らずローカル変数へのポインタを返すとポインタの指す先の内容は壊れる(かもしれない)
808:デフォルトの名無しさん
22/12/09 13:31:15.00 RVIOSi06d.net
未定義の動作という
809:デフォルトの名無しさん
22/12/09 15:26:27.10 Z1cscK2ka.net
>>775
strtok
810:デフォルトの名無しさん
22/12/09 15:41:02.97 8zaQFmsV0.net
何らかの要因でテンパって煮詰まってコーディングしてて
変なものができてしまうこと、皆さんも経験あるのでは
811:はちみつ餃子
22/12/09 17:25:23.52 Qnrm7z6h0.net
>>776
スタックから消えるというか、言語仕様的な用語でいうと生存期間が終了していることになる。
そんでオブジェクトを生存期間の外部で参照したときの動作は未定義なので何が起こるかわからん。
C でいう未定義ってのは「何が起きてもいい」なのでデータが壊れる (意味不明の値が読みだされる) だけでは済まないかもしれない。
812:デフォルトの名無しさん
22/12/09 17:34:59.55 i/ZE6Izl0.net
恋と同じで、はかなく消える運命
813:デフォルトの名無しさん
22/12/10 01:00:03.41 ap6EnRqC0.net
>>776
すぐ消えないことがあるので読めてしまうかも知れない。しかし何かをすると一瞬にして破壊されて終わるかも知れない。
あてにしてはいけない。
ていうかこの頃のコンパイラってそういうのは警告出したりエラー扱いにしない?
814:デフォルトの名無しさん
22/12/10 08:35:32.63 0yWWcyiC0.net
コンパイル時に常に摘出できるわけじゃないし
815:デフォルトの名無しさん
22/12/10 08:43:06.25 VZKCrGXt0.net
いやバグは睾丸みたいに摘出はできないだろ
816:デフォルトの名無しさん
22/12/10 11:08:12.32 8LaJbp4o0.net
warning C4172: ローカル変数またはテンポラリのアドレスを返します: hoge
VS2022
817:デフォルトの名無しさん
22/12/10 11:18:10.60 W5v0KihFa.net
>>787
URLリンク(learn.microsoft.com)
818:デフォルトの名無しさん
22/12/10 11:34:37.41 FHzDIuwr0.net
そういうときはレジスタ変数のアドレスを返すようにコーディングしなさい
819:デフォルトの名無しさん
22/12/10 11:49:59.77 n733SMJ50.net
staticの出番は?
820:デフォルトの名無しさん
22/12/10 12:13:19.32 9jPqI4Xva.net
そして>>773の仕様となるのであった…
821:デフォルトの名無しさん
22/12/10 12:55:16.29 8LaJbp4o0.net
int *fuga(void){
register int i = 123;
return &i;
}
error C2103: '&' レジスタ変数のアドレスを得ようとしました。
ふむ
822:デフォルトの名無しさん
22/12/10 13:24:22.34 HjLF/vvU0.net
>>788
説明とコードが対応してる気がしない
どういうこと?
823:デフォルトの名無しさん
22/12/10 13:32:02.53 GuAR5Ny/0.net
>>348
レジスタに割り当てた変数には左辺値はないよ
だって、ハードウェアのレジスタだから
824:デフォルトの名無しさん
22/12/10 13:43:23.28 VZKCrGXt0.net
言いたいことはわかるけど日本語が変
左辺値はメモリアクセスを意味する式なので
レジスタに左辺値がないのではなく
記憶クラスがregisterの変数の識別子は左辺値ではない
825:デフォルトの名無しさん
22/12/10 13:46:04.91 HjLF/vvU0.net
>>789への疑問やろ
826:デフォルトの名無しさん
22/12/10 14:05:33.41 lr6mtoK80.net
>>793
floatからdoubleへ変換したうえでその参照を返してる
パッと見分かり辛くて人間の認知への挑戦かと思うなw
827:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-3TNT)
22/12/10 15:12:06.94 brInbnm70.net
>>792
register 指定が付いたらアドレスを取る操作自体が出来なくなるように制限されてるよ。
配列を register 付きで宣言したらなにも出来なさ過ぎてワロタwwwというのはよくあるネタ。
(言語仕様的には配列 (の要素) へのアクセスもポインタ演算の構文等になってるから暗黙にアドレスを取る操作。)
>>794-795
左辺値であるかどうかと記憶クラスは関係ない。
必ずしもメモリにアクセスすることを意味しない。
register 宣言でアドレスを取れなくなるのは左辺値でなくなるからではなく
& のオペランドは register 付きで宣言されたものであってはならないという直接的な制約。
どこをどう見ても左辺値の定義自体には register 指定は関係しない。
更に C99 の 6.5.3.2 から単項 & の制約について抜粋
> The operand of the unary & operator shall be either a function designator, the result of a
> [] or unary * operator, or an lvalue that designates an object that is not a bit-field and is
> not declared with the register storage-class specifier.
JIS の日本語だとこうなってる。
> 単項&演算子のオペランドは,関数指示子,[]演算子若しくは単項*演算子の結果,又は左辺値でな
> ければならない。左辺値の場合,ビットフィールドでもなく,register記憶域クラス指定子付きで宣言
> されてもいないオブジェクトを指し示さなければならない。
左辺値のときは register 指定されていてはいけないというのは逆に言えば register 指定されている左辺値というものも存在することを示唆する。
828:デフォルトの名無しさん (ワッチョイ 27c2-aipL)
22/12/10 15:19:28.45 VZKCrGXt0.net
> register 指定されている左辺値というものも存在することを示唆する。
具体例ある?
829:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-3TNT)
22/12/10 15:24:22.50 brInbnm70.net
>>799
具体例�
830:ニいうか、 register 指定は左辺値か右辺値かの定義に無関係なので 左辺値なものは register 指定されていようがいまいが左辺値って話。 変数の宣言のときに register 指定を付けたら全て register 指定のついた左辺値だよ。
831:デフォルトの名無しさん
22/12/10 15:44:01.19 VZKCrGXt0.net
メモリにアクセスすることを意味するでしょ。
6.3.2.1 左辺値
左辺値が評価されたときにオブジェクトを指し示していなければ,動作は未定義とする。
3.14 オブジェクト(object) その内容によって,値を表現することができる実行環境中の記憶域の部分。
参考オブジェクトを参照する場合,オブジェクトは,特定の型をもっていると解釈してもよい(6.3.2.1 参照)。
なんでそういう決まりになっているのかを理解せずに条文の字面に書いてあることだけ表面的に言う人とは歯車が噛み合わないな。
832:デフォルトの名無しさん
22/12/10 15:50:02.57 gyOVa4Se0.net
>>792みたいなのはレジスタ変数じゃなくてもやっちゃダメだけどw
833:デフォルトの名無しさん
22/12/10 15:51:48.45 zHuXawkZa.net
昔の CPU はレジスタが少なくて
なんでもかんでも register 付けて宣言すると
CPU の持ってる実 register 数以上に宣言してしまうことが多い
では使い切った後の変数はどこに割り当てられるのか?
834:はちみつ餃子
22/12/10 16:30:03.16 brInbnm70.net
>>801
話を >>794 といっしょくたにしたのが誤りだった。 すまぬ。
> ハードウェアのレジスタだから
の続きで
> メモリアクセスを意味する式なので
をハードウェア的なメモリアクセスの意味で解釈してしまった。
むしろそんなん関係なく言語仕様上の意味で反論してたんだね。
(後から読む人のために補足すると C の言語仕様でいう実行環境は言語仕様で規定する仮想的な実行環境の
ことであって実際の機械語とどう対応づけるか規定されない。 どういう機械語が生成されるかは
言語の意味の根拠にならないので言語仕様で再解釈しようとしたのが >>795 だと私は解釈した。)
が、言語仕様の解釈として
> registerの変数の識別子は左辺値ではない
の部分が誤っているということには変わりないよ。
835:デフォルトの名無しさん
22/12/10 21:03:51.14 iVr3EzOTM.net
レジスターにもアドレスを割り当てておいたら良かったかも
836:デフォルトの名無しさん
22/12/10 22:47:45.19 37vQL6PeM.net
昔6800系CPUはメモリの固定番地をレジスターと同格に扱うダイレクトメモリアドレッシングで見かけのレジスタ数を増やしていた
837:デフォルトの名無しさん (ワッチョイ 7f63-KKgq)
22/12/10 22:55:13.62 FHzDIuwr0.net
レジスタを指すポインタをインクリメントすると、別のレジスタの値を書き換えられる、とか
838:デフォルトの名無しさん (ラクッペペ MM8f-JsS5)
22/12/10 22:59:08.86 cw57tQlnM.net
組込み用の8ビットCPUでも同じような機能があるものもある
ダイレクトアドレッシング、ダイレクトページアドレッシングなど殆どは8ビットアドレスのゼロページ目をレジスタと見做して
メモリ経由することなく直接ALUで演算を行なうことが出来る
839:デフォルトの名無しさん (ワッチョイ 7f63-KKgq)
22/12/10 23:32:50.32 FHzDIuwr0.net
レジスター配列とかプログラムコードをレジスタに置くとか
840:デフォルトの名無しさん
22/12/11 03:20:22.27 BIXjZcK80.net
>>804
左辺値がメモリアクセスを意味するのに?
841:はちみつ餃子
22/12/11 03:56:09.23 ftKoc+Hh0.net
>>810
言語仕様では抽象計算機での動作として記述される。 (C99 なら 5.1.2.3?を参照)
記憶域として書かれているものは抽象的な意味の上での記憶域であって、
実際のメモリにアクセスするかどうかはコンパイラの裁量。
register 指定は変数の意味に関与せず、抽象機械の動作の上ではごく普通に記憶域に割り当てられているのと同じ。
その上で register 指定は「可能な限り速いアクセスを期待する」というヒントであることと、アドレスが取れなくなるという制約が付く。
register 指定は抽象機械の上での記憶域をハードウェアのレジスタに割り当てるなどして高速化して
842:くれたらうれしいなぁ (/ω・\)チラッ という指定であって、言語の理屈の上ではアドレスを取れない以外の何の意味も持たない。
843:デフォルトの名無しさん
22/12/11 06:45:02.24 BIXjZcK80.net
抽象計算機の記憶域がメモリではないって?
もういい、あんたとは話にならん
844:はちみつ餃子
22/12/11 06:47:07.10 ftKoc+Hh0.net
>>812
根本的には register 指定で左辺値でなくなったりはしないという話をしてるんで。
845:デフォルトの名無しさん
22/12/11 07:35:55.41 BIXjZcK80.net
その話の根拠に疑問を示したんだけど、例の屁理屈に逃げるんでもういい
846:はちみつ餃子
22/12/11 08:06:06.44 ftKoc+Hh0.net
>>814
言語仕様でそうなっているという以外に根拠が必要か?
847:はちみつ餃子
22/12/11 08:12:25.56 ftKoc+Hh0.net
clang で抽象構文木を見る機能があったわ。
lvalue ってなってるだろ。
URLリンク(wandbox.org)