[過去ログ] Win32API質問箱 Build125 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
534: 2019/11/06(水)15:05 ID:Z1mcKm+J(2/2) AAS
>>532
APIの話だというのなら、OSが16bitだろうが32bitだろうが
APIの仕様が代わるわけないんやで
異常事態でもなんでもなく、それが高い互換性の理由だ
535: 蟻人間 ◆T6xkBnTXz7B0 2019/11/06(水)15:13 ID:Z1hQUtYe(1) AAS
64ビット対応で
Get/SetWindowLongよりもGet/SetWindowLongPtrを使え。とか、
DialogProcの戻り値をINT_PTRにしろ。
とかの若干の変更点があるようだ。
536: 2019/11/06(水)15:19 ID:o3tEvZiY(2/2) AAS
HANDLEもこっそりtypedefに_PTR変えたんだっけ
537: 2019/11/07(木)01:18 ID:7K0XtVuo(1/2) AAS
ダイアログプロシージャの戻り値がめんどうなことになる
x86じゃBOOLだけどx64だとINT_PTR
でもVC6だとBOOLはintだという
538: 2019/11/07(木)01:32 ID:sEmiRyTj(1/15) AAS
歴史的理由で仕方のない面もあるが、
単一のソースで16bitと32bit、32bitと64bitでコンパイルできるようにしてきたから
型の実態は結局なんなんだ?って悩むことになってる。
もうそろそろネイティブ型だけを使えるようになってほしいが
そのために言語を変えるほうが楽だろうな
539: 2019/11/07(木)01:44 ID:ubAK6fog(1) AAS
intとlongのサイズ違うこともあるしな
c#みたいにint32みたいなの最初から用意しとけよ
540: 2019/11/07(木)01:48 ID:cfOynPV2(1) AAS
stdint.h使おう
541: 2019/11/07(木)02:23 ID:+N3PsKU8(1/16) AAS
前に聞いた話だと、大型機が64BIT化した後も、intは、32BITの事が多いらしい。
542: 2019/11/07(木)02:26 ID:4jX7Qkw7(1) AAS
いいかげんな知識で語りたがるやつ多すぎ
543: 2019/11/07(木)02:27 ID:+N3PsKU8(2/16) AAS
32BIT時代は、整数サイズとポインタサイズが一致していて、サイズの選び方に
悩むことが無く便利だった。果たして、整数型を全部64BITにして良いものか
どうか。原則的に速度は変わらないとしても使用メモリは増えてしまう。
恐らく、exeファイルのサイズも増加するだろう。
544(1): 2019/11/07(木)02:42 ID:sEmiRyTj(2/15) AAS
コンピュータが遅かった時代はCPUに最適なデータ型を
使うことが重要だったが、今は数値型しかなくて
データサイズは自動的に決まりますとかばかりだもんな
545(1): 2019/11/07(木)02:44 ID:+N3PsKU8(3/16) AAS
64BITポインタptrと配列添え字idxに対して、
ptr[idx]
と書いた場合、idxが32BITと64BITだと実は、32BITの方が
1クロック増えてしまう可能性が高い。なぜなら、マシン語レベルでは、
上記の演算で、ptrは64BIT整数として扱われ、ptr[idx]は、
*(ptr+idx)として処理される。ところが、64BIT+64BITの整数演算は
あるが、64BIT+32BITの整数演算は無い事が多い。なので、
idxが32BITだと、いったん、64BITにBIT幅を拡張する命令を1つ
挿入する必要がある。
だから、64BITポインタのアーキテクチャだと、idxも64BITにした方が
省1
546(1): 2019/11/07(木)02:45 ID:+N3PsKU8(4/16) AAS
>>544
>今は数値型しかなくてデータサイズは自動的に決まりますとかばかりだもんな
C++だと今でもデータサイズは明示します。
547: 2019/11/07(木)02:54 ID:PsJP4fV8(1) AAS
size_t型が無難にして最強
548(1): 2019/11/07(木)03:00 ID:sEmiRyTj(3/15) AAS
>>546
他の言語の話や。今は速度よりも利便性のほうが重要や
549(1): 2019/11/07(木)03:18 ID:+N3PsKU8(5/16) AAS
>>548
例えば、JavaScriptだと、数値型のデータサイズが自動的に決められている
わけではなく、常に double 型(64BIT 浮動小数点型)なのですが、
整数は32BIT整数型までだと double型に精度を落とすことなく完全に
収まるので、何も考えずに正しく扱えるだけです。
JavaScriptでは、64BIT 整数型は、伝統的には原則的に使えません。
550: 2019/11/07(木)03:23 ID:+N3PsKU8(6/16) AAS
>>549
また、JavaScriptは、シンプルな使い方では、原則、整数型がなく、
console.log(54 / 10);
とすると、5.4と表示されます。これは、54や10が整数ではなく、
54.0 や 10.0 という double 型浮動小数点として扱われているためです。
これは、Sun/Oracle の Java とは全く結果が異なります。後者では、
54/10は、「整数除算」なので、結果は整数の「5」となります。
551: 2019/11/07(木)03:38 ID:sEmiRyTj(4/15) AAS
> JavaScriptでは、64BIT 整数型は、伝統的には原則的に使えません。
64bitも使うのかって話なんだけどな? 52bitで十分だろう?
外部リンク:sbfl.net
> JavaScriptのNumber(数値型)は倍精度浮動小数点数となります。
> つまり全体が64bitで、仮数部が52bitです。仮数部が52bitなので、
> Numberを用いて正確に表せる最大の整数は、53bitで表せる数から
> 1引いた数になり、(2^53 ? 1) = 9007199254740991となります。
552: 2019/11/07(木)03:39 ID:sEmiRyTj(5/15) AAS
なんだ。JavaScriptにBigIntあるじゃん
Numberで表せる最大の整数値は十分な値にも思えますが、
分野によってはこれでも足りなくなることがあります。そこで導入されたのがBigIntです。
BigIntは、任意精度の整数を表す新しいプリミティブ型です。
任意精度の整数値については、基本的にCPUに搭載されている計算機は対応していないので、計算はソフトウェアによって行われます。
553(1): 2019/11/07(木)03:43 ID:sEmiRyTj(6/15) AAS
やっぱりどんなときでもプログラマがデータ型を
選んでくださいっていうのは時代遅れだと思わ
上下前次1-新書関写板覧索設栞歴
あと 449 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s