4234967295는 unsigned int
에서 가장 큰 숫자이며이 숫자에 그 숫자를 곱하면 어떻게 표시합니까? 나는 시도했다 :매우 큰 숫자 표시
long unsigned int NUMBER = 4294967295 * 4294967295;
그러나 대답으로 1을 얻는.
4234967295는 unsigned int
에서 가장 큰 숫자이며이 숫자에 그 숫자를 곱하면 어떻게 표시합니까? 나는 시도했다 :매우 큰 숫자 표시
long unsigned int NUMBER = 4294967295 * 4294967295;
그러나 대답으로 1을 얻는.
오버플로가 발생했습니다. 16 진수 muplication를 고려
0xffffffff * 0xffffffff == 0xfffffffe00000001
^^^^^^^^
only the last 32 bits are returned
용액은 long long unsigned
으로 큰 형태를 사용하는 것이다
long long unsigned int NUMBER = 4294967295ULL * 4294967295ULL;
접미사가 ULL
unsigned long long
을 의미한다.
하는 것은 온라인으로 작업을 참조하십시오 : 당신이 최대 INT 알고 귀하의 질문에 ideone
덕분에 선생님하지만 내 수는 부호 부호없는 long int와의 NUM 같은 정수에 저장 인 경우 = 4294967295 다음, – mainajaved
당신의 상태가 서명되지 않은 INT를 사용하는 경우보다 큰 수 저장할 수 없음을 의미 4294967295 같다.
C의 갈망은 [source] 그래서 당신은 단지 필요 UL와 숫자 접미사 64 비트 유닉스 시스템에서 서명되지 않은 18,446,744,073,709,551,615까지 저장할 : 4294967295UL
당신에게 64 비트 유닉스 시스템을 다음 사용하지 않는 경우 long long unsigned int
과 접미사를 사용해야합니다. LL
덕분에 많이 선생님 \t 덕분에 선생님하지만 내 수는 부호 부호없는 long int와의 NUM = 4294967295 같은 정수에 저장이 경우는 다음 – mainajaved
예, 오버플로입니다. 만약 당신이 C를 사용한다면, 내가 알기에 그렇게 많은 수의 곱셈을하는 쉬운 방법이 없습니다. 어쩌면 너 혼자서 쓸 필요가있을거야. 실제로 일부 언어는 원래 이러한 기능을 지원합니다.
곱셈 오버 플로우가 발생합니다.
#include <stdio.h>
int main()
{
unsigned int a = 4294967295;
unsigned int b = 4294967295;
// force to perform multiplication based on larger type than unsigned int
unsigned long long NUMBER = (unsigned long long)a * b;
printf("%llu\n", NUMBER);
}
[당신이 부호 오래 오래 지능는 printf 어떻게해야합니까?] (의
고마워요. 그렇지만 제 번호가 unsigned unsigned long int num = 4294967295와 같은 정수로 저장되어 있다면 – mainajaved
@mainajaved 제 코멘트를 업데이트했습니다. – mloskot
고맙습니다. – mainajaved
가능한 중복 http://stackoverflow.com/questions/2844/how-do-you-printf-an-unsigned-long-long- int)를 – mloskot