변수 란 ?


* 변하는 수

* x , y , z , ...

* 메모리존재하는 특정 공간




 변수 를 선언할 때는 ?


[변수에넣을자료형] [변수명] ;

[변수에넣을자료형] [변수명] = [초기값으로변수에넣을값];


ex ) int tmp;

      int tmp = 0;        // 쓰레기값을 0으로 초기화 해버렷



변수에 값을 넣을 때 (셋팅할 때)

- 변수선언시의 자료형과 =  같은 자료를 넣어줘야 한다. 

- 작은 공간에 .. 큰 자료를 넣으면.. 그 자료의 일부는 잘릴것이고

  큰 공간에.. 작은 자료를 넣으면.. 그다지 크게 문제되지는 않겠지만.. 나중에 잠재적으로 문제가 생길 수 있다

  이럴 때는 강제로 Casting 해주는 방법이 있다 (강제로 그 공간에 맞게 .. 맞추어 주는 것)



<변수 선언시 주의해야 할 규칙들>


 변수의 이름은 알파벳, 숫자, _를 조합할 수 있다


 변수의 이름은 대소문자를 구분한다


 변수는 숫자로 시작할 수 없다~!!


 C에서 사용하는 keyword를 사용할 수 없다~!!


 변수의 이름에 공백이 포함될 수 없다

overflow 와 underflow 에 대하여..


고찰....





char 형 = 1byte (8bit) 로 표현할 수 있는 unsigned 숫자의 범위는


-128 ~ 0 ~ 127


                                    .. 왜냐하면.. 






2진수로 표현시 0 과 1 .. 2가지의 경우로 표현하는 방법이 있으므로.. 


 

 

 

 

 

 

 

 0 또는 1

  0 또는 1

  0 또는 1

  0 또는 1

  0 또는 1

  0 또는 1

  0 또는 1

  0 또는 1


= 256 가지의 경우의 수... 가 생기며


(unsigned 라고 가정하면) 이 256가지의 경우의 수로  [음수] [0] [양수] 로 표현할 수 있으므로 


[-128~0~+127] 과 같은 범위의 수로 표현할 수가 있는 것이다.


이것이 이해가 안된다면.. 경우의 수 구하기를 복습하고 이해해보도록 하자.


=======================그렇다면=======================



를 2진수로 변환해보자



 

0

1

1

1

 1

1

1

1


                                                 

                ----     ----     ----    ----   ----   ----
                    6 3          3 1         1 5          7          3          1


따라서, 


   = 





[Overflow]


이 데이터가 들어있는 상황에서  +1 을 하게 될 경우


     0111 1111

 + 0000 0001 

-------------------

   1000 0000   이 되고,



10진수로 변환했을 때 -> 이라는 , 전혀 이상한 수가 되어버리고 만다 




그 이유는, 맨 앞의 비트는  MSB (most significant bit) '최상위비트'라 해서


이 자리에 1이 들어올 경우 


 1000 0000  



컴퓨터는 음수로 인식해버리기 때문이다. 



이를 오버플로우 (Overflow) 라고 한다.







[Underflow]


char형(8bit) 데이터 .. 


음수의 표현 중에 가장 낮은 수인,, 




 가 들어있는 상황에서,



(-128)+( -1) = -129 를 만들어보겠다고.. 가정하면 어떻게 되는지 보자. 



     1000 0000            <<-128

+   1111 1111               <<-1

------------------------

  1 0111 1111



읭?   

위의 1은 저장할 공간이 없으므로 버려지고결국 남은 


 = 


즉, -129를 만들어보겠다고 넣은 수 때문에..


+127.. 양수를 만들어버렸다.. 



이를 언더플로우(Underflow) 라고 한다.



데이터타입(data type) 에는 정수형, 문자형, 소수점형 이 있다.

          

        1byte = 8bit   


이것을 잘 기억해야... 


나중에 비트변환 등을 할 때, 헷갈리지 않을 것 같다.


 

 byte

 bit

 기타사항

 int

 4

 32 

 

 short

 2

 16

 

 char

 1

 8

 

 float

 4

 32

 f를 붙여줄 것

 double

 8

 64

 

  

C 또는 JAVA 에서 코딩시, [변수에 넣으려는 자료] 뒤에  'f' 를 꼭 붙일 것 ~!


에러가 안 난다면.. 일단은 다행히도 굴러가겠지만, 이게 나중에 치명적인 오류의 시발점이 될 수도 있다.


JAVA의 경우에는  'f' 를 안 붙이면 에러가 나든데;;; 


그런점은 .. 좋은것 같다.




float 형 표현할 때..  


 %lf (퍼센트 엘에프)와  %f (퍼센트 에프)는 ..  long float  float 의 차이이다


long float 은 길기 때문에 double 형 이며 (8Byte)

float 은 말 그대로 float 임 (4Byte)


예>

printf (" a = %f , b = %lf , c = %c\n " , a , b , c ) ;

printf (" %s\n " , " Who r u ? " ) ;

+ Recent posts