본문 바로가기

분류 전체보기75

[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.
[4-4] 표현식 평가 a = b += c++ - d + --e / -f 이 표현식은 괄호가 없어 가독성이 상당히 떨어짐. 표 4-2를 이용해, 이 표현식에 괄호를 붙여보자. // 1. 후위에 괄호a = b += (c++) - d + --e / -f// 2. 전위, 단항음수연산자에 괄호a = b += (c++) - d + (--e) / (-f)// 3. 나눗셈에 괄호a = b += (c++) - d + ((--e) / (-f))// 4. 뺄셈, 덧셈에 괄호a = b += ((c++) - d) + ((--e) / (-f))a = b += (((c++) - d) + ((--e) / (-f)))// 5. 할당에 괄호a = (b += (((c++) - d) + ((--e) / (-f))))(a = (b += (((c++) - d) +.. 2024. 9. 3.
[4-3] 증감연산자 - 변수에 가해지는 가장 흔한 2가지 연산은 1을 더하는 '증가', 1을 빼는 '감소' 연산임.- 증가연산자 : ++- 감소연산자 : --❗ 전위, 후위 무엇을 쓰냐 까다로움.❗ 피연산자의 값을 바꿈. (i = 1이고, ++i를 출력하면 i의 값이 2로 바뀌는 경우) ++i : 당장 증가해i++ : 지금은 원래 값을 쓰고, 나중에 증가해 i = 1;printf("i의 값은 %d\n", --i); /* "i의 값은 0"를 출력한다. */printf("i의 값은 %d\n", i); /* "i의 값은 0"를 출력한다. */ i = 1;printf("i의 값은 %d\n", i--); /* "i의 값은 1"를 출력한다. */printf("i의 값은 %d\n", i); /* "i의 값은.. 2024. 9. 3.
[4-2] 할당연산자 - 표현식의 값이 계산된 다음엔, 그 값을 변수에 저장해서 나중에 사용해야 함.- C언어에서 단순할당을 해주는 = 연산자가 여기 사용됨.- 이미 변수에 저장된 값을 바꾸는 데에는 복합할당연산자를 사용하면 됨. 📌 단순할당- v = e는 표현식 e를 처리하고, 그 값을 복사해 v에 저장한다는 의미.  *e는 상수, 변수, 혹은 복잡한 표현식이 될 수 있음.i = 5; /* i의 값은 5이다 */j = i; /* j의 값은 5이다 */k = 10 * i + j; /* k의 값은 55이다 */ - 만약 v와 e가 같은 형이 아니라면, 할당되는 순간 e의 값은 v의 형에 맞게 변환됨.int i;float f;i = 72.99f; /* i의 값은 72이다 .. 2024. 9. 3.
[4-1] 산술연산자 - 산술연산자 : 덧셈, 뺄셈, 곱셈, 나눗셈 등을 하는 연산자 - 덧셈류, 곱셈류 연산자들은 2개의 피연산자를 필요로하기 때문에, 이항이라고 불림.- '단항 연산자'라는 표현은 어떤 상수가 양수임을 강조하기 위해 사용됨.- 표 4.1에서 나오는 이항 연산자 중, %를 제외하면 정수와 실수형 피연산자 둘 다 허용하고, 섞어서 사용하는 것 또한 허용함. (만약 int, float형 피연산자가 동시에 사용되었다면 결과는 float형으로 나올 것) - / 연산자, % 연산자는 특수하게 다뤄줘야 함./ 연산자는 예상하지 못한 결과를 생성할 수도 있다. 만약 피연산자가 둘 다 정수라면, / 연산자는 소수점 부분을 삭제함으로서 결과값을 줄여 정수로 만든다. 즉, 1 / 2의 값은 0.5가 아니라 0이 나온다.% 연.. 2024. 9. 3.
Q&A 📌 %i변환이 정수를 입출력받을 때 사용되던 걸 봤는데, %d랑 뭐가 다르죠?- printf의 서식문자열에서는 큰 차이가 없는데, scanf에서는 차이가 있음. - %d는 오로지 10진수 정수만 입력받을 수 있고, %i는 10진수, 8진수, 16진수 모두 인식 가능.   (입력값이 0으로 시작하면 8진수 취급, 0x or 0X로 시작하면 16진수로 취급)  📌 printf가 %을 변환규격의 시작으로 인식한다면, %는 어떻게 출력하죠?- % 두 개를 연이어서 쓰면 됨. (%%)  📌 \t 확장비트열을 printf에서 사용되면 다음 탭으로 넘어가게 되는데요, 탭 하나에 빈 칸이 몇 개인가요?- 알 수 없음. OS에 따라 결정됨. 주로 8칸인데, 전부 그런 건 아님.  📌 scanf이 숫자를 읽어야할 .. 2024. 9. 2.