본문 바로가기

C31

Q&A (들여쓰기 방식, switch 문 작성 방식) 📌 제 컴파일러는 == 대신 =를 써도 경고 메세지를 출력하지 않던데, 컴파일러가 이런 점을 강제로 경고로 알려주게 만들 수 있나요?- 대부분의 컴파일러는 = 연산자를 if문에서 잘못 사용한 경우를 잡아줌.  ex) GCC 컴파일러는 -Wparentheses 기능 or -Wall(모든 경고 메시지 표시) 기능으로 위 경우를 잡아줌.- GCC를 사용할 때, 의도적으로 = 연산자를 써준 경우 괄호를 두 번 해주면 경고 메시지가 뜨지 않게 해줄 수 있음.if ((i = j)) …  📌 C언어 책들마다 복합문에서 들여쓰기하는 방식이 다르던데, 어떤 방식이 제일 좋은 방식인가요?The New Hacker's Dictionary에 의하면 크게 네 가지 들여쓰기 및 중괄호 표기법이 있음.① K&R 방식 : 왼쪽 .. 2024. 9. 5.
[5-3] switch문 - C언어에는 계단식 if문 대신 switch문을 사용할 수 있음.// 1if (grade == 4) { printf("훌륭해요!")} else if (grade == 3) { printf("좋아요!");} else if (grade == 2) { printf("평균이네요!");} else if (grade == 1) { printf("좋지 않아요!");} else if (grade == 0) { printf("좀 더 노력하세요!");} else { printf("잘못된 학점입니다");}// 2switch (grade) {case 4: printf("훌륭해요!") break;case 3: printf("좋아요!"); break;case 2: pr.. 2024. 9. 5.
[5-2] if문 if문은 프로그램이 표현식의 값을 사용해 2가지 선택지 중 하나를 고르게 만듦. if ( expression ) statement표현식을 감싸고 있는 괄호는 필수임.표현식의 값이 참이면(0이 아니라면), 괄호 뒤의 구문이 실행됨. 📌 복합문- if문이 여러 구문을 제어하게 만들고 싶을 때 사용하는 구문 복합문이 if 문에 사용될 때 ex)if (line_num == MAX_LINES) { line_num = 0; page_num++;} - 구조상 구문 1개만 사용해야하지만, 실제로는 여러 구문이 필요할 때 자주 사용됨.  📌 else 절- if문은 else문을 포함할 수 있음.if (i > j) max = i;else max = j; - if문 중복도 가능함.if (i >.. 2024. 9. 5.
[5-1] 논리표현식 - if처럼 C언어의 몇 가지 구문들은 표현식의 값이 '참'인지, '거짓'인지 반드시 확인해야 함.  ex) if문이 i - 많은 프로그래밍 언어에서 i  📌 관계 연산자- 표는 수학에서 사용되는 , ≤, ≥와 기본적으로 동일하지만, 결과값으로 1 or 0이 나옴.  📌 동등 연산자- 관계 연산자는 다른 프로그래밍 언어에서 흔히 사용하는 기호를 그대로 사용하지만, 동등 연산자는 좀 특수한 기호를 사용함.- 관계 연산자처럼 좌향결합적이며, 결과값으로 0 또는 1을 냄. 다만, 관계 연산자보다 평가 순서가 낮음.i 두 개는 같음.  📌 논리 연산자- 논리연산자는 and, or, not으로 구성됨.- ! 연산자는 단항, &&아 ||는 이항임.- 결과값으로 0 또는 1을 반환함.- 피연산자들은 주로 0이나.. 2024. 9. 4.
Q&A (pow, fmod, 연산자) 📌 C언어는 지수연산자가 없던데, 그러면 제곱 연산을 할 수 있죠? - 정수를 작은 양의 정수만큼 제곱하는 건 그만큼 곱해주면 됨. (i 세제곱은 i * i * i)- 정수가 아닌 숫자만큼 제곱할 거면, pow 함수가 필요함.   *pow() 함수는 y의 거듭제곱에 대한 x의 값을 계산#include double pow(double x, double y);  📌 % 연산자를 고정소수 피연산자에도 적용하고 싶은데 컴파일이 안되네요. 어떻게 해야하죠? - % 연산자는 정수 피연산자를 필요로 함. fmod를 써보는 건 어떨까?   *fmod() 함수는 x/y의 부동 소수점 나머지를 연산함. 결과의 절대값은 항상 y의 절대값보다 작고, 결과는 x와 같은 부호를 가짐.#include double fmod(do.. 2024. 9. 3.
[4-5] 표현문 C에서 모든 표현식은 구문으로 사용될 수 있는 특이한 규칙이 있음. (모든 표현식에 세미콜론;을 추가해 구문으로 만들어줄 수 있음) 예시) 표현식 ++i에 세미콜론을 더해 구문으로 바꿔주기++i;  [!!!] 코딩하다가 손가락 잘못 놀리면 "아무 의미 없는" 표현문expression statement이 만들어진다. 예를 들어 i = j; 라고 작성하지 않고 실수로 i + j; 라고 작성할 수도 있다. 이러한 실수는 생각보다 자주 발생한다. =와 +가 같은 키보드 키이기 때문에 발생하는 실수다. 몇몇 컴파일러는 무의미한 표현문을 감지할 수 있다. "무의미한 구문statement with no effect"이라고 적힌 에러를 발생시킨다.   💡 본 내용은 K.N.King의 C Programming: A M.. 2024. 9. 3.