下面四份代码,代表了 double
和 long long
到 int
的强制转换。本人对于四个输出存在疑惑,多请大佬解释。
#include<iostream>
double INF = 1e18;
int a = INF;
int main(){std::cout << a;}
output: -2147483648
#include<iostream>
int a = 1e18;
int main(){std::cout << a;}
output: 2147483647
#include<iostream>
long long INF = 1e18;
int a = INF;
int main(){ std::cout << a; }
output:-1486618624
#include<iostream>
int a = 1000000000000000000;
int main(){ std::cout << a; }
output:-1486618624