(보충) 최신 gcc에서의 선언문 차이

블로그에 작성중인 c의 경우에는 지금 최신의 주분투와 최신 버전의 gcc를 이용하고 있다. 그러나 작성하는 내용은 이전에 규링이 직접 c를 배울 때 쓰던 책 자료도 참고로 하고 있다. 그러다 보면 요즘과는 차이가 좀 나는 부분이 있는데, 이번에 자료를 만들면서 겪었다.

변수 선언을 할 때, 한번에 특정 변수를 동일한 값으로 취급하여 선언하는 경우가 있다. 이전에 작성한 산술 연산자 글에서의 두번째 예시에 보면 a,b,c,d 네 변수를 차례차례 선언한 수에 c=d=2를 작성하여 c,d를 한번에 2로 지정하였다.%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-02-15-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-4-20-34

근데 c를 오래전부터 짜왔던 분들은 그냥 선언할 때 저 두번째 문장을 확 넣어버리도록 배웠다. 그리고 그 때에는 그대로 했어도 오류가 나지 않았다. 그게 아래에 있는 예시이다.

근데 지금은 이렇게 하면 오류를 낸다.

오류 문장을 보면 d가 선언되지 않았다고 한다. 이게 문제될 것이 뭐냐면서 하는 분들이 있는데, 요즘에는 컴파일러들이 이걸 문제삼는다. 선언을 먼저 함으로써 메모리 할당을 보호하려는 정책인 듯 하다. 자세한 건 찾아봐야 할텐데…;;

21 – 연산자 (산술)

산술 연산자는 수치 계산에 이용되는 연산자로 덧셈, 뺄셈, 곱셈, 나눗셈을 수행한다. 그리고 정수에 대한 나눗셈 연산에서는 소수점 이하는 버린다. 나머지 연산에는 %를 이용하여 나머지만을 나타내며, 정수 연산만 가능하다.

연산자 / 의미 / 예시

  • + / 두 연산자를 더함 / a + b
  • – / 앞의 연산자에서 뒤의 피연산자를 뺌 / a – b
  • * / 두 피연산자를 곱함 / a * b
  • / / 앞의 피연산자에서 뒤의 피연산자를 나눔 / a / b
  • % / 앞의 피연산자에서 뒤의 피연산자를 나눈 나머지 a % b
  • ++ / 피연산자에 1 증가 / a++
  • — / 피연산자에 1 감소 / a–

예시로 +, *를 이용한 예시를 보여준다.

증가 연산자의 경우에는 프로그래밍을 할 때 상당히 많이 이용한다. 사용할 때 조심해야 하는 것이 있는데, ++의 위치이다. a++은 a를 사용한 후에 1을 증가하고, ++a는 a를 사용하기 전에 1을 증가시킨다. 이 둘의 차이를 보여주기 위해서 동일한 식을 보여주자면 아래와 같다.

a = b++;
의 경우에는
a = b;
b = b + 1;
와 같은 식이다.

a = ++b;
의 경우에는
b = b + 1;
a = b;
와 같은 식이다.

이 둘의 차이를 확인하기 위한 예시가 아래의 예시이다. 하나 하나 천천히 실행해서 확인해 본다.