65,208
社区成员
发帖
与我相关
我的任务
分享cin >> a >> b >> c;
if(a < 0 && (b < (-2147483648-a)))
{
cout << b << (-2147483648-a) << " " << endl;;
cout << "flase";
}
cin >> a >> b >> c;
if(a < 0 && (b > (-2147483648-a)))
{
cout << b << (-2147483648-a) << " " << endl;;
cout << "flase";
}
-1 0
false
cin >> a >> b >> c;
if(a < 0 && (b < (-2147483647 - 1 -a)))
{
cout << b << (-2147483648-a) << " " << endl;;
cout << "flase";
}
就可以了,谢谢啦。
还有 int型的范围不是 -2147483648 ~ 2147483647 么, 意思是说常量和变量的范围不同么。 [/quote]
-2147483648被理解成先有常数2147483648再对它取负。但是2147483648已经超出int的表示范围了。在C++03里是未定义行为,在C++11里编译器必须把它解释成long long。
解决方法7L已经说了。[/quote]
谢谢啦,很感谢!cin >> a >> b >> c;
if(a < 0 && (b < (-2147483647 - 1 -a)))
{
cout << b << (-2147483648-a) << " " << endl;;
cout << "flase";
}
就可以了,谢谢啦。
还有 int型的范围不是 -2147483648 ~ 2147483647 么, 意思是说常量和变量的范围不同么。 [/quote]
-2147483648被理解成先有常数2147483648再对它取负。但是2147483648已经超出int的表示范围了。在C++03里是未定义行为,在C++11里编译器必须把它解释成long long。
解决方法7L已经说了。[/quote]
++
谢谢,解说的真详细,我只是在编译器的头文件里,看到 最小整型被定义为 -2147483647-1 ,而不是 -2147483648
所以才认为 -2147483648已经溢出了。
标准我不是很清楚
cin >> a >> b >> c;
if(a < 0 && (b < (-2147483647 - 1 -a)))
{
cout << b << (-2147483648-a) << " " << endl;;
cout << "flase";
}
就可以了,谢谢啦。
还有 int型的范围不是 -2147483648 ~ 2147483647 么, 意思是说常量和变量的范围不同么。 [/quote]
-2147483648被理解成先有常数2147483648再对它取负。但是2147483648已经超出int的表示范围了。在C++03里是未定义行为,在C++11里编译器必须把它解释成long long。
解决方法7L已经说了。cin >> a >> b >> c;
if(a < 0 && (b < (-2147483647 - 1 -a)))
{
cout << b << (-2147483648-a) << " " << endl;;
cout << "flase";
}
就可以了,谢谢啦。
还有 int型的范围不是 -2147483648 ~ 2147483647 么, 意思是说常量和变量的范围不同么。