2017-09-02 11 views
1

私はこのようなコードを記述する場合:だからC++の整数オーバフローから "auto"は安全ですか?

auto n = 2048 * 2048 * 5; 
char* buf = new char[n]; 

を、C++ 17の整数オーバーフローから安全auto控除タイプですか?

+7

'2048 * 2048

はオーバーフローどんなにint''に推定されます。控除は、値ではなく型についてのみ行います。 – Zereges

+0

私は興味があります、あなたはC++について具体的に何を尋ねるのでしょうか? – Borgleader

+3

@Borgleader C++ 17はC++の最新バージョンです。 –

答えて

7

2048およびは、タイプがあり、そのタイプはintです。 2つを乗算するとintの型があり、その型はintです。結果がintに収まらない値があり、autoでそれを防ぐことはできません。偶然例えば、結果を狭めている何auto防ぐことができます。:* 5`

short x = 4 * 8192; 
関連する問題