본문 바로가기

mandle.Making/C언어

c언어기초 변수와 연산자

프로그래밍상으로 덧셈을 한다면, 실제 우리가 수학에서 배운 +를 사용해서 연산이 가능할까요? visual studio에 3+4라고 입력한 후 컴파일하고 실행해보면 전혀 문제가 없음을 알 수 있을것 입니다. 즉 우리가 기존에 수학에서 사용하듯이 +기호를 프로그래밍에서도 사용 가능하다는 뜻입니다. 이때 숫자연산을 요구할 때 사용되는 기호를 우리는 연산자라고 부릅니다.


그렇다면 연산을한 결과는 어떻게 쓸까요? c언어에서는 이렇게 연산의 결과와 같은 숫자를 사용할 수 있도록 변수라는 것을 만들어 두었습니다. 변수는 변하는 수 쉽게말해 상황에 따라 유동적으로 값이 바뀌는 수를 말합니다. 변수에 대한 자세한 설명은 뒤에 다루겠지만, 지금은 우선 숫자를 저장해서 쓸수있는 공간의 생성이라고만 이해하면 되겠습니다.


그리고 코드상에서 변수를 선언할 때는 int val = 10; 와 같은 형태로 정의해주면 되겠습니다. 이 코드는 val이라는 정수형 메모리공간을 만들고 그곳에 10이라는 정수를 입력한다. 라는 뜻입니다. 그리고 위 코드에서는 c언어에서 가장 중요하지만 동시에 가장 기본적인 = 대입연산자를 볼 수 있습니다. 대입연산자는 수학에서는 는.. 좌편의 연산결과를 우편에 나타내주는 기능을 하죠. 하지만 c언어외에 모든 프로그래밍에서는 오른쪽의 연산결과를 왼쪽에 변수에 대입해라 라는 뜻으로 해석됩니다.


위의 형태로 변수를 지정하는것이 c언어에서 가장 일반적이지만, int val;, int val=10, val2=20;의 형태로도 표현할 수 있습니다. 먼저 int val; 위의 코드와의 차이점은 변수에 입력될 값이 초기화되어있지않다는 것인데요 이때 변수 val은 아무런값도 입력받지 못했기 때문에 0이 되는것이 아니라 쓰래기값이 들어가게 됩니다. 쓰레기값이 아닌 자신이 원하는 값을 입력하고자한다면, 처음 사용하는 코드의 형태로 변수를 선언하는것이 좋습니다. 그리고 int val=10, val2=20;  한번에 두개의 변수를 선언하는 형태를 보이고 있습니다. 이렇게 한줄에 두개이상의 변수를 한꺼번에 선언하는것도 가능합니다.하지만 한줄에 필요한 변수를 모두 같이 선언해버리면 후에 프로그램의 가독성이 떨어질 수 있습니다. 때문에 한줄에는 연관된 변수 2~4개 정도만을 선언하는것이 가독성을 조금이라도 높이는 방법이라고 할 수 있겠습니다.


그리고 변수 선언시 주의해야할 사항이 있는데, 먼저 변수를 함수 내에 선언 할 경우, 프로그램의 제일 처음에 등장해야합니다. 두번째로 변수의 이름은 알파벳, 숫자,언더바로 지정해야하며, c언어는 대 소문자를 구분합니다. 따라서 add와 Add는 서로 다른 변수가 되는것입니다. 그리고 변수의 이름은 숫자로는 시작할 수 없고 변수이름 사이에 공백이 포함될 수 없습니다. 이를 제대로 확인하지 않고 프로그래밍을 했을때 자신나름의 변수의 의미있는 이름을 붙이다가 실수를 할 수 있는데, 이때 컴파일 에러가 났을 때 위의 주의사항을 모르고 있었다면, 에러를 잡기가 어려울 것입니다.

그리고 변수의 이름을 지정할 때 가장 중요한 것은 변수가 가지는 기능의 의미를 지니는 이름을 주어야한다는 것입니다. 예를들어 1부터 차례대로 숫자를 샐때, 카운팅하는 숫자를 저장하는 변수를 선언하는 경우 변수의 이름은 count가 적당할 것입니다. 연습단계에서의 짧은코드를 만들때는 의미가 없을 수 있지만, 후에 길어진 코드를 만들때 만약 변수가 의미없이 a, b와 같이 선언되어 있다면 코딩을 할때마다 a, b가 어떤기능을하는 변수인지 햇갈릴수 밖에 없을 것입니다.


지금까지 변수의 기본적인 이야기를 했는데, 이제부터는 처음의 +연산외 다른 연산자에 대해서 설명하겠습니다. c언어에는 수많은 연산자들이 존재하는데 먼저 사칙연산의 기능을 하는 산술 연산자(+, -, *, /, %)가 있습니다. 순서대로 (+)는 덧셈, (-)는 뺄샘, (*)는 곱셈, (/)는 나눗셈, (%)는 나머지연산을 의미합니다. 아마도 산술연산자에서는 크게 어려운부분은 없으리라 생각되어 자세한 설명은 하지않겠습니다. 

다음으로 기타 대입 연산자(+=, -=, *=, /=, %=)가 있는데 기타 대입연산자는 산술 연산자와 형태가 조금 다릅니다. (+=)를 예로들어 설명하면 "a=a+b" a와 b의 값을 더한 후 a에 결과를 대입한다. 는 코드를 a+=b로 간략화한 것입니다. 이해가 되시나요? 다시말해 +=는 산술연산자와 대입연산자를 합쳐서 코드를 간소화 시킨형태입니다. 산술 연산자와의 주요기능을 크게다르지않으며, 본인이 이 형태가 눈에 익지않는다면, 굳이 사용할 필요는 없는 형태 입니다.

그리고 이번에 살펴볼 증가, 감소 연산자(a++, ++a, a--, --a)는 다음과 같은 형태를 하고있는데, ++a는 값을 1증가한다 그리고 --a는 값을 1감소시킨다 라는 의미입니다. 이부분은 어려울것이 없을것입니다. 그런데 ++a, a++ 형태가 있는데 이부분은 조금 의야해 하실 수 있습니다. 변수 왼쪽에 연산자가 붙는경우(--a)에는 먼저 값을 증가 혹은 감소시킨 후 연산을 진행하고, 반대로 오른쪽에 연산자가 붙는경우에는 연산이 끝난 후에 감소혹은 증가를 하게 되는것입니다.


연산을 할때 사칙연산외에 값을 비교하는 연산자도 있어야합니다. 그것을 c언어에서는 관계 연산자(<,>,=,!=,<=,>=)라고 합니다. 관계 연산자는 말그대로 변수사이의 관계를 비교하는 연산자입니다.  두개의 변수를 가지고 누가더 큰지, 두 값이 같은지 다른지를 비교판단하게 됩니다.


마지막으로 논리 연산자(&&, ||, !)에 대해서 설명하겠습니다. 논리 연산자란 and, or, not을 표현하는 연산자입니다. 순서대로 && = and, || = or, ! = not을 의미합니다. 각각의 의미는 &&는 피연산자가 모두 참이면 true를 반환하고, ||는 피연산자중 하나라도 참이면 true를 반환합니다. !는 반대 참이면 거짓이고, 거짓이면, 참이라는 의미를 가집니다.


c언어에서 변수를 사용하는 방법과 연산자의 종류에 대해서 살펴보았습니다. 정확한 설명을 했다고보기는 어렵지만, 프로그래밍을 배울 때 가장 좋은 것은 이론을 읽는것이 아니라 무조건 프로그래밍을 코딩 해보는 것입니다. 책이나 인터넷의 글을 읽는것도 좋지만, 언제나 비주얼스튜디오등의 프로그래밍툴을 키고 실습해가면서 공부하는것이 가장 좋습니다.