我剛剛纔知道在C++ 11之前沒有定義除法運算符的舍入行爲。解決方法是使用std::div
。 (Safely round to next smaller multiple)assert(3/2 == 1):這是否工作?
我的程序總是假定/
只會截斷小數部分。作爲一個快速解決方案,我想包含一個斷言,這樣如果有人在具有不同舍入行爲的平臺上編譯,至少會出現錯誤。
請問assert(3/2 == 1)
或static_assert(3/2 == 1)
能做這份工作嗎?或者,這些常量是否會被編譯器內部的算法優化掉,這些算法可能與機器實際做的不同?
['assert'](http://en.cppreference.com/w/cpp/error/assert)不會給你編譯器錯誤,因爲你需要['static_assert'](http:// en .cppreference.com/W/CPP /語言/ static_assert)。 –
對不起。現在已經修復了。我真的不在乎編譯器或運行時錯誤,如果發生這種情況,我只是希望得到警告......(作爲快速修復) – Michael