私は代入ステートメントですぐにキャストする必要があるC++コードがあります。キャスティングはコードを読みにくくし、私はこれを回避する手段があることを期待していました。それは32ビットの値として1
即時の治療ですので、私は、キャストせずにこのコードを記述する場合代入で値をキャストする必要があります
uint64_t shifted_val = (uint64_t)1 << 50;
は、shifted_val
が0に設定されます、私が想定しています。私はキャスティングせずにこれを書くことができるように私は行方不明のものがありますか?
書き込み '(1ull << 50) –
定数' 1'は 'int'型ですが(多分それが起こるビット数が多いため)、' 1 << 50'も 'int'型です。そして実際に '1 << 50'は' int'が50ビットより広い場合を除き、未定義の振る舞いをします。 –