3장
변수와 연산자
- 변수 : 어떠한 데이터를 저장할 수 있는 메모리 공간에 붙여진 이름. 변경이 가능한 수
- 연산자 : ( + - * / %) 처럼 연산을 요구할 때 사용되는 기호
덧셈, 뺄셈, 곱셈, 나눗셈, 나눈 나머지
- 상수 : 변하지 않는 수
변수
- 정수형 변수 : char형, int형, long형
- 실수형 변수 : float형, double형
val 이라는 정수형 메모리 공간을 할당하고 그곳에 20 이란 값을 대입한 것.
변수를 선언 해놓고 아무것도 대입하지 않은 상태에는 쓰레기 값이 저장되어 있음.
보통 0으로 초기화
선언 후 대입연산이 이루어지고 있다. 또는 선언과 동시에 대입연산이 이루어지고 있다.
하지만 연산 후 선언을 하게 되면 컴파일 오류가 발생한다. 그러므로 보통 변수의 선언은
함수 내에서 제일 먼저 등장한다.
변수 선언 시 주의 사항
- 변수의 이름을 정할 때
1. 변수의 이름은 알파벳, 숫자, 언더바(_)로 구성된다.
2. C 언어는 대 소문자를 구분한다. 따라서 변수 Val 과 val 은 서로 다른 변수다.
3. 변수의 이름은 숫자로 시작할 수 없고, 키워드를 사용하는 것도 불가능 하다.
4. 공백이 포함 될 수 없다.
따라서 int 7th_val, int live_inthe#, int kor year 등은 변수로 적절하지 않다.
그리고 변수의 이름을 정할 때는 반드시 의미를 지니는 이름을 주려고 노력해야 한다.
연산자
- 연산자에는 대입 연산자, 산술 연산자, 증가 감소 연산자, 관계 연산자, 논리 연산자 등..
대입 연산자 (=) 와 산술 연산자 (+ - * / %)
기타 대입 연산자 ( += , -+ , *= , /= , %= ..)
자기 자신과 연산을 한 후 다시 자기 자신에게 대입.
증가, 감소 연산자 ( ++ , -- )
연산자 |
연산의 의미 |
++a |
값을 1 증가 후 연산을 진행 (선 증가, 후 연산) |
a++ |
연산을 진행한 후 값을 1 증가 (선 연산, 후 증가) |
--b |
값을 1 감소 후 연산을 진행 (선 증가, 후 연산) |
b-- |
연산을 진행한 후 값을 1 감소 (선 연산, 후 증가) |
관계 연산자 ( < , > , == , != , <= , >= ) 와 논리 연산자 ( && , || , ! )
연산자 |
연산자의 의미 |
< |
a<b a가 b보다 작은가? |
> |
a>b a가 b보다 큰가? |
== |
a==b a가 b와 같은가? |
!= |
a!=b a가 b와 같지 않은가? |
<= |
a<=b a가 b보다 작거나 같은가? |
>= |
a>=b a가 b보다 크거나 같은가? |
논리 연산자 |
|
&& |
피연산자가 모두 참이면 true를 반환 (and의 의미) 동시 만족 a && b |
|| |
피연산자중 하나라도 참이면 true를 반환 (or의 의미) 하나라도 만족 a || b |
! |
피연산자가 true면 false를, false면 true를 반환 (not의 의미) 반대 !a |
그 밖에 비트 연산자 ~, &, ^, |, <<, >> 등이 있지만 학교에서 잘 안다루므로 넘어가겠음.
연산자들은 우선순위가 있는데 (), [], ->, . 같은 연산자들이 1순위
그 다음 sizeof, &, ++, ==, ~, ! 그리고 * / % 다음 + - 그 밖에 여러 가지가 있는데
괄호계산 먼저 그담에 곱셈 나눗셈 그리고 그담에 덧셈 뺄셈 순이라고 보면 됨.
나머진 책 참조.
컴퓨터는 연산의 결과가 참일 경우 1을 반환, 거짓일 경우 0을 반환 함.
scanf 함수를 이용하여 데이터 입력 받기
10진수의 정수형 데이터를 하나 입력 받아서
val 이라는 변수에 저장하는 것이다.
참고로 scanf 함수에 의해 저장되는 변수의
앞에는 항상 & 이 붙어야 한다는 것을 명심 하셈
또, scanf 함수는 데이터의 경계를 공백으로 구분함
scanf 함수 예시
그리고 이렇게 써도 됩니다.
4, 5장
데이터 표현 방식의 이해
2진수? 8진수? 16진수?
- 2진수 : 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001 ...
- 8진수 : 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12 ...
- 16진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, 12 ...
비트(bit)와 바이트(byte)
비트 : 데이터 표현 단위 중 가장 작은 단위
바이트 : 8비트를 1바이트로 표현
비트로 정수 표현하기 (2진수)
맨 왼쪽에 있는 비트는 부호를 결정하는 비트 이다. 0일 때는 양수, 1 일 때는 음수.
나머지 7비트를 가지고 데이터를 표현 한다.
예를 들어서 5는 0 0000101
그렇다면 -5는 어떻게 될까?? 맨 앞에 부호비트를 1로 바꾼다면 -5가 될까? 아니다.
1의 보수와 2의 보수라는게 있는데 1의 보수는 0을 1로, 1을 0으로 모두 바꿔주면 된다.
양수 5를 음수 5로 바꾸고 싶다면 먼저 1의 보수를 구한 뒤 +1 만 해주면 된다.
그리고 1의 보수 + 1 을 2의 보수라고 부른다. (+5 의 2의 보수 = -5)
1 1111010 + 1 = 1 1111011
(+5) 1의 보수 (-5)
많이 쓰는 서식 문자
%d |
int (4byte) 10진수 정수 |
%c |
char (1byte) 단일 문자 |
%s |
char (1byte) 문자열 |
%f |
float (4byte) 10진수 실수 |
%lf |
double (8byte) 10진수 실수 |
sizeof 연산자를 이용한 자료형의 크기 확인
- sizeof 연산자는 단항 연산자로서 피연산자의 메모리 크기를 반환한다.
char (1byte) < int (4byte) <= float (4byte) < double (8byte)
여기까지 이론적인 내용이 많아서 지루 했을지도 모르겠는데..
하지만 꼭 필요한 내용이기에 써 둔거니까 여러 번 읽어보고 연습해보고
다음부터 다시 프로그램 짜는 거 위주로 넘어가겠음
그럼 끝 ~
'학습공간 > C, 프로그래밍기초' 카테고리의 다른 글
[6주차] 1차원 배열, 포인터의 이해 (0) | 2019.11.26 |
---|---|
[5주차] 함수의 정의와 선언 그리고 호출, 지역변수 & 전역변수, 재귀함수의 호출 (0) | 2019.11.26 |
[4주차] 흐름의 분기 if else문과 continue, break문, switch문 (0) | 2019.11.26 |
[3주차] prinf 함수 scanf 함수 조금 깊게, 반복문 (0) | 2019.11.26 |
[1주차] C언어와 프로그램의 기본 구성 (0) | 2019.11.26 |