scanf() 함수, 진법 변환, 산술연산자와 변수 메모리 이해


\ \\C언어에서 입력 함수 scanf의 원리와 사용법, 2진수·8진수·10진수·16진수 등 다양한 진법 변환 방법, 산술 연산자(+ - * / %), 그리고 변수와 메모리의 관계를 집중적으로 다룬다. 각 개념을 실제 코드와 예시, 그리고 메모리와 데이터 흐름 관점에서 쉽게 설명한다.

1. 진법 변환의 원리와 방법

  • 컴퓨터는 2진수(0, 1)로 데이터를 처리하지만, 사람이 보기 쉽도록 8진수, 10진수, 16진수로도 표현한다.
  • 10진수를 2진수로 변환할 때는 정수는 2로 나누기, 소수는 2를 곱하기 방법을 쓴다.
  • 2진수와 8진수, 16진수는 각각 3자리, 4자리씩 묶어서 변환할 수 있다.
진법 범위 변환 특징 C언어 서식문자
2진수 0, 1 컴퓨터 내부 데이터 표현 -
8진수 0~7 2진수 3자리씩 묶음 %o (소문자 o)
10진수 0~9 사람이 주로 사용하는 진법 %d
16진수 0~9, A~F 2진수 4자리씩 묶음, 10~15는 A~F로 표기 %x, %X
  • 8진수는 %o, 16진수는 %x(소문자), %X(대문자)로 출력한다. 대문자 O는 사용하지 않는다.
  • 16진수 리터럴은 0xA4D처럼 0x를 앞에 붙인다.

2. scanf 함수와 입력 처리

  • scanf 함수는 키보드로부터 데이터를 입력받아 변수에 저장한다.
  • 입력받을 변수 앞에는 &(주소 연산자)를 반드시 붙여야 한다. 예: scanf("%d", &n);
  • 입력받은 값은 변수의 메모리 공간에 저장된다.
int n;
printf("숫자를 입력하세요.\n");
scanf("%d", &n);
printf("입력한 숫자는 '%d'입니다.\n", n);
  • 주소(&n)와 값(n)의 차이를 이해해야 한다. &n은 변수의 메모리 주소, n은 변수에 저장된 값이다.
  • 주소를 %x, %X로 출력하면 변수의 실제 메모리 주소가 16진수로 출력된다.

3. 산술 연산자와 변수 연산

  • 산술 연산자는 +, -, *, /, % 등이 있다.
  • 정수형 변수끼리 나눗셈(/)을 하면 몫만 출력되고, 실수 결과를 원하면 double형으로 변환해야 한다.
  • % 연산자는 나머지를 구하는 연산자다.
  • a += b, a -= b, a *= b, a /= b 등 복합 대입 연산자도 자주 사용된다.
  • 증감 연산자 ++a, a++는 위치에 따라 동작 시점이 다르다(전위/후위).
연산자 설명 예시 결과
+ 덧셈 a+b 13 (a=10, b=3)
- 뺄셈 a-b 7
* 곱셈 a*b 30
/ 나눗셈(몫) a/b 3 (정수 나눗셈)
% 나머지 a%b 1
  • 실수 결과가 필요하면 double형 변수를 사용하고, 나눗셈 연산도 double로 해야 한다.
  • printf에서 %5.2f처럼 소수점 이하 자리수와 전체 자리수를 지정할 수 있다.

4. 변수, 메모리, 주소의 관계

  • 변수 선언은 메모리 공간을 확보하는 과정이다.
  • 변수의 값은 메모리 주소에 저장되고, &변수명은 그 주소를 의미한다.
  • 입력, 출력, 연산 등 모든 과정에서 변수와 메모리, 주소의 관계를 명확히 이해하는 것이 중요하다.

5. 주요 용어 정리

  • scanf: 키보드 입력 함수, &변수명으로 주소를 전달
  • 진법 변환: 2, 8, 10, 16진수 상호 변환
  • 산술 연산자: +, -, *, /, % 등 기본 연산자
  • 복합 대입 연산자: +=, -=, *=, /= 등
  • 증감 연산자: ++, -- (전위/후위)
  • 메모리 주소: 변수의 실제 저장 위치, &로 참조

정리

scanf 함수와 진법 변환, 산술 연산자, 변수와 메모리의 원리를 익히면 C언어에서 입력/출력/연산/저장 등 프로그램의 기본 흐름을 정확히 이해할 수 있다. 각 연산자와 서식문자, 주소와 값의 차이, 진법 변환 원리를 반복 실습하며 자연스럽게 익혀두는 것이 중요하다.
728x90

'C++' 카테고리의 다른 글

[C++] printf() 함수  (0) 2025.05.02
C++의 프로그램 구조  (0) 2025.05.01