質問者
unsigned long long でVSが落ちる

質問
-
Visual Studio Community 2017 の Visual C++ 2017 にて
unsigned long long int a = 1ULL;
unsigned long long int b = 2ULL;
unsigned long long int d = a - b;を実行するとVidual Studio が落ちて再起動になります。同様に
int c = 0;
if ((a > b)) {
c = 1;
}でもVSが落ちます。unsigned long long int をuint_fast64_t に変えると回避できるみたい
だけど、これってコンパイラのバグだよね???ULLが負数になったらVSが対応できなくなる?
すべての返信
-
私の環境(Windows 10 x64 バージョン 1709 ビルド 16299.125、Visual Studio Enterprise 2017 バージョン 15.4.0、CPU=Intel® Core™2 Duo Processor E7600)でも再現しませんでした。試したコードは下記です。
#include "stdafx.h" int main() { unsigned long long int a = 1ULL; unsigned long long int b = 2ULL; unsigned long long int d = a - b; printf("%llu", d); return 0; }
環境依存の問題かもしれませんね。再現環境の OS とその詳細バージョン、CPU などハードウエアの情報を提示することは可能でしょうか?
-
私の環境でも試してみました。
結果は、問題なく成功しています。
環境は Visual Studio 2017 15.5.2(現行最新環境)。OSは、Windows 10 Pro IP(17063) です(2018/01/04 22:00時点で適用可能なすべてのWindowsUpdateが適用済み)。
デバッグ実行、ステップ実行、デバッグなし実行いずれも問題なく動作しました。
x86/x64, Debug/Release 一通りの組み合わせでも試していますが特にエラーなどが出ることなく動作しています。
環境依存の問題か、マイナーバージョンのどこかで問題のある出力のものが出てしまっていたかのいずれかではないかと思います。
VSのマイナーバージョン(ヘルプで確認可能)も確認し、古いようであれば最新のものを適用してみてはいかがでしょうか。
とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx
-