int i = 3.1/2
不會引起任何警告,即使使用-Wall選項。有時,我想知道精度在哪裏丟失。爲什麼gcc不支持此警告,而msvc支持此警告?爲什麼將double賦值給int不會觸發gcc警告?
謝謝。
編輯:我的gcc -v顯示
Configured with: ../../gcc-4.4.1/configure --prefix=/mingw --build=mingw32 --enable-languages=c,ada,c++,fortran,objc,obj-c++ --disable-nls --disable-win32-registry --enable-libgomp --enable-cxx-flags='-fno-function-sections -fno-data-sections' --disable-werror --enable-threads --disable-symvers --enable-version-specific-runtime-libs --enable-fully-dynamic-string --with-pkgversion='TDM-2 mingw32' --enable-sjlj-exceptions --with-bugurl=http://www.tdragon.net/recentgcc/bugs.php
這可能是有用的知道,-Wall不會打開當前編譯器所支持的所有警告。這是幾年前提供的一系列警告。使用-Wextra添加了一些,但我不確定是否包含截斷警告。 – Dipstick 2010-01-04 12:18:02
按理說,你應該先爲「3.1」的警告,因爲這個數字不能完全以一個IEEE 754浮點雙表示。這可能是海灣合作委員會不警告你的原因:你會得到很多警告,他們不會有用。 – 2010-01-04 12:19:54
@chrisharris:即使-Wall -Wextra -ansi -pedantic,這是行不通的。 – Jichao 2010-01-04 12:41:21