** 공결 시 이메일 대신 출력하고 들고 가기 **
scanf() 함수는 첫 번째 인자로 String형이 들어가고, 두 번째 인자로는 주소를 준다.
data type: (p.110)
suffix(p.119) : 420이 있다고 했을 때, 일반 int인지, unsigned인지, long인지 구분할 수 없다. 따라서 이를 쉽게 구분하기 위해 420U, 420UL, 420L과 같이 suffix를 작성해준다. suffix도 마찬가지로 컴파일러에게 declaration 하는 것이다. 만약 420U를 썼는데, unsigned int가 아니라면 type mismatching으로 오류가 난다.
suffix를 쓰는 이유 : 프로그램의 길이가 길어지면, 가독성이 떨어진다. 따라서 프로그램의 의도를 한번에 파악할 수 있게 하기 위해서 쓴다.
(p.120)
-3.14159가 floating constant라고 하면 엄밀히 말하면 틀린 것이다. : expression?
typedef (p.122) :
typedef char uppercase;
uppercase u;
위와 같이 코드를 작성하였을 때, uppercase도 결국 char이다.
typedef를 쓰는 이유는 복잡한 프로그램을 만들 때, 가독성을 위해서이다. int u라고 쓰는 것보다 uppercase u라고 쓰는 것이 용도를 확 와닿게 할 수 있다.
sizeof() : datatype의 크기를 확인할 수 있다.
conversions : (p.133) 계산 시 하나의 자료형으로 통일해서 처리한다. 다음이 그 표이다.
unsigned와 signed가 붙으면, unsigned가 이긴다.
unsigned와 long이 붙으면 모른다. (가급적 섞지 말자 또는 Casting 해서 계산한다.)
casts : 명시적 형변환
getchar() and putchar() : (p.124)
#define EOF -1;
더 이상 읽을 것이 없으면 -1을 리턴한다. getchar()과 putchar()을 기본 입출력이라고 한다.
#include <stdio.h>
int main(void){
int c;
while((c=getchar())!=EOF){
putchar(c);
putchar(c);
}
return 0;
}
Mathematical Functions(p.127) :
함수를 쓰지 말라는 것이 기본 원칙(함수 사용 지양)
리눅스에 libC.so.version (shared object)라는 C 라이브러리가 존재한다.
math library는 libm.so.~~
math library를 사용하기 위해서 gcc -lm 옵션을 붙여줘야 한다. (-lm : link math library)
16진수 알아두기 0x0000~0xffff
Flow of Control(p.148)
short-circuit evaluation : if문이 있을 때, 논리곱은 거짓일 가능성이 높은 것을 앞에 두고, 논리합은 참일 가능성이 높은 것을 앞에 둔다.
compound statement : if 문 뒤에 하나의 statement밖에 걸리지 않기 때문에, 여러 가지의 statement를 사용하기 위해서는 {}로 묶어준다. 이 compound는 자치구이기 때문에, 외부 변수와 내부 변수가 다르다. 이것을 활용하여 function을 만든다.