私はstatic_cast with bounded typesを見ています。境界型のstatic_castは実装依存ですか?
動作は実装固有ですか?換言すれば
long x = 70000;
short y = static_cast<short>(x);
は、Y = 4464(xの下位16ビット)を生成することが保証されている(16ビットのショートパンツと32ビットlong値を与えられますか)?または、リトルエンディアンのマシンでのみですか?
私はいつもそう思っていましたが、私はビッグエンディアンマシンで奇妙な結果を得て、それらを理解しようとしています。
ここに実際の問題があります。私は2つのtime_t(おそらく64ビット)を "知っている"とは、いつもお互いの合理的な秒数以内にあるでしょう。私はprintfとその違いを表示したい。コードはマルチプラットフォームなので、time_tの根底にあるタイプについて心配するのではなく、static_cast <((time2-time1))を渡すprintf( "%d")を実行しています。 printfが(time2!= time1)のブロックに入っているにもかかわらず、ゼロが表示されています。 (printfはライブラリにあり、代わりにcoutを使用することは妥当ではありません)
static_castはおそらくtime_tの上位32ビットを返しますか?
これを行うより良い方法はありますか?
ありがとう、
奇妙な。 static_cast angle-bracket int anglebracket(time2-time1)と入力しますが、表示されるのはstatic_cast(time2-time1)だけです。 static_cast \ \>(time2-time1)なんかのようにエスケープする必要はありますか? –
Charles
解決済み。アンパサンド構文を使用する必要があります。 – Charles