본문 바로가기

Programming/C language

Chapter 04. 연산자 기본 (내용 요약)

항 


C언어 : 함수(덩어리)들의 연결     <-    구문(statement)들의 나열    <-    항들의 모임 


항 항 항 항;    ->    구문들의 흐름    =>    context (문맥)     =>    흐름을 바꾸는 것 : context switching 




연산의 임시결과 


3 + 4 + 5    =>    12 


연산자 우선순위에 의해 3 + 4 가 실행되어 7이라는 결과값이 나오고 그 값과 5가 더해져서 12가 나오는데, 이 때 7이 임시결과이다. 


임시결과는 연산 후 자동으로 삭제되기 때문에 필요하다면 변수에 저장을 해두어야한다. 


'=' (단순대입) : Copy & Overwrite


ex)    int a, b = 3;

a = b;                    a : l-value (이때 l은 left도 되지만 location -위치지정자-라는 의미도 있음),    b : r-value



이형 자료간의 연산 및 형 승격


'A' (char) + 1 (int)    ->    ?

표현 범위가 큰 형식을 따른다.  ✳︎ int가 된다. 


이는 putchar() 함수의 매개변수의 자료형이 int인 이유이다. 


123.45 (double) + 1 (int)    ->    124.45 (double)


나눗셈


5 / 2 = 2.5 이다. 


but) 5 / 2 의 결과를 프로그래밍 해보면 2가 나온다. 


5 (int) / 2 (int)    ->     2 (int) -소수점 이하는 버려짐-  


=> 5 / 2.0 으로 변경하면 정상적으로 2.5가 출력된다. (int) / (double)  =>  (double)



Computer는 어떻게 나눗셈을 하는가


7 / 2     =>     5 - 2     =>    3 - 2    =>  1 (나머지)

  (1)                  (2)                (3) <- 몫


✳︎ 7 / 0    =>    무한루프 (인터럽트로 강제 종료) 


입력 받은 수로 나눌 때 0에 대해 예외처리를 해주어야한다.


프로그래밍 기본 요소


교환 - 임시 변수를 하나 추가해서 교환해야한다.  

누적 - 반드시 누산을 위한 변수를 0으로 초기화 해야한다. 

계수 - 1씩 증가시킴, (수를 세는 경우에 많이 사용 ++x) x++ 과 혼동하지 말것 


형 변환 (type cast)


자료의 해석 방식을 강제로 변경하기 때문에 data의 왜곡이 발생할 수 있으므로 사용할 때에는 항상 주의해야한다. 


비트 연산자


Shift right 연산을 할 때, 왼쪽에 bit가 추가되고, 오른쪽엔 bit가 삭제되는데, 

왼쪽에 추가되는 bit는 부호비트와 같다. 


ex) 0x83 >> 2

 10000011(2) >> 2    => 11100000(2) 이 된다.


왜 비트 연산자를 사용하는가


mask 연산을 위해서 사용한다. 


ex) Network 서브넷 마스크, embedded system에서 switch 제어


2의 보수 취하기


2의 보수 = 1의 보수 + 1 

   : ~x + 1 



- 출처 : 독하게 시작하는 C 프로그래밍 (최호성, 루비 페이퍼)