2011. 10. 12. 20:04

"%[parameter][flags][width][.precision][length]type"

Parameter 

Character 

Description 

n$ 

파라미터 지정

This is a POSIX extension and not in C99.

Example: printf("%2$d %1$#x %1$d",16,17) produces "17 0x10 16"

 

Flags

Character 

Description 

+ 

양수 '+', 음수 '-' 기호 출력. (디폴트 : 아무것도 표시 안함)

- 

좌측 정렬

# 

8진수, 16진수 출력시 각각 0과 0x를, 실수의 경우 소수점 이하 0을 출력

' '공백

출력할 크기가 0보다 클 때 수의 앞에 빈 칸 하나 출력

0 

빈공간을 0으로 체움

 

Width

Character

Description 

* or N

폭 지정 (*와 같은 경우 숫자와 대응)

Example: printf("%*d", 5, 10) will result in " 10" being printed with a width of 5.

 

Precision

Character 

Description 

* or N

정밀도 지정 (*와 같은 경우 숫자와 대응)

정수의 경우-> 지정한 숫자보다 개수가 작을 경우 나머지 0으로 표시

실수의 경우-> 소수점 자리 수

문자열의 경우-> 지정한 개수만큼의 문자 표시

Example: printf("%.*s", 3, "abcdef") will result in "abc" being printed.

 

Length

Character 

Description 

h 

정수 자료형 감소 (int-> short)

hh 

정수 자료형 2번 감소 (int-> short-> char)

l 

정수 자료형 증가(int-> long)

ll 

정수 자료형 2번 증가(int-> long-> long long)

L 

실수 자료형 증가 (long -> long double)

z 

For integer types, causes printf to expect a size_t sized integer argument.

j 

For integer types, causes printf to expect a intmax_t sized integer argument.

t 

For integer types, causes printf to expect a ptrdiff_t sized integer argument.

 

Type

Character 

Type

Description 

d, i 

int 

부호 있는 10진수 정수

u 

unsigned int 

부호 없는 10진수 정수

o 

unsigned int 

부호 없는 8 진수 정수

x, X 

unsigned int 

부호 없는 16진수 정수

f, F 

double 

10진수 방식의 부동 소수점 실수

e, E 

double 

지수 형식으로 출력

g, G 

double 

%e와 %f 중 짧은 쪽, 소수점에 이어지는 0은 생략

c 

int 

값에 대응하는 문자

s 

char * 

문자열

p 

void * 

포인터 주소값

n 

int * 

포인터 주소값

% 

literal '%' 

리터럴 '%' 문자( 플래그, 폭, 정밀, 길이 허용 안함)

Posted by devanix
2011. 10. 7. 21:20

 

ASCII 코드는 미국에서 표준화한 데이터 처리 및 통신시스템 상호간의 정보교환용 표준 부호체계를 의미한다.

이 당시 문자(Character)를 표현 하는데 7bit를 1byte로 사용하였고,

이후 메모리의 구조가 변화됨에 따라 8bit를 1byte로 구성하게 되었다.

 

ASCII 코드는 모두 256(개의 부호를 두 개의 집합, 즉 표준 집합(standard set)과 확장 집합(extended set)으로 구분.

표준 집합 : 십진수 0~127(16진수 0x00~0x7f)가지 128개 문자 부호 제공.

(제어문자, 알파벳 대문자와 소문자, '0'~'9'까지의 숫자 그리고 일반적으로 사용되는 특수 기호로 구성)

확장 집합 : 십진수 128~255(16진수 0x80~0xff)가지 128개 문자 부호를 추가로 제공.

(컴퓨터 업체나 프로그래머로 하여금 여러 다양한 문자를 할당하여 사용할 수 있도록 하였기 때문에 일반적으로

통용되는 코드 집합이 아니며 컴퓨터 제조 회사나 국가별로 차이가 있다)

 

제어 문자(control characters) : 0부터 ~ 31까지(16진수로 0x00 ~ 0x1f)는

TAB, CR(Carriage Return), LE(line Feed)등의 제어 문자를 표현하기 위한 용도.

출력 가능한 문자(printable characters) : 32부터 ~ 126까지 출력으로 확인 가능한(Printable)문자들로 구성.

 

Standard ASCII Codes

 

Extended ASCII Codes

Posted by devanix
2011. 9. 8. 05:50

'Programming > C' 카테고리의 다른 글

printf 출력 서식  (0) 2011.10.12
The C Library Reference Guide  (0) 2011.09.08
비트 제어 - 설정, 클리어, 반전, 검사, 추출  (0) 2011.07.29
다시 체계적으로 배우는 C언어 포인터  (0) 2011.07.07
연산자 우선순위  (0) 2010.05.05
Posted by devanix
2011. 9. 8. 05:37
Posted by devanix
2011. 7. 29. 15:34

[ 비트 설정 ]

▶ 특정 비트를 1로 설정 : 1과 |(or)연산.

▷ 5번 비트를 1로 설정>

  

0101_0101

OR( | )

0010_0000

  

0111_0101

 

위의 연산을 코드화 : a |= 0x00100000;

▷ 위의 0x001_0000은 0x1(0x000_0001)을 5번 쉬프트한 값과 같다.

a |= 0x1 << 5;

   

▷ 5,3,2번 비트를 1로 설정>

  

0101_0101

OR( | )

0010_1100

  

0111_1101

 

위의 연산을 코드화 : a |= (0x1<<5)+(0x1<<3)+(0x1<<2);

▷ 3,2번 비트는 연속된 비트이기 때문에 0x3으로 묶어줄 수 있다.

a |= (0x1<<5)+(0x3<<2);

   

[ 비트 클리어 ]

▶ 특정 비트 클리어 : 0과 &연산.

▷ 1을 원하는 위치로 쉬프트하고 그 값에 대해 ~(NOT)연산을 해서 0으로 만듬.

(0x0000, 0x0도 모두 0이기 때문에 0으로 자릿수를 표현할 수 없음)

0x1 << 5

0x0010_0000

~(0x1<<5)

0x1101_1111

▷ 2번 비트를 0으로 클리어>

  

0101_0101

AND(&)

1111_1011

  

0101_0001

위의 연산 코드화 : a &= ~(0x1<<2);

   

▷ 5,3,2번 비트 클리어>

  

0101_0101

AND(&)

1101_0011

  

0101_0001

위의 연산 코드화 : a &= ~((0x1<<5)+(0x3<<2));

   

[ 비트 반전 ]

▶ 특정 비트 반전 : 1과 ^연산. ( ^연산은 두 피연산자가 같으면 0, 다르면 1로 설정)

▷ 5번 비트 반전 >

  

1111_0101

XOR(^)

0010_0000

  

1101_0101

위의 연산 코드화 : a ^= 0x1<<5

   

▷ 5,3,2번 비트 반전 >

  

1111_0101

XOR(^)

0010_1100

  

1101_1001

위의 연산 코드화 : a ^= (0x1<<5)+(0x3<<2);

   

[ 비트 검사 ]

▶ 특정 비트가 0인지 1인지 검사.

▷ 5번째 비트가 0인지 1인지 검사 : a & (0x1 << 5)

   

[ 비트 추출 ]

▶ 특정 비트만 추출.

▷ [6:4] 비트만 추출하고 싶다면 : (a>>4) & 0x7

   

   

[ bit_macro.h ]

/* 한 비트 클리어 */
#define clear_bit(data, loc)    ((data) &= ~(0x1 << (loc)))
/* 연속된 여러 비트 클리어 */
#define clear_bits(data, area, loc)     ((data) &= ~((area) << (loc)))
 
/* 한 비트 설정 */
#define set_bit(data, loc)      ((data) |= (0x1 << (loc)))
/* 연속된 여러 비트 설정 */
#define set_bits(data, area, loc)  ((data) |= ((area) << (loc)))
 
/* 한 비트 반전 */
#define invert_bit(data, loc)   ((data) ^= (0x1 << (loc)))
/* 연속된 여러 비트 반전 */
#define invert_bits(data, area, loc)    ((data) ^= ((area) << (loc)))
 
/* 비트 검사 */
#define check_bit(data, loc)    ((data) & (0x1 << (loc)))
 
/* 비트 추출 */
#define extract_bits(data, area, loc)   (((data) >> (loc)) & (area))

   

 

[ bit_test.c ]

#include <stdio.h>
#include "bit_macro.h"

void bitdisp(int c) {
    int i;

    for (i=7; i>=0; i--)
        printf("%1d", check_bit(c, i)? 1:0);

    putchar('\n');
}

int main(void) {
    unsigned char a = 0xf0;     // 11110000(₂)
    unsigned char b;

    printf("a 2진수로 출력 : "); bitdisp(a);
    puts("------------------------------------");
clear_bit(a, 5); /* 5번 비트 클리어 */ printf("5번 비트 클리어 : "); bitdisp(a); clear_bits(a, 0x7, 3); /* 5,4,3번의 연속 3비트 클리어 */ printf("5,4,3번 비트 클리어 : "); bitdisp(a); putchar('\n'); set_bit(a, 5); /* 5번 비트 설정 */ printf("5번 비트 설정 : "); bitdisp(a); set_bits(a, 0x7, 3); /* 5,4,3번 연속 비트 설정 */ printf("5,4,3번 비트 설정 : "); bitdisp(a); putchar('\n'); invert_bit(a, 5); /* 5번 비트 반전 */ printf("5번 비트 반전 : "); bitdisp(a); invert_bits(a, 0x7, 3); /* 5,4,3번 연속 비트 반전 */ printf("5,4,3번 비트 반전 : "); bitdisp(a); putchar('\n'); b = extract_bits(a, 0x7, 4); /* 6,5,4번 비트를 추출하여 b에 대입 */ printf("6,5,4번 비트 추출 : "); bitdisp(b); return 0; }

   

'Programming > C' 카테고리의 다른 글

The GNU C Library Reference Manual  (0) 2011.09.08
The C Library Reference Guide  (0) 2011.09.08
다시 체계적으로 배우는 C언어 포인터  (0) 2011.07.07
연산자 우선순위  (0) 2010.05.05
매크로  (0) 2010.05.05
Posted by devanix
2011. 7. 7. 22:09

   



C언어포인터
카테고리 컴퓨터/IT > 프로그래밍/언어 > C
지은이 정재은 (정보문화사, 2003년)
상세보기 [ Down ]

   

[ 책소개 ]

이 책은 포인터와 배열만을 다룬것이 아니라 가벼운 인자, 함수포인터, 함수 인자포인터,

자기 참조 구조체등 C언어의 전반에서 모두 사용되는 포인터를 다루고 있다.

메모리해제에 관한 자세한 해설과 예제등 다양한 실무경험을 통해 터득한 내용들을 쉽게 서술하였다

   

[ 목차 ]

Chapter1 포인터의 기초

1 포인터란 무엇인가? 14

2 포인터 변수 15

3 포인터 변수 정의 15

4 쓰레기 주소 값 17

5 & 연산자 18

6 포인터 변수에 번지 할당 20

7 포인터 변수에 왜 타입을 지정하는가? 27

   

Chapter2 1차원 배열과 포인터

1 1차원 배열과 포인터 32

2 첨자 생략 35

3 다차원 배열 35

4 1차원 배열과 포인터 37

5 포인터 + 정수의 의미 39

6 배열명의 숨은 뜻 44

   

Chapter3 2차원 배열과 포인터

1 이것만 알면 만사 OK 50

2 기본 50

3 배열 포인터 정의 52

4 2차원 배열과 2차원 배열 포인터 변수 연결 53

5 2차원 배열 기본 다지기 56

6 imsip = imsi 60

7 int imsi[2][3]의 모든 것 61

8 함수 인자 포인터 65

9 2차원 포인터 다루기 66

10 2차원 포인터 이것만은 알아두자 72

11 int (*imsi)[2], int *temp[2]의 차이 81

12 *temp[3]에서 temp의 의미는? 86

   

Chapter4 문자열과 포인터

1 문자열이란 무엇인가? 92

2 a, 'a', "a"의 차이 92

3 문자열 포인터 변수 94

4 포인터를 이용한 문자열 조작 96

5 착각하기 쉬운 첨자 98

6 *string과 string[ ]의 차이 99

7 문자열 상수 변경 103

8 문자열과 포인터 배열 106

9 포인터 배열에 문자열 할당 109

   

Chapter5 포인터의 포인터

1 포인터의 포인터는 무엇인가? 118

2 포인터의 포인터 변수 정의 118

3 어디에 사용하는가? 118

4 초기화 119

5 포인터의 포인터 참조 121

6 주의 사항 125

7 주의 사항 하나 더 126

8 명령행 인자 127

   

Chapter6 scanf( )와 fgets( )

1 scanf( )와 fgets( ) 132

   

Chapter7 strcpy( )의 비밀

1 strcpy( )의 함정 140

2 배열을 이용한 strcpy( ) 142

3 포인터 변수를 이용한 strcpy( ) 143

4 배열과 malloc( )을 이용한 번지 할당 146

   

Chapter8 뒤죽박죽 포인터

1 뒤죽박죽 포인터? 150

   

Chapter9 포인터의 개념을 깨는 0

1 의문점 154

2 널 포인터 156

3 주의 사항 157

4 널 포인터의 사용처 157

   

Chapter10 바로 알자 getchar( )

1 getchar( )의 함정 162

   

Chapter11 가변 인자

1 가변 인자란? 166

2 가변 인자 사용 단계 167

3 가변 인자를 위한 매크로 168

4 가변 인자의 사용 169

5 주의 사항 171

   

Chapter12 될 것 같으면서 안 되는 코드

1 초보자들이 무시하는 쓰레기 주소 값 174

   

Chapter13 (int *)pointer

1 캐스트 연산자의 이해 186

   

Chapter14 void형 포인터

1 void형 포인터란? 192

2 void형 변수 포인터 정의 193

3 void형 포인터 변수의 성질 193

4 void형 포인터 변수의 사용 193

5 *((int *)voidp)++ 200

6 주의 사항 203

   

Chapter15 함수 인자 포인터

1 함수 인자 포인터란? 206

2 1차원 함수 인자 포인터 206

3 int형 배열 209

4 문자열 포인터 213

5 1차원 포인터 배열 214

6 2차원 포인터 배열 216

   

Chapter16 함수 포인터

1 함수 포인터의 매력 224

2 함수 포인터의 정의 224

3 함수 포인터의 초기화 225

4 함수 포인터 호출 225

   

Chapter17 구조체와 포인터

1 간단한 구조체 개념 230

2 주소록 230

3 구조체 선언과 정의 231

4 구조체 연산 233

5 구조체와 포인터 234

6 멤버 초기화 236

7 주의 사항 237

8 중첩 구조체 240

9 구조체 복사 242

10 매개변수가 구조체 배열인 함수 245

11 자기 참조 구조체 251

12 리스트 262

   

Chapter18 메모리 할당과 해제

1 동적 메모리 할당 270

2 동적 메모리 할당의 장·단점 272

3 malloc( ) 273

4 가장 간단한 메모리 할당 274

5 동적 메모리 영역 초기화 275

6 할당 가능한 메모리 영역 알아보기 276

7 문자열 포인터 변수를 위한 malloc( ) 277

8 구조체 포인터 변수를 위한 malloc( ) 278

9 calloc( ) 279

10 realloc( ) 281

11 메모리 해제 282

12 간단한 메모리 해제 283

13 리스트의 메모리 해제 283

14 복잡한 메모리 해제 287

   

Chapter19 라이브러리

1 라이브러리란? 296

2 라이브러리의 특징 298

3 ar 298

4 ar 옵션 (/usr/ccs/bin) 299

5 라이브러리 생성 단계 299

 

'Programming > C' 카테고리의 다른 글

The GNU C Library Reference Manual  (0) 2011.09.08
The C Library Reference Guide  (0) 2011.09.08
비트 제어 - 설정, 클리어, 반전, 검사, 추출  (0) 2011.07.29
연산자 우선순위  (0) 2010.05.05
매크로  (0) 2010.05.05
Posted by devanix
2010. 7. 31. 20:16
  • 파이썬의 객체 자료형

분야

설명

NoneType 

None 객체 자료형

TypeType 

type 객체의 자료형(type()으로 리턴되는 자료형)

BooleanType 

부울 자료형(파이썬 2.3이상)

IntType

정수형(예:123)

LongType 

롱형(예:123L)

FloatType 

실수(부동소수점)형 (예:12.34)

ComplexType 

복소수형(예: 1.0j)

StringType 

문자열형(예: 'Spam')

UnicodeType 

유니코드 문자열형(예: u'Spam')

TupleType 

튜플형(예: (1,2,3, 'spam'))

ListType

리스트형(예: [0,1,2,3])

DictType

사전형(예: {'Bacon':1, 'Ham':0})

DictionaryType

DictType의 또 다른 이름

FunctionType

사용자 정의 함수, 람다 함수형

LambdaType

FunctionType의 또 다른 이름

CodeType

compile() 함수에 의해 리턴되는 코드 객체형

ClassType 

사용자 장의 클래스 자료형

InstanceType 

사용자 정의 클래스 인스턴스형

MethodType

사용자 정의 클래스 인스턴스의 메쏘드형

UnboundMethodType

MethodType의 또 다른 이름

BuiltinFunctionType 

len(), sys.exit()와 같은 내장 함수의 이름

BuiltinMethodType 

BuiltinFunction의 또 다른 이름

ModuleType

모듈형

FileType

sys.stdout과 같은 오픈된 파일 객체형

XRangeType

xrange()에 의해 리턴된 자료형

SliceType

slice()에 의해 리턴된 자료형

EllipsisType

Ellipsis 자료형

TracebackType

sys.exc_traceback와 같은 traceback 객체형

FrameType

traceback 객체 tb안의 tb.tb_frame과 같은 프레임 객체형

BufferType

buffer() 함수로 생성된 버퍼 객체형

 

  • 기타의 자료형
    • 파이썬 전체 자료형의 종류를 알아보려면 모듈 types를 이용

>>> import types

>>> dir(types)

['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__']

  • types 모듈을 이용하여 자료형 비교

>>> from types import *

>>> type(123) == IntType

True

>>> type('abc') == StringType

True

 

  • 내장 자료형 알아보기
    • 자료형이 무슨 형인지 알려면 type 내장 함수를 이용
    • type 함수는 자료의 종류를 담고 있는 type 객체를 리턴

>>> type({})

<type 'dict'>

>>> type('abc')

<type 'str'>

>>> type(None)

<type 'NoneType'>

>>> type([])

<type 'list'>

>>> type(())

<type 'tuple'>

>>> type(type({}))

<type 'type'>

# 자료형 비교 예

>>> a = 0

>>> L = [1,2,3]

>>> type(a) == type(0) # a가 정수인지 검사

True

 

Posted by devanix
2010. 7. 31. 18:07
  • 주요 내장 자료형

자료형

설명

수치형(Numbers)

정수, 롱형, 실수, 복소스등 표현

123, 12345L, 1.43 5+3

문자열(Strings)

문자들의 모임 (내용 변경 X)

'spams', "ham", "'egg'",

"""hot dog"""

리스트(Lists)

순서를 갖는 파이썬 임의 객체의 집합

['ham', 'spam']

사전(Dictionaries)

순서를 갖지 않는 객체의 집합

키(key)로 값을 꺼낸다.

{'ham':4, 'spam':5}

튜플(Tuples)

순서를 갖는 파이썬 임의 객체의 집합

(내용 변경 X)

('ham', 'spam')

파일(Files)

파일에 자료를 입.출력하기 위한 객체

f = open('ham')

 

  • 자료 저장 방법에 따른 자료형의 분류

자료형

설명

직접자료형(direct)

직접 자료를 표현하는 자료형

수치형이 여기에 속함.

정수, 실수, 롱형정수, 복소수

시퀀스형(sequence)

다른 자료를 포함하는 자료형

(순서를 갖는 집합적 자료형)

문자열, 리스트, 튜플

매핑형(mapping)

다른 자료를 포함하는 자료형

(순서를 갖지 않는 집합적 자료형)

사전

  • 변경 가능성에 따른 자료형의 분류

자료형

설명

변경가능형(mutable)

자료의 값을 변경(O)

리스트, 사전

변경불가능(immutable)

자료의 값을 변경(X)

문자열, 튜플, 수치형

  • 자료 저장 개수에 따른 자료형의 분류

자료형

설명

리터럴형(literal/scalar)

한 가지 객체만 저장.

수치형, 문자열

저장형(container)

여러 가지 다른 객체를 저장

리스트, 튜플, 사전

  • 자료형의 분류

자료형

저장모델

변경 가능성

접근 방법

수치형

리터럴

불가

직접

문자열

리터럴

불가

시퀀스

리스트

저장형

가능

시퀀스

튜플

저장형

불가

시퀀스

사전

저장형

가능

매핑

 

  • 자료형들을 구분하는 또 다른 중요한 구분 기준

(1) '변경 가능하다'(mutable) – 리스트, 사전

>>> s = [1,2,3]

>>> s[1] = 200

>>> s

[1, 200, 3]

(2)'변경 가능하지 않다'(immutable) – 수치형, 문자열, 튜플

>>> s = (1,2,3)

>>> s[1] = 20

Traceback (most recent call last):

File "<pyshell#6>", line 1, in <module>

s[1] = 20

TypeError: 'tuple' object does not support item assignment


Posted by devanix