#include <iostream>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int num=-2147483648;
int positivenum=-num;
int absval=abs(num);
std::cout<<positivenum<<"\n";
std::cout<<absval<<"\n";
return 0;
}
Hi tôi khá tò mò tại sao đầu ra của các mã trên làPhủ định của -2147483648 không thể có trong C/C++?
-2147483648
-2147483648
Bây giờ tôi biết rằng -2147483648
là số nhỏ nhất trong số represntable ints ký, (giả sử một int
là 32 bit). Tôi đã giả định rằng người ta sẽ nhận được câu trả lời rác chỉ sau khi chúng tôi đã đi dưới số này. Nhưng trong trường hợp này, +2147483648 IS được bao phủ bởi hệ thống 32 bit của các số nguyên. Vậy tại sao câu trả lời tiêu cực trong cả hai trường hợp?
Sử dụng _int64 thay vì int và thử lại. – jmucchiello