1. IDE설치와 C프로그래밍을 시작해보자.


2. 변수란 무엇인가?


3. 연산자


4. 조건문


5. 반복문


6. 함수


7. 포인터


8. 구조체


9. 공용체


10. 메모리 동적 할당


오히사시부리.png 


요~ 오히사시부리~! 


저번 강의 개판으로 썼는데 일베보내줘서 고마워. 

(내가 생각해도 일베갈 감이 아닌데도 정보글이 없기에 게이들이 보내줘서 매우 고맙다.)


저번 강의에 두가지 반응이 있었는데 하나는 비록 허접한 정보글이지만 고맙다는 분류와 다른 하나는 존나 못 가르친다야.


사실 나는 이거 전공도 아니고 그저 취미로 공부하고 있어. 왜냐? 내가 필요한 프로그램을 나중에 필요할 때 만들기 위해서야


미리 말해주고 싶은 것이 있는데 눈에 시각적으로 뭔가 산출물이 바로바로 나오는 걸 보고 싶으면 C언어 보다 비주얼베이직같은


4세대 언어를 공부하라고 권유하고 싶어.


이제 연산자에 대해서 이야기 하려고 해.


3. 기본 연산자


프로그래밍이란 주어진 데이터를 가지고 처리를 해서 정보로 바꾸는 거야.  정보를 처리하는 방법은 여러가지 있지만, 


우리가 쓰는 컴퓨터라는건 계산을 하려고 만들었어. 최초의 컴퓨터라고 하는 에니악도 포탄의 사표를 제작하려고 만드거였지.


우리가 계산을 하려면 +, -, x, ÷을 쓰잖아. 이걸 우리는 사칙연산이라고 부르고 컴퓨터에서도 이러한 연산자가 있어.


이걸 연산자(operator)라고 하는데 기본 연산자는 아래에 표로 나타낼 수 있어.



소스를 보고 따라하랑께

연산자1.jpg


따라 했으면 아래 사진같이 나올거야.


연산자2.jpg


여기까지 따라 했으면 복합 대입 연산자를 알아볼게


3-1 복합대입연산자


복합 대입연산자가 뭐냐면 음... 예를 들어 이야기 할게


num1과 num2 변수가 있다고 하고 각 각 7, 3이 있다고 치자.


이걸 더하거나 나누거나 한것을 num1에 다시 넣는다고 하자.


(덧셈을 가지고 이야기 하면)


num1 = num1 + num2; 이렇게 쓰는걸 num1 += num2; 줄여서 쓴다고 알고 있으면 돼.


복합대입산자는 아래에 표와 같이 있어.


복합 대입 연산자 복합 대입 연산자 내용


연산자 연산자 내용
= 오른쪽에 있는 데이터를 왼쪽 변수에 넣는다.
+ +왼쪽값에 오른쪽 값을 더한다.
- -왼쪽값에 오른쪽 값을 뺀다.
* *왼쪽값에 오른쪽 값을 곱한다.
/ /왼쪽값을 오른쪽 값으로 나눈다.
% %왼쪽값을 오른쪽 값으로 나눈 몫이다.


※ >>=나 <<= 등 비트연산이 있는데 그건 나중에 이야기 할게.


근데 이 복합대입연산자는 조심해야 할게 있어 사칙연산이 =대입연산자 왼쪽에 와야 한다는 거야.


예를 들어 깜빡 하고 대입연산자 오른쪽에 쓰면 컴파일러가 이걸 연산자가 아닌 부호로 읽어 버리는 거야.


연산자3.jpg 연산자4.jpg

이 경우는 정확히 썼을 때 모습이야


하지만 말했던 것 처럼 잘 못 쓰면


연산자5.jpg


연산자6.jpg


3-2 증감연산자


증감연산자란 저장공간에 있는 데이터를 1씩 증가 시키거나 감소 시키는 거야.


이건 나중에 알아볼 반복문(반복적으로 시행 시키는 문)에 많이 쓰여.


표로 보면 아래와 같아.


복합 대입 연산자 복합 대입 연산자 내용
+= += 왼쪽 저장소에 있는 데이터와 오른쪽 데이터와 더한 뒤 왼쪽 저장소에 넣는다
-= -= 왼쪽 저장소에 있는 데이터와 오른쪽 데이터와 뺀 뒤 왼쪽 저장소에 넣는다
*= *= 왼쪽 저장소에 있는 데이터와 오른쪽 데이터와 곱한 뒤 왼쪽 저장소에 넣는다
/= /= 왼쪽 저장소에 있는 데이터와 오른쪽 데이터와 나눈 뒤 왼쪽 저장소에 넣는다
%= %= 왼쪽 저장소에 있는 데이터와 오른쪽 데이터와 나눈 뒤 나머지를 왼쪽 저장소에 넣는다


연산자7.jpg


연산자8.jpg 


덧셈 증감연산자 num3 = ++num1 + num2 와 num3 = num1++ + num2를 가지고 풀어 써볼게


1. num3 = ++num1 + num2는


num3 = (num1 = num1 + 1) + num2라고 볼 수 있어. 이걸 더 쉽게 쓰면


num1 = num1 + 1;

num3 = num1 + num2; 라고 하고,


2. num3 = num1++ + num2는


num3 = num1 + num2;

num1 = num1 + 1; 라고 해.


증감연산자를 다시 말해 저장공간 앞에 붙이면 1증감을 하고 문장을 실행하고 저장공간 뒤에 붙으면 문장을 실행하고 저장공간 데이터를 1증감한다고 


생각하면돼. 


3-3 비트연산자


비트 연산을 하기전에 저번에 알아 본 변수에 대해서 다시 이야기 해볼려고 해. 


위에 컴퓨터는 계산기라고 하였어. 계산기를 개발하는데 과학자들이 고민을 해. 사람들은 10진수(0~9를 쓰는 수) 쓰는데 계산기는 어떻게 수를 표현


해야하지. 전기는 전원이 들어오는 On 전가기 끊기는 Off밖에 없는데 어떻게 하지


아몰랑.png


아 몰랑! 두가지 표현 밖에 못 하니 2진수(0과1)로 표현 하자. 그래서 2진수를 도입해. 이렇게 해서 컴퓨터의 데이터 기본단위인 bit(세탁세제아님)가 된거야.


계산을 하는데 사람은 복잡계산은 머리 좋은 사람은 암산으로 풀겠지만, 종이에 적어서 풀잖아 .컴퓨터도 계산을 1 + 2 + 3 + 4를 계산한다고 해봐


2개의 수와 1가지 사칙연산을 입력 받는다고 하면 1 + 2를 입력하고 3 + 4를 입력하면 각각 3, 7은 나오지만 사람이 지켜보고 있다가 숫자를 어딘다가 적어


놓고 3, 7, +를 입력 해야해. 근데 이게 데이터가 작으면 사람이 할 수 있지만, 계산식이 복잡해지거나 데이터가 많아지면 힘들어. 그래서 컴퓨터 내부에


저장할 수 있는 장치를 만들게 되는데 이게 메모리가 돼. 쉽게 생각해서 그릇이라고 생각하면돼 그릇에 0과 1을 중 하나만 넣을 수 있는 그릇이 있는데 이걸


일열로 여러개로 묶은 것이라고 쉽게 생각하면 될거야.


 ※ 바이트는 비트를 8개로 1나의 단위로 묶은 것


자료형은 쉽게 말해 우리 사는 세상에 문자도 있고, 숫자도 있고, 기호도 있어. 그런데 컴퓨터에 숫자도 표현하고 싶고 문자도 표현 하고 싶은거야


숫자도 정수도 있고, 실수도 있고, 무리수도 있고, 유환소수, 무환소수 등 수가 있는데 컴퓨터에 표현은 하고 싶고, 글자도 표현해서 쓰고 싶고 


하고 싶은건 많은데 이 새끼는 0과 1밖에 안되니 어떻게 해야 하나... 이러한 고민때문에 만든거야.


근데 메모리에 정수와 실수만을 저장 할 수 있어. 


2바이트 공간이 있다면 0000 0000 이렇게 되어 있고, 정수를 저장한다고 하자.


정수 43을 저장한다고 하면 43을 2진수로 표현하면 0010 1011(2)가 돼.


(혹시 2진수로 만드는 법은 43을 2로 나누고 나눈 몫과 또 2로 나누고 계속 해서 나눈 몫이 1이 될 때까지 반복 하는거야.


43/2 = 22 나머지 1, 22/2 = 11 나머지 0, 11/2 = 5 나머지 1, 5/2 = 2 나머지 1, 2/2 = 1 나머지 0 이야. 


43에서 나온 나머지 부터 각 나눈 나머지와 마지막 몫이 1을 오른쪽에서 부터 왼쪽으로 쓰면 101011(2)가 되는걸 알 수 있지


이런식으로 10진수를 2진수로 표현하는거야.)


2바이트 메모리 공간에 43이 저장 되어있다면 0010 1011(2)가 저장하지.


본론으로 들어가서 비트연산을 알아 보자고 비트연산은 논리연산이라고 하는데 아래 표와 같아.


증감연산자 증감연산자 내용
++num1 num1 데이터를 1를 먼저 증가시키고 문장 진행
num1++ 문장을 먼저 진행하고 num1 데이터를 1증가
--num1 num1 데이터를 1를 먼저 감소시키고 문장 진행
num1-- 문장을 먼저 진행하고 num1 데이터를 1감소

복합연산자2(비트 복합연산자)


증감연산자 증감연산자 내용
++num1 num1 데이터를 1를 먼저 증가시키고 문장 진행
num1++ 문장을 먼저 진행하고 num1 데이터를 1증가
--num1 num1 데이터를 1를 먼저 감소시키고 문장 진행
num1--

문장을 먼저 진행하고 num1 데이터를 1감소


오늘은 여기까지 할 게 다음 이야기는 조건문이랑 메모리내 실수 저장방법을 알아볼거야.


이상 좋은 주말 되고 이


비트연산 비트연산내용
& AND 연산이라고 한다. A & B 일때 A와 B가 1이면 1이고 나머지는 0이다.
| OR 연산이라고 한다. A | B 일때 A와 B중 어느 하나라도 1이면 1이다. 즉, A와 B가 둘다 0이면 0이고 그 외는 1이다.
^ XOR 연산이라 한다. A ^ B 일때 둘중에 1과 0 중 A와 B값이 다를 경우 1이고 같을경우 0이다. 예) 1 ^ 0 은 1, 1 ^ 1은 0
~ NOT 연산이라 한다. ~A 일경우 A 가 0일때 반대값이 1, 1일때 반대값인 0이다.
<< Shift 연산이라 한다. A << B 일경우 A의 비트를 B만큼 오른쪽에서 왼쪽 이동한다.
예) A가 비트가 0001 경우  A << 3 일경우 A의 비트는 0001 에서 1000으로 된다.
비트가 오른쪽에서 왼쪽으로 1칸씩 이동 할 때 "X2^이동칸수" 이다. 
>> Shift 연산이라 한다. A >> B 일경우 A의 비트를 B만큼 왼쪽에서 오른쪽 이동한다.
예) A가 비트가 1000 경우  A >> 3 일경우 A의 비트는 1000 에서 0001으로 된다.
비트가 왼쪽에서 오른쪽으로 1칸씩 이동 할 때 "÷2^이동칸수" 이다. 
복합연산자2 복합연산자
>>= >>= 왼쪽 데이터를 오른쪽 데이터 크기 만큼 왼쪽에서 오른쪽으로 시프트연산을 한 후 왼쪽 변수에 저장한다.
<<= <<= 왼쪽 데이터를 오른쪽 데이터 크기 만큼 오른쪽에서 왼쪽으로 시프트 연산을 한 후 왼쪽 변수에 저장한다.
&= &= 왼쪽 데이터와 오른쪽 데이터와 AND 연산을 한 후 왼쪽 변수에 저장한다.
^= ^= 왼쪽 데이터와 오른쪽 데이터와 XOR 연산을 한 후 왼쪽 변수에 저장한다.
|= |= 왼쪽 데이터와 오른쪽 데이터와 OR 연산을 한 후 왼쪽 변수에 저장한다.