C++ 模板化函数无法将值与-1相乘

C++ 模板化函数无法将值与-1相乘,c++,g++,c++14,C++,G++,C++14,请看下面的简单代码, 使用命令g++-std=c++14-g-O2 CODE.cpp编译它会产生奇怪的输出: 为什么会这样-2147483648 请解释一下这种行为 为INT_MIN推导的类型为INT。 -如果INT_MIN=-INT_MAX-1,INT_MIN可能会导致整数溢出,这在大多数平台上都是正确的,因此会导致未定义的行为。Two's complete。。。 # include<bits/stdc++.h> using namespace std; # define pc

请看下面的简单代码, 使用命令g++-std=c++14-g-O2 CODE.cpp编译它会产生奇怪的输出:

为什么会这样-2147483648

请解释一下这种行为

为INT_MIN推导的类型为INT。
-如果INT_MIN=-INT_MAX-1,INT_MIN可能会导致整数溢出,这在大多数平台上都是正确的,因此会导致未定义的行为。

Two's complete。。。
# include<bits/stdc++.h>

using namespace std;

# define pc(x)    putchar(x)

template <class T>
inline void pd(T num, char ch = ' '){

   num = -num;
   cout << "Why this ?? " << num << endl;

}

int main(void){

   pd(INT_MIN);

   return 0;
}