정수 나누기의 동작은 무엇입니까?
예를 들어
int result;
result = 125/100;
또는
result = 43/100;
결과는 항상 부서의 바닥입니까? 정의 된 동작은 무엇입니까?
결과는 항상 부서의 바닥입니까? 정의 된 동작은 무엇입니까?
예, 두 피연산자의 정수 몫입니다.
6.5.5 곱하기 연산자
6 정수를 나누면 / 연산자의 결과는 분수 부분을 버린 대수 몫입니다. 88) 몫 a / b가 표현 가능하면, 식 (a / b) * b + a % b는 a와 같아야한다.
그리고 해당 주석 :
88) 이것을``0으로 자르기 ''라고합니다.
물론 주목해야 할 두 가지 사항은 다음과 같습니다.
3 일반적인 산술 변환은 피연산자에서 수행됩니다.
과:
5 / 연산자의 결과는 첫 번째 피연산자를 두 번째 피연산자에서 나눈 몫입니다. % 연산자의 결과는 나머지입니다. 두 연산에서 두 번째 피연산자의 값이 0이면 동작이 정의되지 않습니다.
[참고 : 강조 광산]
Dirkgently는 C99의 정수 나누기에 대한 훌륭한 설명 을 제공 하지만, C89에서는 음의 피연산자가있는 정수 나누기에 구현 정의 방향이 있음을 알아야합니다.
ANSI C 초안 (3.3.5)에서 :
피연산자 중 하나가 음수 인 경우, / 연산자의 결과가 대수 지수보다 작은 최대 정수인지 또는 대수 지수보다 큰 최소 정수인지 여부는 % 연산자 결과의 부호와 같이 구현 정의됩니다. 몫 a / b가 표현 가능한 경우, 표현 (a / b) * b + a % b는 a와 같아야합니다.
따라서 C89 컴파일러가 붙어있을 때 음수로 조심하십시오.
FOR99가 그렇게했기 때문에 C99가 0으로 잘림을 선택했다는 것은 재미있는 사실입니다. comp.std.c 에서이 메시지 를 참조하십시오.
결과가 음수이면 C는 바닥이 아닌 0으로 잘립니다. 파이썬 정수 나누기가 왜 항상 여기에 있는지에 대한이 독서를 배웠습니다. 왜 파이썬의 정수 나누기 마루
예, 결과는 항상 0으로 잘립니다. 가장 작은 절대 값으로 반올림합니다.
-5 / 2 = -2
5 / 2 = 2
부호없는 및 음이 아닌 부호있는 값의 경우 이는 바닥과 같습니다 (-Infinity로 반올림).
결과는 항상 부서의 바닥입니까?
아니요. 결과는 다양하지만 변동은 음수 값에 대해서만 발생합니다.
정의 된 동작은 무엇입니까?
정수 나누기가 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
'Programming' 카테고리의 다른 글
내 앱 또는 해당 종속성이 Android 광고 ID 정책을 위반합니까? (0) | 2020.05.13 |
---|---|
SQL 구문은 대소 문자를 구분합니까? (0) | 2020.05.13 |
javac와 Eclipse 컴파일러의 차이점은 무엇입니까? (0) | 2020.05.13 |
"숫자"유형의 html 입력이 필드에 문자 'e'를 입력 할 수있는 이유는 무엇입니까? (0) | 2020.05.13 |
각도 JS에서 이중 및 단일 중괄호의 차이점은 무엇입니까? (0) | 2020.05.13 |