본문 바로가기

C언어31

[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.
[3-2] scanf 함수 - printf가 특정 서식에 따라 출력하듯, scanf는 특정 서식에 따라 입력을 받음.- scanf에서 허용되는 변환들은 전부 printf에서 사용되는 변환들과 같음. int i;int j;float x;float y;scanf("%d%d%f%f", &i, &j, &x, &y);사용자 입력 : 1 -20 .3 -4.0e3scanf는 이 줄을 읽은 다음 각 문자들을 내포하고 있는 숫자로 변환한 다음 i, j, x, y에 각각 1, -20, .3, -4.0e3을 할당함.scanf를 호출할 때에 "%d%d%f%f"와 같이 "빽빽하게 채워진" 형식 문자열을 자주 사용하게 됨. (printf는 반면에 변환 규격들이 인접해있지 않는 경우가 많음) ❗ scanf는 자신도 모르게 실수할 때가 있기에 몇 가지 주의를.. 2024. 9. 2.