declaration : 선언, 기계어로 번역되지 않는다. 즉, 컴파일러에게 정보만 준다.(실행 코드의 크기가 변하지 않는다)
definition : 정의, 기계어로 반영된다. 즉, 실행코드에 반영된다.
ex1)
int x; // int라는 keyword는 정수형 변수를 선언할 때 사용된다고 선언되어 있다.
int x = 10; // x에 정수 10을 넣는다는 정의를 한다.
ex2)
main은 ANSI에 따르면 return값이 int, 정수이다.
int add(int a, int b){
return a+b;
}
int main(void){
int a,b;
int c;
c=add(a,b);
}
함수는 definition이다. 기능을 정의하기 때문.
int main(void){
int a,b;
int c;
c=add(a,b);
}
int add(int a, int b){
return a+b;
}
이렇게 되면 add라는 함수의 정의를 찾을 수 없어서 error가 뜬다.
따라서 미리 declare를 하고 define을 나중에 한다.
int add(int, int);
int main(void){
int a,b;
int c;
c=add(a,b);
}
int add(int a, int b){
return a+b;
}
입출력에 관한 declation들이 들어있는 것이 stdio.h이다.
#include <stdio.h>
#이 붙는 이유는 전처리(코드가 실행되기 전) 때 수행하는 것이기 때문. #include <파일명>에서 파일을 복사 붙여넣기로 그 자리에 붙여넣는다고 생각하면 편하다.
1byte를 가져올 때 4byte보다 더 시간이 오래 걸린다. 기본으로 4byte를 가져오는데 그 중 3byte를 빼는 연산을 또 거치기 때문. 따라서 정수를 사용할 수 있을 때에는 character보다는 integer을 사용하는 것이 바람직하다.
음수를 표현할 때 2의 보수로 표현한다. 이것은 1의 보수에 1을 더해서 만들 수 있다.
Floating Point : sign of significand, biased exponent(8 bits), significand(23 bits)