int(int(-2)/ unsigned(2))= 2147483647没有警告

时间:2011-10-01 16:51:17

标签: c++ g++

我有类似的代码:

template<typename Ta, typename Tb> Ta doStuff(Ta a, Tb b)
{
    ...
    return a/b;
}

正如标题所说,这样的代码会返回错误的值,其中Ta = int Tb = unsigned。

对于这种情况,有没有办法通过g ++发出警告?

2 个答案:

答案 0 :(得分:4)

是。使用-Wsign-conversion选项:

[nawaz@./]$ g++ filename.cpp -Wsign-conversion

答案 1 :(得分:-2)

尝试:     g ++ -Wall code.cpp -o output