2022. 5. 4. 15:31ㆍc,c++ 기본/진짜 기본
안녕하세요 대학생 개발자입니다.

오랜만에 돌아왔습니다.
그리고 진짜 기본이라는 새로운 카테고리를 가지고 돌아왔습니다.
이 카테고리는 c언어를 처음하시는 분들을 위한 카테고리입니다.
만약 나는 이런거 볼 레벨은 아닌데...? 하시는분들과
서버 개발일지를 보러 오셨다면 과감히 좋아요를 누르고 뒤로가기를 눌러주시면 감사하겠습니다.
먼저 변수에 대한 얘기를 해보려고합니다.
c언어의 책에 뭐라고 써져있는지 모르겠지만 변수는 사실 정해진 크기의 값을 담을 수 있는 공간입니다.
이렇게 말로만 말씀을 드리면 이해가 안되실겁니다...
지금 제입장에서는 너무나도 당연히 받아들여지는 부분이 입문한지 얼마안되신 분들께는 어려운 내용이니 말이죠.
우선 변수를 선언하는 방법은 다음과 같습니다.
타입 이름 = 값;(int a = 10;)
타입이라는건 그 변수가 가질수 있는 공간의 크기를 정하는 용도로 사용합니다.
일반적인 정수의 경우에는 int라는 타입을 사용하며 현재 대부분 컴파일러에서 사용되는 int의 범위는 32비트입니다.
비트라는건 하나의 플래그로 보시면 됩니다.
true or false의 값을 가질수있는 최소 단위이구요.
즉 비트가 32개고 1개의 비트는 2개의 값을 표현할 수 있습니다.
그러므로 int의 경우에는 총 2^32개의 값을 표현할 수 있는 공간을 가지고 있는거죠.
앞으로 우리는 이런 변수를 절대로 값을 저장한다라는 추상적인 느낌으로 가지 않을겁니다.
정확히 int라는 32비트의 공간에 10 이라는 값을 2진수로 바꾼 1010이라는 플래그가 들어가있다로 해석할겁니다.
이런 관점으로 보는것이 프로그래머로서 첫걸음이라고 생각하시면 좋을것 같습니다.
그림으로 보시면 다음과 같이 표현이 되겠네요.
메모리가 위와같이 되어있을 때 int a = 10; 라는 코드를 실행하면 원래 비어있던 메모리를 다음과 같이 만들어 줄겁니다.
이글을 보신 여러분들은 변수란 값을 저장하기 위한 공간이다라는 추상적인 개념보다는 실제 메모리에 어떻게 들어가는지 파악하시고 원리를 알아가는게 중요한것 같습니다.
두번째로 연산자에 대한 얘기를 해보려고합니다.
제 개인적으로 연산자는 크게 중요하지 않은 것 같습니다.
다만 프로그래밍 입문시 주의해야할 연산자가 몇가지 있습니다.
우선 우리가 수학할때 등호로 알고있는 '=' 연산자입니다.
이 연산자는 우항을 좌항에 대입할때 쓰는 연산자입니다.
결코 등호가 아니란 말입니다.
a = b; 라는 식이 있다면 이 의미는 a와 b가 동등하다는 의미가 아니란 말입니다.
우항인 b의 값을 a에 대입하라는 의미입니다.
결과적으로 봤을때 b와 a는 같은값이 될겁니다.
하지만 위의 행위는 절대로 등호의 역할을 한다고 할수는 없을겁니다.
우리가 알고있는 등호와 비슷한 역할을 하는 연산자는 '==' 라고 쓰셔야 합니다.
a==b; 와 같이 말이죠.
ㅋㅋㅋㅋ 대화중인 채팅방에서 좋은 예시가 나왔습니다
이런식으로 쓰시면됩니다...
여기까지는 입문자들을 위한 햇갈릴수있는 부분에 대한 언급이고 사칙연산과 같은 연산을 모르시는 분은 없다고 생각하기 때문에 그냥 넘어가도록 하겠습니다.
나머지 연산자들은 크게 어렵지 않고 사용법도 간단할겁니다.
제가 생각하는 중요한 좀 생각을 해서 짜야하는 연산자들은 비트연산자인데요.
'|' , '^' , '~' , '&' , '<<' , '>>' 와 같은 애들이 있습니다.
딱봐도 희안하게 생겼습니다.
처음만났다면 어떻게 사용하는지도 모르겠습니다.
비트 연산이란건 말그대로 비트에 대한 연산을 하겠다는 의미입니다.
| 는 비트합입니다.
1010 1111 을 |로 묶는다면 1111이 나올겁니다.
예전에 논리합에대해서 배우셨을텐데 둘중 하나라도 참이면 참이나오는것과 동일합니다.
둘중 하나라도 1이라면 1입니다.
&는 논리곱입니다.
1101과 1000을 &로 묶는다면 1000이 나올겁니다.
논리곱과 동일합니다. 둘중 하나라도 참이 아니면 참이 아닙니다.
둘중 하나라도 0이라면 0입니다.
~연산자는 bit not 연산입니다.
1010을 ~하게되면 0101이 됩니다.
^은 xor연산자입니다.
1010과 1100을 ^으로 묶는다면 0110이 나오게 될겁니다.
같으면 0 다르면 1입니다.
<<와 >>는 bit shift연산자로
0001 이 있을때 1을 right shift 하게되면 0010이 됩니다.
반대로 1001을 left shift 1 을 하게되면 0100이 될겁니다.
두번째 예시에서 봤듯이 잘리는 값은 버려집니다.
이런 연산자들이 있구나 정도로만 알아두셔도 됩니다...
아마 초기 입문을 하신 분들이 저런 연산자들을 사용하게 될 상황이 얼마나 나올지는 모르겠습니다.
그러니까 일단은 그러려니 하고 넘기셔도 좋습니다.
하지만 나중에 결국엔 쓰게 될거란거죠.
그럼 여기서 마무리를 해야겠군요.
오늘 처음으로 뇌를 리프레시도 할겸 입문자 분들을 위한 글을 준비해봤습니다.
저한테는 좀 당연한 개념이긴 하지만 처음보시는 분들의 입맛에 맞춰서 설명을 드리려고 노력을 많이했습니다.
그래도 이해가 안가시는 부분이 간혹 있으실텐데요...
댓글로 궁금한점 남겨주시면 보는대로 답변 해드리겠습니다.
그럼 오늘도 열공하시고 다음글에서 뵙겠습니다.
안녕히계세요