본문 바로가기

전체 글

(12)
(08) C언어기초 - 함수 매개변수 평가 순서, 피연산자 평가 순서 표준에 따르면 함수 매개변수와 피연산자의 평가 순서는 명시되어있지 않다 사칙 연산에서 + - * /의 순서가 정해져 있듯이 C언어에서는 어떤 연산이나 행동이 먼저 실행될지 정해져있고 이를 연산자의 우선 순위라고 말한다 1 + 2 * 3은 *가 먼저 실행되고 (2 X 3) +가 그 다음 실행된다 1 + (6) 연산자에는 우선 순위가 정해져 있지만 함수 매개변수와 피연산자에서의 평가 순서는 정해져있지 않다 #include char f(void) { printf("f called\n"); return 'f'; } char g(void) { printf("g called\n"); return 'g'; } char h(void) { printf("h called\n"); return 'h'; } int main(..
(07) C언어기초 - 함수 선언, 정의 함수 접근 제어자가 없다 (public, private 등) c의 함수는 기본적으로 모두 전역(global) 함수이다 함수 오버로딩(overloading)은 없다 c에서는 함수 선언이 함수를 사용하기 전에 나와야 한다고 배웠다 하지만 아래 경우에는 컴파일 오류가 발생하지 않는다(?!) #include int main(void) { int x = foo(); getchar(); return 0; } int foo(void) { printf("foo called"); return 0; } 반대로 이 경우에는 컴파일 오류가 발생한다 #include int main(void) { foo(); getchar(); return 0; } void foo(void) { printf("foo called"); } 그 이..
(06) C언어기초 - 반복문 for 초기화 코드에 size_t i = 0 못쓴다 예시) for (size_t i = 0; i < 10; i++) { /* 오류!! 변수 선언은 항상 블럭 처음 시작할 때!! */ printf("%d\n", i); } while 조건식이 0이 아니면 모두 참으로 판단하지만 정확히 해주기 위해 (변수 != 0) 아니면 (변수 == 0) 처럼 명시해주자