1. 예정 ¶
- 이번에도 아마 2시간 강의
- 자료형, 변수, 상수
- 변수
- 변수 선언
- 초기화
- 변수 이름 규칙
- const 키워드
- 저장 클래스 - static, ...
- 변수 선언
- 자료형
- 정수 자료형 : int, char, long, ...
- 실수 자료형 : float, double, ...
- 부동 소수점 실수
- C에서의 논리값
- 정수 자료형 : int, char, long, ...
- 자료형 변환 규칙
- 묵시적 형 변환
- 명시적 형 변환 : 정보 손실
- 묵시적 형 변환
- 상수
- 정수형 상수 : 10진수 8진수, 16진수
- 문자 상수
- Escape Sequence
- 문자열
- 정수형 상수 : 10진수 8진수, 16진수
- 변수
------------1시간-------------
- 연산자
- 산술 연산자
- +, -, *, /
- % : 나머지 연산자
- +, -, *, /
- 비교 연산자
- <, >, >=, <=, ==, !=
- <, >, >=, <=, ==, !=
- 논리 연산자
- C에서의 논리값 : 다시
- && : AND 연산자
|| : OR 연산자
- ! : NOT 연산자
- C에서의 논리값 : 다시
- 대입 연산자
- 연속된 대입 연산자
- 복합 대입 연산자
- 연속된 대입 연산자
- 비트 연산자
- 비트 논리 연산자 : &, |, ~, ^
- 시프트 연산자 : <<, >>
- 비트 논리 연산자 : &, |, ~, ^
- 그 외
- sizeof()
- 형 변환 연산자
- 삼항 조건 연산자
- ,는 연산자
- sizeof()
- 연산자 우선 순위 / 결합 순서
- 산술 연산자
------------2시간-------------
2. 진행 ¶
변수(variable)-변할 수 있는 수.
변수 선언 방법
int a; 이때 a가 이름(식별자) 숫자 자체가 변수이름이 될수 없다. 그러나 '_'등 쓸수 있다. 대 소문자도 구별됨.
변수생성 시 변수값에 뭐가 들어있는지 알수 없다.
float pi=3.14;로 쓰면 pi값이 바뀔수 있음 ---> const float pi=3.14;로 쓰면 pi값을 바꿀 수 없음.
변수의 생존기간나 사용범위 지정하는 것들
automatic, static
automatic 변수 - 함수 호출후 그 함수에서 그 변수가 사라짐.
but static 변수- 함수 호출후도 사라지지 않음. -------> 함수의 호출횟수 구할때 사용가능.
extern 변수 - 다른 파일에 있는 변수를 가져올 수 있음.
prinitive type
integer(정수) real(실수) 두개로 나뉨
integer char(1byte)>문자로 알고 있는데 실제는 이것도 정수임.
변수 선언 방법
int a; 이때 a가 이름(식별자) 숫자 자체가 변수이름이 될수 없다. 그러나 '_'등 쓸수 있다. 대 소문자도 구별됨.
변수생성 시 변수값에 뭐가 들어있는지 알수 없다.
float pi=3.14;로 쓰면 pi값이 바뀔수 있음 ---> const float pi=3.14;로 쓰면 pi값을 바꿀 수 없음.
변수의 생존기간나 사용범위 지정하는 것들
automatic, static
automatic 변수 - 함수 호출후 그 함수에서 그 변수가 사라짐.
but static 변수- 함수 호출후도 사라지지 않음. -------> 함수의 호출횟수 구할때 사용가능.
extern 변수 - 다른 파일에 있는 변수를 가져올 수 있음.
prinitive type
integer(정수) real(실수) 두개로 나뉨
integer
int
long (int)
long long int
short (int)
integer에는 signed unsigned 모두 존재.long (int)
long long int
short (int)
char -1byte. int- 보통은 4byte 이나 운영체제 등에 따라 달라지기 때문에 확실히 정해져있지 않음.
signed vs unsigned cf> 1의 보수의 문제점 - ...
byte = n일때
unsigned의 표현가능 범위 : 0~2^n-1(맞는지 모름.......)
singed의 표현가능 범위 : -2^(n-1)~2^n-1
short int : 2byte.
int long long long int short 모두 각각 singed unsigned가 있음.
보통 int로 쓰면 (signed)int를 의미.
cf)ASCII-아스키코드
*real
float-4byte
double- 8byte.
long double
floating point
소수의 표현 가능 범위 & 소수 표현 원리 , 실수부 ...
c에서 0이면 거짓 0이 아닌 값은 모두 참. ex 8, 7, 9 등
int a=7 일때나 a=-1일때도 if(a)가 돌아감.
if(a=b)---다시 설명 부탁....
c언어에서는 if()에서 ()안에 논리값이 안들어가도 됨. ex) a=7을 넣어도 돌아가고 a=b를 넣어도 돌아감 단 a=b=0이 아니어야한다. ()안에 0만 안들어가면 됨.
묵시적vs명시적
묵시적 ex
float b
int a = (int)b+1;
규칙들-작은걸 큰걸로(단 정수보다 실수가 더 크다 아마 예외는 없다).
명시적
조심해야 할 것 - 값이 중간에 잘릴 수 있음.
float a=3.13284237L붙이면 long double됨.
'\n'
'\t'
'\b'-backspace
'\\'
'\''
'\'''
'\a' 경고음.
'\0'-NULL
"Hello""world!"--->"Helloworld!"
문자열 arr100="\"Hello world!\""
operator : 연산자
산술연산자 : +-*/%
int/int Q
float/float float
비교연산자 : >, <, >=, <=, ==, !=
cf> 3=3.0했을때 오류날수 있음 그래서 변환을 해줘야 (int)3.0 이렇게
논리연산자 && || ! a<b || 함수 -----> a
대입연산자 =, +=, -=, *=, /=, %=
비트연산자 int float가 비트로 이루어져 있는데 그 비트 하나하나에 대해서 계산을 함.
& | ^(exclusive or) ~(단항연산자) << >>
10111111
00000001
10111111 --- |로 계산시 나오는 값. --&로 계산시 00000001 ----^로 계산시 나오는 값- 10111110
~11111111--> 0000000000000001
10111111 ---
00000001일때 3<<해줄 경우 00001000으로 됨. >>는 왼쪽으로, << 이용시 주의해야 할 점 --- signed의 경우 맨앞자리 1을 당겨와서 맨앞이 0으로 되면 부호가 변함.
sizeof(int) int의 크기를 알려줌.
삼항연산자는 오직 하나뿐. a? b:c이런 경우 ---코드를 짧게 쓰기 위해 이것을 이용
3>4? b:c 일 경우 c실행.
a+b*c;
우선 순위
산술 비교 논리 대입 순.
단항> 다항
++ --( 후위)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
++ --(전위) !, ~, + -(단항)
sizeof(), (type), &, *
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
/ * %
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
+ -
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<< >>
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<=, >=
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
== !=
ㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(logic)
위에까지가 기본적인 우선순위.
AND>XOR>OR.
비트연산 먼저 그다음 논리 연산.