#include <iostream>
#include <string>
using namespace std;
int main() {
long long a;
int b=500000, c=500000;
a = b*c;
cout << a;
}
이거 b, c를 int로 했을 때, 제대로 연산 안되던데 이유가 뭐야??
*의 내부 작동 원리를 모르겠어
#include <iostream>
#include <string>
using namespace std;
int main() {
long long a;
int b=500000, c=500000;
a = b*c;
cout << a;
}
이거 b, c를 int로 했을 때, 제대로 연산 안되던데 이유가 뭐야??
*의 내부 작동 원리를 모르겠어
b*c를 먼저 계산하니까 오버플로우남 - dc App
b*c 계산한 값을 내부적으로 다른 변수에 저장되는 거 아닌가요?? 이런 건 내부적으로 자료형 맞춰서 할거라 생각했는데,,
a에 넣기 전까지는 long long이 아님 그리고 이런건 형변환 검색해서 찾아보셈 - dc App
답변 모두들 감사합니다!
이건 문법상의 오류는 아니니 컴파일 자체가 실패하지는 않을 거고 대신 값이 너가 말한대로 이상하게 나옴 b * c를 계산한 결과가 long long 자료형인 a에 저장된다 한들 b * c를 계산한 결과가 a로 저장되기 전에 이미 오버플로우가 나버림. 그래서 값이 이상하게 나올 수 밖에 없음
a = (long long)b*c; 이런 식으로 하셔야 오버플로우가 안 남
답변 감사합니다
이거 신경안써주면 맨날당함 ㄹㅇ
1LL*b*c