본문 바로가기
📚 STUDY/🔥 C

[4-2] 할당연산자

by 엄지잉 2024. 9. 3.

- 표현식의 값이 계산된 다음엔, 그 값을 변수에 저장해서 나중에 사용해야 함.

- C언어에서 단순할당을 해주는 = 연산자가 여기 사용됨.

- 이미 변수에 저장된 값을 바꾸는 데에는 복합할당연산자를 사용하면 됨.

 

📌 단순할당

- v = e는 표현식 e를 처리하고, 그 값을 복사해 v에 저장한다는 의미.

  *e는 상수, 변수, 혹은 복잡한 표현식이 될 수 있음.

i = 5;            /* i의 값은 5이다  */
j = i;            /* j의 값은 5이다  */
k = 10 * i + j;   /* k의 값은 55이다 */

 

- 만약 v와 e가 같은 형이 아니라면, 할당되는 순간 e의 값은 v의 형에 맞게 변환됨.

int i;
float f;

i = 72.99f;    /* i의 값은 72이다    */
f = 136;       /* f의 값은 136.0이다 */

 

 

📌 왼쪽값

- 할당 연산자는 왼쪽 값이라는 것이 좌측 피연산자로서 반드시 존재해야 함.

- 당장 우리가 아는 선에서는 '변수'만이 왼쪽값에 해당. (변수 이외의 왼쪽값은 추후 단원에서 다룸)

12 = i;       /*** 틀림 ***/
i + j = 0;    /*** 틀림 ***/
-i  = j;      /*** 틀림 ***/

 

 

📌 복합할당

- 코드1을 코드2로 줄여줌.

// 코드1
i = i + 2;

// 코드2
i += 2;    /* i = i + 2 와 같다 */

 

- 복합할당연산자는 = 연산자와 같은 순서를 가지고, 우향결합적임.

- 복합할당연산자는 총 9개이며, 이와 같은 연산자들이 존재함. ( -=, *=, /=, %=)

  • v += e     e에 v를 더하고 그 값을 v에 저장한다.
  • v -= e      v에서 e를 빼고 그 값을 v에 저장한다.
  • v *= e      v를 e만큼 곱하고 그 값을 v에 저장한다.
  • v /= e      v를 e로 나누고 그 값을 v에 저장한다.
  • v %= e    v를 e로 나누었을 때의 나머지를 v에 저장한다.

v += e와 v = v + e는 엄연히 다른 구문이다. 두 구문이 같지 않은 이유는 우선 연산순서 문제가 있다. i *= j + k i = i * j + k가 아니다. 이 뿐만 아니라 v 자체에 부작용이 있어 v += e v = v + e가 서로 다른 경우가 있다. 이는 다른 복합할당연산자에도 해당하는 주의점이다.

 

[!!!] 복합할당연산자를 사용할 때 연산자를 구성하는 두 연산자를 서로 혼동하지 않도록 하자. 두 문자를 바꾸면 컴파일러한테는 상관 없지만 의도한 의미를 잃게 된다. 예를 들어 i += j라고 적어야하는데 i =+ j라고 적었다고 가정해보자. 프로그램은 정상적으로 컴파일은 될 것이지만 후자 표현식은 i = (+j)와 같은 의미이므로 사실상 i에 j의 값을 할당하는 것이다.

 

 

 

💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.

'📚 STUDY > 🔥 C' 카테고리의 다른 글

[4-4] 표현식 평가  (0) 2024.09.03
[4-3] 증감연산자  (0) 2024.09.03
[4-1] 산술연산자  (1) 2024.09.03
Q&A  (3) 2024.09.02
[3-2] scanf 함수  (0) 2024.09.02