본문 바로가기
[ Program ]/c#스터디

8.변수연산 숫자형

by 관이119 2021. 9. 20.





변수는 연산이 가능하다.

예를 들면 a 라는 변수에 5를 담고 b라는 변수에 10 을 담아서 a 라는 변수와 b 라는 변수를 더하면 15의 값을 얻을 수 있다.

소스코드로 보면 다음과 같다.

 

int a = 5;

int b = 10;

a+b

 

 

변수 형식에 대해 이전에 빠져먹은 내용이 있어 여기서 추가설명하면 위와 같이 변수를 먼저 선언하고 값을 대입한다.

즉 (형식) (변수명) = (대입할값); 형태가 되는것이다.

만약 위 형식대로 하지않으면 에러가 발생하므로 해당에러를 분석해보는것도 좋다.

 

 

어째뜬 위와 같이 연산을 할수 있는데 변수의 타입에는 크게 두가지가 있다.

숫자형과 문자형이다.

소스코드내에서 " 없이 숫자만 1 이라고 적으면 프로그램은 숫자 1로 인식한다.

그런데 "1" 이라고 적으면 숫자가 아닌 문자가 된다.

숫자와 문자는 말그대로 숫자와 문자의 차이이다.

숫자는 숫자끼리 연산이 가능하고 문자는 문자끼리 합칠수 있다.

물론 형변환이라는 것을 통해 숫자와 문자도 합칠수 있다.

 

 

우리는 1+1 = 2 라는 것을 알고 있다.

그리고 1+1 = 창문이라는것도 알고있다.(모르면말고)

숫자와 문자의 차이는 위와 같다.

실제 숫자끼리 연산을 할지 그림으로 1이라는 숫자를 두개 연결할지의 차이인것이다.

프로그램에서 두개의 연산을 실행하면다음과 같이 된다.

1+1 = 2            <-- 숫자연산

"1"+"1" = "11"    <-- 문자연산

위에서 설명한것처럼 1과 1을 그냥 그대로 연결한것이다.

뒤에서 다시 확인해보기로 하고 숫자는 숫자끼리 문자는 문자끼리 라고 일단 기억해두자.

 

 

 

이제 숫자 두개를 더하는 프로그램을 만들어 보자.

이때 주의 할점이 있는데 아래 소스를 보자.

 

int study_person = 2147483647;
double oldavg = 30000;
int result = study_person * oldavg;    ( * 는 프로그램에서 곱하기를 나타낸다 )

 

이런소스는 제대로 동작할지 한번 생각해보자.

그에따른 이유도 한번생각해보고 다음으로 넘어가자.

 

 

그림1

 

결론적으로 말하자면 위소스는 그림1처럼 오류가 난다.

그런데 여기서 설명하려는 오류는 위오류는 아니다. 위오류는 형변환에 관련된 내용인다 나중에 다시 설명하겠다.

 

 

 

그림2

 

소스를 수정해서 동작할수 있게 그림2와 같이 변경을 해주고 결과를 확인해보자.

 

 

 

그림3

 

 

그러면 그림3과 같이 말도안되는 값이 나와버린다.

2147483647 X 30000  을 했는데 위값이 나와버린것이다.

값이 허용범위를 초과해서 그런것인데 int 의 범위를 앞장에서 찾아보자. 

int 형식인  2147483647 와 double 형식인 30000을곱해서 int형식으로처리하려하니

프로그램이 이상동작하는것이다.

즉, 작은범위형식과 큰범위형식을 연산할때는 큰범위 형식으로 결과값을 받아야 한다.

 

 

***숙제 : 숫자두개를 더하거나 빼서 팝업띄우는 프로그램을 만들고 소스공유할것. 팝업창에 띄울때는 결과값에 .ToString() 을 붙여주면된다. (점까지 포함)

댓글