정수 나눗셈의 동작은 무엇입니까?
예를들면,
int result;
result = 125/100;
또는
result = 43/100;
결과는 항상 사업부의 바닥이 될 것인가?정의된 동작은 무엇입니까?
결과는 항상 사업부의 바닥이 될 것인가?정의된 동작은 무엇입니까?
별로 그렇지 않아요.바닥이 아니라 0을 향해 반올림합니다.
6.5.5 곱셈 연산자
6 정수가 나누어져 있을 때 / 연산자의 결과는 분수 부분이 88)폐기된 대수적 상수가 된다.계수 a/b가 표현 가능한 경우, (a/b)*b + a%b는 a와 같아야 한다.
및 해당 각주:
- 이것은 종종 "0으로 향하는 분할"이라고 불립니다.
물론 주의할 점은 두 가지입니다.
3 일반적인 산술 변환은 피연산자에 대해 수행됩니다.
또, 다음과 같이 합니다.
5 / 연산자의 결과는 첫 번째 피연산자를 두 번째 피연산자로 나눈 것의 몫이며, % 연산자의 결과는 나머지이다.두 번째 오퍼랜드의 값이 0일 경우 동작은 정의되지 않습니다.
[메모: 내 것을 강조]
Dirkgently는 C99의 정수 나눗셈에 대한 훌륭한 설명을 제공하지만, 음의 오퍼랜드를 가진 C89의 정수 나눗셈에는 구현 정의 방향이 있음을 알아야 합니다.
ANSI C 드래프트 (3.3.5)에서:
어느 하나의 피연산자가 음수일 경우 / 연산자의 결과가 대수적 몫보다 작은 최대 정수인지 또는 대수적 몫보다 큰 최소 정수인지는 % 연산자의 결과 기호와 같이 구현 정의된다.계수 a/b가 표현 가능한 경우, (a/b)*b + a%b는 a와 같아야 한다.
따라서 C89 컴파일러를 사용할 때 음수를 사용할 때 주의하십시오.
FORTRAN이 그렇게 했기 때문에 C99가 0을 향해 절단을 선택한 것은 재미있는 사실입니다.이 메시지는 comp.std.c로 참조해 주세요.
예, 결과는 항상 0을 향해 잘립니다.최소 절대값으로 반올림합니다.
-5 / 2 = -2
5 / 2 = 2
부호 없음 및 음수가 아닌 부호 값의 경우 바닥과 동일합니다(-Infinity 쪽으로 반올림).
결과가 음수인 경우 C는 플로어링이 아닌 0으로 잘라냅니다. Python 정수 분할이 항상 여기서 플로어링하는 이유에 대해 다음 글을 읽었습니다.Python의 Integer Division Floors가 필요한 이유
사람들이 당신의 질문에 대답한 건 알지만, 평신도의 표현으로:
5 / 2 = 2
//은 항상 //5의 2를
5.0 / 2 or 5 / 2.0 or 5.0 /2.0 = 2.5
//서 5 2 중 또는 둘 다 입니다./어느 쪽이든 5는 2로, 10은 10으로 지정됩니다.
결과는 항상 사업부의 바닥이 될 것인가?
아니요. 결과는 다양하지만 변동은 음수 값에 대해서만 발생합니다.
정의된 동작은 무엇입니까?
바닥 라운드가 음의 무한대로 진행되는 동안 정수 분할은 0(트룬게이트)으로 라운딩되도록 하려면
양의 값의 경우 같은 값입니다.
int integerDivisionResultPositive= 125/100;//= 1
double flooringResultPositive= floor(125.0/100.0);//=1.0
음수 값의 경우 이는 다릅니다.
int integerDivisionResultNegative= -125/100;//=-1
double flooringResultNegative= floor(-125.0/100.0);//=-2.0
언급URL : https://stackoverflow.com/questions/3602827/what-is-the-behavior-of-integer-division
'programing' 카테고리의 다른 글
Vue.js에서 TypeScript를 사용하여 계산 소품을 사용하는 방법 (0) | 2022.08.07 |
---|---|
매트릭스의 인덱스를 1차원 배열(C++)에 매핑하려면 어떻게 해야 합니까? (0) | 2022.08.07 |
Nuxt server Middleware가 API에서 json을 가져옵니다. (0) | 2022.08.07 |
Java의 XML 해석에 가장 적합한 라이브러리는 무엇입니까? (0) | 2022.08.07 |
어레이를 인라인으로 선언할 방법이 있습니까? (0) | 2022.08.07 |