• 검색 결과가 없습니다.

변수, 타입, 정수, 실수

N/A
N/A
Protected

Academic year: 2023

Share "변수, 타입, 정수, 실수"

Copied!
14
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

변수, 타입, 정수, 실수

C 기초 특강

(2)

상수

상수(constant)

프로그램 헤더나 앞 부분에 존재

변수의 이름(식별자)와 같은 규칙을 따르지만, 일반적으로 대문자와 _로만 구성

프로그램 가독성을 높이고, 일관된 수정을 위해 사용

프로그램 중간에 갑자기 등장하는 임의의 숫자는 이해도를 떨어뜨림 -> 반드시 의미 있는 상수를 이용해야 함

Preprocessor가 해당 단어를 값으로 모두 대체하고 컴파일

프로그램 실행 중 값을 바꿀 수 없음

C 언어에서 문자 상수는 존재하지 않음 (C++에서는 존재)

‘a’는 정수(int) 값

문자열 상수

예: “hello, World!”

“a”와 ‘a’의 차이

#define MAX_FLOOR 100

(3)

변수

변수의 3 요소

이름(식별자), 주소, 공간 3요소로 구성

이름(식별자)

영문자 또는 밑줄이 반드시 나오고, 영문자, 숫자 또는 밑줄이 임의로 반복될 수 있음 (길이의 제한은 없으나 ANSI C의 경우 31개까지만 구별)

사용 가능 : k, abc, no_of_person, _sysid

불가능 : 3rd_person, #ofperson, abc-plus, 사람수

_로 시작하는 변수의 경우 시스템에서

특별한 목적으로 사용하는 경우가 많으므로 일반 프로그래머는 사용하지 않는 것이 바람직

일관된 규칙에 따라 작명하는 것이 바람직

예: noOfPerson, no_of_person

공간의 크기는 타입(char, int, long, float,

double, struct, union 등)에 따라 달라짐

변수(variable) 사용

변수의 선언과 초기화

lvalue와 rvalue

할당문(=) 왼쪽과 오른쪽에 위치할 때 의미가 다름

오른쪽의 경우 값의 의미

왼쪽의 경우 공간의 의미

전역변수나 static의 경우 0으로 초기화를 해주지만, 지역변수의 경우 자동으로 초기화해주지 않음 (프로그래머의 책임)

프로그램 실행 중 필요에 의해 값을 바꿀 수 있음

변수의 범위(scope)

int no_of_person ; no_of_guests = 100;

no_of_guests = no_of_guests + 1;

no_of_person

100

50000

4bytes

(4)

변수 관련 실험 (1)

실행 결과 예측

프로그램 작성 / 컴파일 / 실행

다양하게 프로그램 수정하면서 결과 확인

3번째 줄 문장을 19번째 줄로

옮기면 어떻게 되는가?

오류 메시지 확인

code(text) data stack

main f1

main main f1

(5)

변수 관련 실험 (2)

실행 결과 예측

프로그램 작성 / 컴파일 / 실행

다양하게 프로그램 수정하면서 결과 확인

오류 메시지 확인

(6)

정수 연산 (1)

 정수형 기본 연산

+, -, *

/와 %

프로그램 작성시 실수를

많이 하는 부분이므로

특히 주의

(7)

정수 연산 (2)

 배정문(assign)

=

+=, -=, *=, /=, %=

result = result + a;

result += a;

오른쪽에 있는

식(expr)을 계산하여

왼쪽 변수(공간)에 저장

연산자가 여러 개 있는 경우 우측부터 처리

a = b = c = 100;

(8)

정수 연산 (3)

증가연산자 (++)와 감소연산자 (--)

a = a + 1;

a++;

++a;

전위 연산자와 후위연산자의 차이

하나의 문장에서 변수당 최대 한번만 이용할 것 – 두 번 이상 사용하는 경우 기계마다 동일한 결과를 보장할 수 없음

연산자 우선순위 (부분)

( ), ++(후위), --(후위)

+(단항), -(단항), ++(전위), --(전위)

*, /, %

+, -

=, +=, -=, *=, /=

a = a + 1;

a += 1;

++a;

a++;

(9)

scanf 사용

printf와 유사하지만 입력을 위해

사용

& (주소 연산자)

scanf 함수에게 변환 문자와 변수의

주소를 넘겨주면서 사용자의 키보드 입력을 변환하여 변수에 저장하도록 요청

변환문자

c : 단일문자

d : 십진 정수

f : 부동 소수점 숫자(float)

lf 또는 LF : 부동 소수점 숫자 (double)

s : 문자열

scanf(“%d”, &no);

다양하게 프로그램 수정하면서 결과(오류) 확인

%d 앞 또는 뒤에 빈칸을 추가하는 경우 어떤 현상이 벌어지는가?

숫자 대신 문자를 입력하면 어떻게 되는가?

&를 빼먹은 경우는 ?

(10)

기본자료형

기본자료형 : 완전한 형태

char

signed char

unsigned char

signed short int

signed int

signed long int

unsigned short int

unsigned int

unsigned long int

float

double

long double

기본자료형 (일반)

char

signed char

unsigned char

short

int

long

unsigned short

unsigned

unsigned long

float

double

long double

정수 계열

실수 계열

char은 signed char 또는 unsigned char와 같음 (compiler 의 선택)

(11)

문자와 char 타입

C언어에서 ‘a’, ‘+’는 정수형

상수라는 점에 주의

char형 변수는 1byte 공간을

차지

ASCII 코드표 확인

특수문자와 표현방법 (부분)

경고(\a)

역슬래시 (\\)

백스페이스 (\b)

캐리지 리턴 (\r)

수직탭 (\v)

(12)

int 타입

int가 저장할 수 있는 값의

범위는 시스템에 종속적

4 Byte Word Computer

-231 : -2145483648 (약 -20억)

231 -1 : 2145483647 (약 +20억)

2 Byte Word Computer

-216 : -32768

216 -1 : 32767

반드시 시스템이 표현할 수 있는 값의 범위 확인

sizeof 이용

헤더 파일

Overflow

정수형 변수로 20억 +

20억을 하는 경우 결과값은 ?

signed 와 unsigned 차이

10진수, 8진수와 16진수

예: 70, 070, 0x70

실습

기본 자료형의 크기를 출력하는 프로그램 작성

자료형이 표현할 수 있는

값을 넘어서서 오류값을

보이는 프로그램 작성

(13)

변환과 캐스트

정수적 승격

일반적 산술 변환

정수형 + 실수형 -> 실수형으로 변환

피연산자 중 더 큰 타입으로 변환

배정문에서의 변환

Cast(캐스트)

(double) i

자동변환 예

char ch = ‘A’;

printf(“%c\n”, c);

int i;

double d;

i = 3.5;

d = i;

i = d;

char c;

short s;

int i;

long l;

unsigned u;

unsigned long ul;

float f;

double d;

long double ld;

c – s / i int u * 7 - i unsigned u * 2.0 - 1 double f * 7 - i float c + 3 int 7 * s *

ul

unsigned long c + 5.0 double ld + c long

double d + s double u - ul unsigned

long 2 * i / l long u - l system

dependent

(14)

과제

printf(scanf) 변환문자 정리

정수 출력 (십진수, 8진수, 16진수)

폭 설정(전체 자릿수, 소수점 아래 자릿수)과 정렬(왼쪽, 오른쪽)

온도 변환 프로그램

섭씨(C) 온도와 화씨(F) 온도는 다음 식의 관계를 가지고 있다.

F = 9/5 C + 32

C = 5/9 (F – 32)

섭씨 온도를 받아 화씨로 변환하는 프로그램 작성

화씨 온도를 받아 섭씨로 변환하는 프로그램 작성

삼각형의 면적 계산 프로그램

사용자로부터 밑변과 높이를 입력받아 삼각형의 면적을 구해서 출력하는 프로그램을 작성하시오.

원 둘레와 면적 계산 프로그램

사용자로부터 반지름을 입력 받아 원 둘레와 면적을 계산해서 출력하는 프로그램을 작성하시오.

예산 집행 프로그램

2014년 예산 총액은 309조 6천 925억이고, 그 중 40%를 1분기에, 25.4%를 2분기에, 21.3%를 3분기에, 나머지를

4분기에 집행할 예정이다. 각 분기별 집행할 예산 금액을 계산하여 표 형식으로 출력하라.

예산 총액, 분기별 집행 비율을 사용자로부터 입력받아 분기별 집행할 금액을 계산하여 표 형식으로 출력하라.

참조

관련 문서

● 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어로 사용자로부터 명령어를 입력받아 이를 처리하는 명령어 처리기 역할을 한다. 각

어떤 변수에 주소 연산자를 붙이면 그 변수 타입의 포인터가 반환됨!... 배열과 포인터 복잡한 배열과