[C언어] % 연산자. mod 연산자. 예제소스&그림
[C언어] % 연산자. mod 연산자. 예제소스&그림
[C언어] % 연산자. mod 연산자. 예제소스&그림
다룰 내용
나누기의 기본적인 방식
반드시 알아야 하는 나누기의 주의사항.
정상적인 나누기를 하기 위한 2가지 방법.
% 연산자를 알아보자.
주로 사용되는 %의 2가지 방법.
반드시 알아야 하는 나누기의 주의사항.
정상적인 나누기를 하기 위한 2가지 방법.
% 연산자를 알아보자.
주로 사용되는 %의 2가지 방법.
나머지 연산. 이라고 하며 % 또는 mod (모드) 연산자 라고도 한다.
%연산자를 배우기 전에 일단 나누어서 결과를 취하는 경우는 3가지가 있다.
1. 나누어서 몫과 나머지를 구하는 방법.
2. 나누어서 몫만 구하는 방법.
3 .나누어서 나머지만 구하는 방법.
꼭 알아야 하는 나누기의 주의사항을 알아보자.
처음 또는, 오랜만에 접하는 사람들이 범하는 실수인데
바로 정수를 정수로 나누는 것이다. ( 3 / 2 )
처음 또는, 오랜만에 접하는 사람들이 범하는 실수인데
바로 정수를 정수로 나누는 것이다. ( 3 / 2 )
3/2 우리는 사람이라 별 이상한 점을 느끼지 못한다.
하지만 컴퓨터는 1 이라는 값을 알려준다.
정수를 정수로 나누는 경우에는 정수의 값이 나온다.
즉, 소수점은 나오지 않는 것이다.
정수를 정수로 나누는 경우에는 정수의 값이 나온다.
즉, 소수점은 나오지 않는 것이다.
보여주기 위해서 정수 나누기도 정수의 결과 값을 저장하는
i_result 도float로 선언했지만 int로 잡으면 마찬가지로 1 이 나온다.
행여나 테스트 해본다며 작성하다가 f_result 마저 int로 잡는 실수는 하지 말자.
1.500000 라는 값이 정상적으로 나왔지만, int 라는 기억 공간에 들어가면서
.500000 이 짤리고 1 만 들어가버린다.
정상적인 나누기를 하기 위한 방법이 2가지가 있다.
이 중 한가지를 반드시 사용해야 정상적인 값이 나온다.
3 / 2.0 상수인 경우 뒤에 .0을 붙여서 실수화 시켜준다.
3 / (float) 2 두 숫자 중 한 곳에 (float)로 명시적 형 변환을 시켜준다.
위쪽 방법은 주로 상수. 둘 수 중 하나라도 상수인 경우 편하게 .0을 붙여서 실수화 시킨며
아래쪽 방법은 변수라서 .0을 붙일 수 없으므로
(float) , (double) 같은 실수를 표현 할 수 있는 자료형을 형 변환 시킨다.
이렇듯 나누기는 소수점.
즉, 실수가 나오기 때문에 받아주는 변수가 반드시 실수를 표현할 수 있어야한다.
int를 사용해선 안된다. 정상적인 방법으로 나누었다 하더라도 표현할 때 소수 부분이 짤린다.
이제. % 연산자에 대해 알아보자.
% 연산자란 나머지를 구한다고 했었다. 아래 예제를 보자.
여기서 보이다 싶이. 나머지의 특성상 자기와 같은 값은 나올 수가 없다.
0 부터 자기보다 작은 값이 계속 반복된다.
나머지가 자기 자신과 같아 진다는 것은 그 수로 한번 더 나눌 수 있다는 것을 의미하며
당연히 한번 더 나누게 되면 나머지는 0으로 된다.
내가 본 주된 용도는 2가지 였다.
1. 배수 구하기.
2. 랜덤 함수 범위 지정하기. (자기보다 작은 값 나오게 하기.)
1번 나머지 연산을 해서 0이 나온다는 것은?
그 수로 딱 나누어 떨어진다는 의미로 그 수의 배수라는 의미이다.
위에서 보다 싶이. 3과 6에서 나머지는 0이 나왔다.
2번. 랜덤 함수의 범위 지정하기.
아직 랜덤 함수를 써보지 못해서 모를 수도 이겠지만, 개념만 이해하자.
랜덤의 경우 0부터 랜덤수를 발생하는데 몇 천의 수도 나오고 한다.
하지만, 내가 원하는 랜덤수는 그렇게 클 필요가 없다. 0에서 9정도면 적당한데... 이럴 때 !
랜덤수에 % 10을 해주자. 어떤 결과를 예상하는가? 그 수가 몇이던 10으로 나누고 나머지를 취하는 이상
나머지는 10 보다 작을 수 밖에 없다. 즉 0 ~ 9 사이의 숫자가 되는 셈이다.
뭐, 5~7 을 구한다거나 할 수도 있는데. 랜덤함수 작성시에 포스팅 하고
이쪽에도 링크를 걸도록 해야겠다.
무튼, 이 두가지 정도면 이해한다면 %연산자에 대해 충분히 이해 했다고 생각한다.
'프로그래밍 > C언어.' 카테고리의 다른 글
#define 사용법, #define에서 # 사용법. 예제소스&그림 (3) | 2012.02.26 |
---|---|
getchar(), getch(), getche()의 차이점. 예제소스 & 그림 (3) | 2012.02.26 |
첫 테스트 글 (0) | 2012.02.07 |
[C언어] 빙고게임 만들기. 소스 및 설명. (9) | 2011.10.18 |
[C언어] 문자열 자르기(strtok). 간단 예제 및 설명. (0) | 2011.09.30 |