2010-01-04 99 views
6
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

+2

這可能是有用的知道,-Wall不會打開當前編譯器所支持的所有警告。這是幾年前提供的一系列警告。使用-Wextra添加了一些,但我不確定是否包含截斷警告。 – Dipstick 2010-01-04 12:18:02

+5

按理說,你應該先爲「3.1」的警告,因爲這個數字不能完全以一個IEEE 754浮點雙表示。這可能是海灣合作委員會不警告你的原因:你會得到很多警告,他們不會有用。 – 2010-01-04 12:19:54

+1

@chrisharris:即使-Wall -Wextra -ansi -pedantic,這是行不通的。 – Jichao 2010-01-04 12:41:21

回答

10

-Wconversion警告隱式轉換。

+0

但它並不在我的GCC-MinGW的工作3.4.5 – Jichao 2010-01-04 12:40:50

+0

是否MinGW的認識此選項,請使用gcc -v選項獲取更多細節。 – Andy 2010-01-04 13:45:48

相關問題