Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[2263] Re:또 질문입니다.....
불사새 [phenix96] 1207 읽음    2003-04-04 16:51
김백일님의 말씀처럼 아래와 같은 코드는 상당히 위험합니다.

항상 아래처럼 동작하는것이 아니기 때문에(인자전달 방식에따라, 데이타의 길이 등등)
아래코드의 경우 도스에서 저렇게 동작하는것일 뿐이지 언제나 저런건 아니라는것이죠...

char의 데이타 표현 범위는 -128~127 까지 입니다.

1비트의 부호비트와 7비트의 데이타 비트로 구성되며(2의 보수에 대해 공부해보세요)

아래처럼 동작합니다.

0000 0001 : 1
...
0111 1111 : 127
1000 0000 : -128
...
1111 1111 : -1

unsigned char로 선언할경우 0~255로 표현되구요...부호비트가 없어지니까요...

즉 128이라는건 2진수로 1000 0000 이며 그것을 char에 넣었을경우 음수128이 되는것이죠.

1000 0001은 당연히 -127이구요...


김학래 님이 쓰신 글 :
: #include<stdio.h>
:
: main(void)
: {
:     char a = 127, b = 128;
:
:     printf("\n%d %d %d\n\n", a, a+1, b);
:     printf("\n%d %d %d\n\n", a, a+=1, b);
: }
:
: 여기서 결과가
:
: 첫번째  127   128   -128
: 두번째  -128  -128  -128
:
: 이라고 나오는데 왜 이렇게 나오는지 자세한 설명을 부탁드립니다....
:
: 그리고 매번 제 질문에 답변을 해주셔가 감사합니다...(__) 꾸벅

+ -

관련 글 리스트
2262 또 질문입니다..... 김학래 1072 2003/04/04
2264     Re:또 질문입니다..... 2의보수 표현 임문환 3315 2003/04/04
2263     Re:또 질문입니다..... 불사새 1207 2003/04/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.