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

C/C++ Q/A
[2773] Re:Re:Re:Re:Re:Re:Re: 됩니다~!
임문환.실업자 [] 1233 읽음    2003-06-15 17:55
급합니다. 님이 쓰신 글 :
:  밑에 껄로 하니 됩니다.
: printf ( " %u " p * (long) 1500 /100 ); 으로 하니 됩니다.
:
: %u 는 unsigned 변수에 쓰는 거 아닌가요?? 어떻게 되는 건지 좀 알려주세요.
: (long)을 붙이면 어떤 식으로 계산이 되는지도 설명해주세요^^
: 정말 고맙습니다.
:
:
:
:  임문환.실업자 님이 쓰신 글 :
: : 안 된다는 코드를 가감 없이 그대로 올려주시면 살펴보겠습니다.
: :
: : 참고로,
: : int 형이 2 바이트이고 long int 형이 4 바이트인 경우,
: : int p= 3207; 
: : printf ( " %d ", p*(long)1500/100); 를 하면 -17431이 출력되고
: : printf ( " %u ", p*(long)1500/100); 를 하면  48105가 출력됩니다.
: :
: :

printf에서의 형지정자(형변환자)는 해당 변수의 자료형과 별개입니다.
signed 변수에 담겨진 값이더라도 %u로 하면 그 값을 unsigned로 해석합니다.
unsigned 변수에 담겨진 값이더라도 %d로 하면 그 값을 signed로 해석합니다.

숫자 자료형의 연산에서
두 변수의 자료형이 서로 다르면 작은 자료형을 큰쪽 자료형으로 변환한 후 연산을 수행하고 결과도 큰쪽 자료형이 됩니다.
그리고, 주의할 것은 '항상 우변항의 연산 결과가 좌변항에 그대로 대입는 것은 아니다'는 것입니다.
예를 들어, 우변항의 연산결과가 long 형(4바이트)이라고 할지라도 좌변항이 int 형(2바이트)이라면 LSB쪽 2바이트만 대입됩니다.
물론 양쪽이 동일한 형이라면 그대로 대입됩니다.


+ -

관련 글 리스트
2764 급합니다. 쉬운 건데 틀리네요. 단순 질문입니다. 급합니다. 1145 2003/06/15
2765     Re: 정수형 간의 연산 임문환.실업자 1268 2003/06/15
2766         Re:Re: 답변 감사드리구요. 다시 좀 봐주세요. 급해요 1095 2003/06/15
2768             Re:Re:Re: 정수형 간의 연산 임문환.실업자 1157 2003/06/15
2770                 Re:Re:Re:Re: 이런 여전히 안 됩니다...ㅡ.ㅡ; 급합니다. 1031 2003/06/15
2771                     Re:Re:Re:Re:Re: 이런 여전히 안 됩니다...ㅡ.ㅡ; 임문환.실업자 1145 2003/06/15
2772                         Re:Re:Re:Re:Re:Re: 됩니다~! 급합니다. 1098 2003/06/15
2773                             Re:Re:Re:Re:Re:Re:Re: 됩니다~! 임문환.실업자 1233 2003/06/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.