프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -

Slides:



Advertisements
Similar presentations
03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
Advertisements

기본 자료형 순천향대학교 정보기술공학부 이 상 정. 자료형의 선언 컴퓨터프로그래밍 1 순천향대학교 정보기술공학부 이 상 정 3 자료형 선언 기본 자료형문자형 char 정수형 int 실수형 float double 형없음 void.
제 3 장 변수와 자료형.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 1장 C 언어의 소개.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
4장: 자료형과 수식.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
제 18 강 데이터 타입 타입, 변환, 캐스팅 shcho.pe.kr.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
변수와 자료형.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
제15장 전처리 및 비트연산.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
변수와 자료형.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
내용 프로그래밍 언어(programming language) C 언어란?? C 언어 역사 C 언어 특징 C 프로그램의 구조
제 2 장 변수와 상수.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
adopted from KNK C Programming : A Modern Approach
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
제2장 데이터형과 표준 입출력문 문봉근.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
Chapter 04 자료 유형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제7장 반복문이란 무엇인가.
-Part1- 제6장 자료형이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
printf("Global Korea\n");
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
개정판 누구나 즐기는 C언어 콘서트 제12장 파일 입출력 출처: pixabay.
배열, 포인터, 함수 Review & 과제 1, 2.
Presentation transcript:

프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) - 숭실대학교 컴퓨터학부 2007년 1학기 김완섭 wskim92@mining.ssu.ac.kr

지난 수업 복습 C언어에서의 데이터형의 종류 문자가 입력되는 방식 정수가 입력되는 방식 질문 문자 : char, unsigned char, signed char 정수 : int, short int, long int … (unsigned , signed) 실수 : float, double, long double 문자가 입력되는 방식 정수가 입력되는 방식 양수와 음수의 표현 방식 ex) 5, -5 질문 C언어에서 기본 자료형을 가지고 표현할 수 있는 가장 큰 정수형 값의 크기는 얼마인가? 그렇다면, 이 값보다 더 큰 값을 표현해야 할 경우는 어떻게 해야하는가?

큰 정수를 표현하는 방법 (약 20억보다 큰 수) 방법1 : unsigned long 데이터형을 사용. 방법2 : Long(4Byte)보다 더 큰 저장공간을 사용한다. 그러나 ANSI-C에는 그러한 자료형이 없다. ISO C99 Spec에서는 추가적인 데이터형을 정의하고 있다. (llong) 컴파일러에 따라 그러한 자료형을 제공하고 있다. ( __int64 ) __int64 big1, big2, big3; big1=3000000000; big2=3000000000; big3=big1+big2; printf("%I64d %I64d %I64d", big1, big2, big3);

큰 정수를 표현하는 방법 (약 20억보다 큰 수) #define BIG 2000000000 main() { int sum1 = BIG + BIG; // singed int long sum2 = BIG + BIG; // signed long int unsigned long sum3 = BIG + BIG; printf(" sum1 = %d \n", sum1 ); printf(" sum2 = %d \n", sum2 ); printf(" sum3 = %u \n\n", sum3 ); // 부호없는 정수 (%u) }

큰 정수를 표현하는 방법 (약 40억보다 큰 수) #define BIG 2000000000 main() { int num1=BIG, num2=BIG, num3=BIG; int sum1 = num1 + num2 + num3; long sum2 = num1 + num2 + num3; __int64 sum3 = num1 + num2 + num3; __int64 sum4 = (__int64)num1+(__int64)num2 +(__int64)num3; printf(" num1 = %d \n", num1 ); printf(" num2 = %d \n\n", num2 ); printf(" sum1 = %d \n", sum1 ); printf(" sum2 = %d \n", sum2 ); printf(" sum3 = %I64d \n", sum3 ); printf(" sum4 = %I64d \n\n", sum4 ); }

3.5 보충 (접미사의 사용) 접미사의 사용 정수 상수에 그 형을 명시하기 위해서 접미사를 붙인다. 접미사를 붙이지 않으면 정수 상수의 형은 int, long int, unsinged long int 중 하나로 인식된다. 시스템은 이 세가지 중에서 그 정수 상수를 표현할 수 있는 첫번째 것을 선택하여 그 정수 상수의 형으로 사용한다. // 2바이트 워드 컴퓨터라고 가정한다. long int num1 = 100; // 100은 int로 인식된다. long int num2 = 32000; // 32000은 int로 인식된다. long int num3 = 33000; // 33000은 long int로 인식. long int num4 = 3000000000; // 30억, unsigned long int로 인식

3.5 보충 (접미사의 사용) : 추가예제 main() { float sum, average; printf(" 총합 : %8.2f \n", sum ); printf(" 평균 : %8.2f \n", average ); } main() { float sum, average; sum = 82 + 97 + 80; average = (82.0f + 97.0f + 80.0f) / 3.0f ; printf(" 총합 : %8.2f \n", sum ); printf(" 평균 : %8.2f \n", average ); }

3.5 보충 (접미사의 사용) 수식을 사용할 때 데이터 형이 일치하는 것을 권장. 그렇지 않으면 Warning이 발생하며 값이 손실이 가능. main() { int a, b ; a = 1.0 + 2.0 ; b = 3.0 / 2.0 ; printf(" a = %d \n" , a ); printf(" b = %d \n" , b ); }

실행 결과 Warning 발생 (09) int a, b ; (10) a = 1.0 + 2.0 ; (13) printf(“ a = %d \n”, a ); (14) printf(“ b = %d \n”, b ); 실행 결과 Warning 발생

3.6 부동형 (Floating Type) 부동형(?) = 실수 값 ANSI C는 세 가지 부동형을 제공한다. 실수 : Floating Point Number 쉽게 말하면 0.001 , 3.14159 같은 실수 값을 부동형이라고 한다. 정수를 부동형 상수로 표현할 때에는 소수점을 사용해야 함. 예를 들어, 1.0과 2.0은 double 형이지만 1, 2는 int 이다. ANSI C는 세 가지 부동형을 제공한다. 구분` 자료형 설명 실수 (3가지) float 실수 ( 부동형 ) double 정밀한 실수 ( 부동형 ) long double 더 정밀한 실수 (부동형)

3.6 부동형 (부동형 상수의 표기법) 부동형 상수(실수) 표기의 예 3.0 3.14159 123.456 314.159e-2F 잘못된 부동형 상수의 표기 예 3.0 3.14159 123.456 314.159e-2F 1.23456e+2 0e0 1.23456E+2F 1. 3.14,159 // 콤마 허용 안 됨.  1,234.567 314159 // 정수형으로 인식됨. .e0 // 실수 부분이 필요함. -3.14159 // 상수가 아니고 수식임.  3.14+1.0

3.6 부동형 (부동형 상수의 표기법) BNF에 따른 부동형(실수) 상수의 표현 구성 : 정수 부분, 소수점, 소수부분, 지수부분. floating_constant ::= f_constanct {f_suffix}opt f_constant ::= i_part . f_part e_part | i_part . f_part | i_part . | . f_part | . f_part e_part | i_part e_part i_part ::= integer_part ::= {digit}1+ f_part ::= fractional_part ::= {digit}1+ e_part ::= expoential_part ::= {e|E}1{+|-}opt{digit}1+ f_suffix ::= floating_suffix ::= f | F | l | L

3.6 부동형 (표현 가능한 범위: float) 참고 프로그램 (float 형의 표현 범위) main() { float num1 = 12345678901234567890.0; float num2 = 1.2345678901234567890; printf(" num1 = %f \n", num1 ); printf(" num2 = %f \n", num2 ); }

3.6 부동형 (표현 가능한 범위: double) 참고 프로그램 (double 형의 표현 범위) main() { double num1 = 12345678901234567890.0; double num2 = 1.2345678901234567890; printf(" num1 = %.20f \n", num1 ); printf(" num2 = %.20f \n", num2 ); }

3.6 부동형 (표현 가능한 범위) 기억 장소의 크기 (Byte) Float 의 표현 범위 (정밀도) float : 4 Byte double : 8 Byte long double : 8 byte 참고 : long과 long double은 크기가 같다. Float 의 표현 범위 (정밀도) 대략 유효자리 6자리이고, 범위는 10-38에서 10+38이다. Double의 표현 가능 범위 (정밀도) 대략 유효자리 15자리이고, 범위는 대략 10-308에서 10+308이다.

3.6 부동형 알아두어야 할 내용 (1) 모든 실수를 다 표현할 수는 없다. 프로그램 시 반올림의 영향, 비율 등을 고려하는 것이 필요하다. (1) 모든 실수를 다 표현할 수는 없다. (2) 정수 산술 연산과 달리 부동형 산술 연산은 정확하지 않다.

3.6 부동형 접미사의 사용 접미사를 아래와 같이 명시한다. 접미사를 사용하지 않으면 double 형으로 인식된다. 문제. 0을 10000번 더하면 어떻게 될까? 접미사 형 예제 f 또는 F float 3.7F l 또는 L long double 3.7L

예제 코드 접미사 사용의 필요성 int main(void) { float num1 = 3.14; printf(" %.20f \n %.20f \n %.20f \n ", num1, num2, num3); return 0; }

예제 코드 return 0; /* 접미사를 사용하는 코드 */ int main(void) { float num1 = 3.14; float num2 = 3.1415921234567890; // double로 인식 float num3 = 3.1415921234567890; // double로 인식 double num4 = 3.1415921234567890F; // 접미사 F, f 가능 double num5 = 3.1415921234567890L; // 접미사 L, l 가능 printf(" %.20f \n ", num1); printf(" %.20f \n ", num2); printf(" %.20f \n ", num3); printf(" %.20f \n ", num4); printf(" %.20f \n ", num5); return 0; }

3.7 typedef 의 사용 Typedef 기능 프로그래머가 형(type)과 식별자를 연관 지을 수 있게 한다. typedef char uppercase; typedef int INCHES, FEET; typedef unsigned long size_t; main() { uppercase u; INCHES length, width; u = ‘A’; length = 3; }

3.7 typedef 의 사용 typedef 를 사용하는 목적 (1) 긴 선언문을 축약하여 사용할 수 있다. (2) 사용 목적에 맞게 형 이름을 결정할 수 있다. typedef int height ; typedef unsigned long int bonus; height std1 = 175; bonus kim1 = 30000000;

3.8 sizeof 연산자 sizeof는 단항 연산자이다. sizeof는 객체를 저장하는데 필요한 Byte 수를 알려준다. main() { printf ( " char : %d \n" , sizeof(char) ) ; printf ( " short : %d \n" , sizeof(short) ) ; printf ( " int : %d \n" , sizeof(int) ) ; printf ( " long : %d \n" , sizeof(long) ) ; printf ( " unsinged : %d \n" , sizeof(unsigned ) ) ; printf ( " float : %d \n" , sizeof(float) ) ; printf ( " double : %d \n" , sizeof(double) ) ; printf ( " long double : %d \n" , sizeof(long double) ) ; }

3.8 sizeof 연산자 C언어에서 자료형을 위한 기억장소의 크기는 컴퓨터에 따라 다르지만 다음 조건은 항상 만족한다. sizeof(char) = 1 sizeof(short) <= sizeof(int) <= sizeof(long) sizeof(signed) = sizeof(unsigned) = sizeof(int) 마지막 박스의 내용 수정할 것.

3.9 getchar() 와 putchar()의 사용 Stdio.h 함수 안에 정의된 매크로이다. (함수가 아님) 함수와 같이 형식으로 사용할 수 있다. getchar() : 한 문자를 읽어들인다.  c = getchar(); putchar() : 한 문자를 출력한다.  putchar(c); main() { char c; printf(“알파벳 입력 : ”); c = getchar(); putchar(c); }

* 추가 * while 반복문 이해하기 while ( 조건 ) { 조건이 만족될 경우 실행되는 문장들 } void main(void) { int num; printf(“양의 정수를 입력하세요(종료 0) : ”); scanf(“%d”, &num); while( num != 0) printf(“%d를 입력했습니다.”, num); if( num%2 == 0 ) printf(“ 짝수입니다. \n”); else printf(“홀수입니다. \n”); }

* 추가 * if else 조건문 이해하기 while ( 조건 ) { 조건이 만족될 경우 실행되는 문장들 } main(void) { int age; printf(“당신의 나이를 입력하세요 : ”); scanf(“%d”, &age); if(age>=100) { printf(“당신이 입력한 수는 100보다 큽니다.\n”); printf(“제대로 입력하세요”); } else { printf(“당신의 나이는 %d이군요.\n”, age); printf(“10년 후에는 %d살입니다.\n”, age+10);

* 추가 * if else 조건문 이해하기 while ( 조건 ) { 조건이 만족될 경우 실행되는 문장들 } 논리 연산자 main(void) { int age; printf(“당신의 나이를 입력하세요 : ”); scanf(“%d”, &age); if(age>=100 || age<0) { printf(“나이를 잘못 입력하셨습니다.\n”); printf(“제대로 입력하세요”); } else { printf(“당신의 나이는 %d이군요.\n”, age); printf(“10년 후에는 %d살입니다.\n”, age+10); 논리 연산자 && : 그리고 || : 또는

3.9 getchar() 와 putchar()의 사용 #define EOF (-1) // end-of-file 의 약자이다. <stdio.h> int c; // int 형은 char 형을 대신하여 사용될 수 있다. P.126의 중간에 있는 문단을 읽어보자. Scanf()함수는 성공적으로 변환한 개수를 리턴한다. (엔터, quit 등 입력) #include <stdio.h> int main(void) { int c; while( (c=getchar()) != EOF ) { putchar(c); } return 0;

3.9 getchar() 와 putchar()의 사용 #include <stdio.h> int main(void) { int c; c = getchar(); while( c != EOF ) { putchar(c); } return 0; ABC[엔터]를 입력했을 때 어떻게 되겠는가?

3.9 getchar() 와 putchar()의 사용 #include <stdio.h> int main(void) { int c; while( (c=getchar() ) != EOF ) if( c>= 'a' && c<= 'z' ) putchar( c + 'A' - 'a'); else putchar(c); return 0; } If 조건문 : c >=‘a’ && c <= ‘z’ 의미 : 입력한 알파벳이 소문자인가? 즉, 소문자일때는 putchar(c + ‘A’ – ‘a’ ) 이 실행 대문자일때는 putchar(c) 가 실행된다.

3.10 수학 함수 C언어에서는 다양한 수학함수들을 사용할 수 있다. C언어에는 수학함수가 내장되어 있지 않다. math.h 라는 파일에 다양한 수학 함수들이 정의 되어 있다. 함수 설명 사용 예 sqrt() 루트 값 result = sqrt( 4 ); pow() 제곱 근 result = pow(2, 3); exp() 지수 곱 result = exp(1); log() 로그 함수 result = log(1); sin() 사인 함수 result = sin(0); cos() 코사인 함수 result = cos(0); tan() 탄젠트 함수 result = tan(0);

3.10 수학 함수 (함수 예제) #include <math.h> int main(void) { double num, result; num = 4; result = sqrt(num); printf(" root(4) = sqrt(4) = %.2f \n", result); result = pow(2,3); printf(" 2의 3승 = %.2f \n", result); return 0; }

3.10 수학 함수 (p.129 예제 프로그램 해석) #include <math.h> #include <stdio.h> int main(void) { double x; printf("\n%s", "The following will be computed :\n” "\n” " the square root of x \n” " x raised to the power x\n” "\n” );

3.10 수학 함수 (p.129 예제 프로그램 해석) while(1) { printf( “Input x : ”); if(scanf(“%lf”, &x) != 1) break; if( x>=0.0) printf(“\n%15s%22.15e\n%15s%22.15e\n %15s%22.15e\n\n”, “x = ”, x, “sqrt(x) = ”, sqrt(x), “pow(x, x) = “, pow(x, x)); else { printf(“\nSorry, your number must be nonnegative.\n”); break; } } printf(“\nBye!\n\n”); return 0; 3.10 수학 함수 (p.129 예제 프로그램 해석)

3.11 변환과 캐스트 산술 수식은 값과 형을 가짐 필요에 따라 수식을 구성하는 형들은 변환이 일어남 정수적 승격 signed/unsigned char, signed/unsigned short, 열거형, signed/unsigned int는 정수적 수식에 사용될 수 있음 이 수식에서 모든 형들은 int나 unsigned int로 변환됨 char c = ‘A’; Unsigned char uc = 10; short s = 20; // unsigned short int s = 20; 과 동일 int i = 100; // singed int i = 100과 동일 int result = c + s + i ; // 이 산술수식에서의 형변환은 ?

3.11 변환과 캐스트 산술 변환은 이항 연산자의 피연산자를 계산할 때 일어남 규칙 둘 중 하나가 long double 형이면, 다른 하나는 long double 형으로 변환 아니면, 둘 중 하나가 double 형이면, 다른 하나는 double 형으로 변환 아니면, 둘 중 하나가 float 형이면, 다른 하나는 float 형으로 변환 아니면, 정수적 승격이 일어나고, 다음 규칙 사용: 둘 중 하나가 unsigned long 형이면, 다른 하나는 unsigned long 형으로 변환 아니면, 둘 중 하나가 long 형이고 다른 하나가 unsigned 형이면, 다음 수행: 만일 long 형이 unsigned 형의 모든 값을 표현할 수 있다면, unsigned 형은 long 형으로 변환 아니면, 두 피연산자는 unsigned long 형으로 변환 아니면, 둘 중 하나가 long 형이면, 다른 하나는 long 형으로 변환 아니면, 둘 중 하나가 unsigned 형이면, 다른 하나는 unsigned 형으로 변환 아니면, 두 피연산자는 int 형을 가짐

3.11 변환과 캐스트 (추가) long double result; long double ld = 10000.0; 둘 중 하나가 long double 형이면, 다른 하나는 long double 형으로 변환 아니면, 둘 중 하나가 double 형이면, 다른 하나는 double 형으로 변환 아니면, 둘 중 하나가 float 형이면, 다른 하나는 float 형으로 변환 아니면, 정수적 승격이 일어나고, 다음 규칙 사용: long double result; long double ld = 10000.0; double d = 1000.0; float f = 100.0; int i = 10; char c = 5; result = ld + d + f + i + c; // 이 산술수식에서의 형변환은 ? result = d + f + i + c; // 이 산술수식에서의 형변환은 ? result = f + i + c; // 이 산술수식에서의 형변환은 ? result = i + c; // 이 산술수식에서의 형변환은 ?

3.11 변환과 캐스트 (추가) unsigned long result; unsigned long UL = 30억 ; 둘 중 하나가 unsigned long 형이면, 다른 하나는 unsigned long 형으로 변환 아니면, 둘 중 하나가 long 형이고 다른 하나가 unsigned 형이면, 다음 수행: 만일 long 형이 unsigned 형의 모든 값을 표현할 수 있다면, unsigned 형은 long 형으로 변환 아니면, 두 피연산자는 unsigned long 형으로 변환 아니면, 둘 중 하나가 long 형이면, 다른 하나는 long 형으로 변환 아니면, 둘 중 하나가 unsigned 형이면, 다른 하나는 unsigned 형으로 변환 아니면, 두 피연산자는 int 형을 가짐 unsigned long result; unsigned long UL = 30억 ; long L = 15억; // signed long unsigned UI1= 5억, UI2 = 22억; result = UL + L; // 이 산술수식에서의 형변환은 ? result = L + UI1; // 이 산술수식에서의 형변환은 ? result = L + UI2; // 이 산술수식에서의 형변환은 ?

3.11 변환과 캐스트 자동 변환 묵시적 변환 강압 승격 확대

3.11 변환과 캐스트 (자동변환 예제) 선언 수식 형 c - s / i u * 2.0 - i c + 3 c + 5.0 char c; short s; int i; long l; unsigned u; unsigned long ul; float f; double d; long double ld; 수식 형 c - s / i u * 2.0 - i c + 3 c + 5.0 d + s 2 * i / l int double long u * 7 - i f * 7 - i 7 * s * ul ld + c u - ul u - l unsigned float unsigned long long double system-dependent

3.11 변환과 캐스트 명시적인 변환 캐스트 예제 잘못된 캐스트 (double) i (long) ('A' + 1.0) x = (float) ((int) y + 1) (double) (x = 77) 잘못된 캐스트 (double) x = 77 /* equivalent to ((double) x) = 77, error */

3.12 16진 상수와 8진 상수 C 원시 코드에서 0으로 시작하는 양의 정수 상수는 8진 정수이고 0x 또는 0X로 시작하는 양의 정수 상수는 16진 정수임 예제 프로그램 int main(void) { printf("%d %x %o\n", 19, 19, 19); printf("%d %x %o\n", 0x1c, 0x1c, 0x1c); printf("%d %x %o\n", 017, 017, 017); printf("%d\n", 11 + 0x11 + 011); printf("%x\n", 2097151); printf("%d\n", 0x1FfFFf); return 0; }