게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
printf("%d")에서 %d는 int형을 나타내나요?
게시물ID : programmer_10719짧은주소 복사하기
작성자 : ㅜ_ㅠ
추천 : 0
조회수 : 502회
댓글수 : 5개
등록시간 : 2015/06/02 16:55:13
죄송합니다만 아까 했던 질문에서 계속 반복된 질문을 하게 되었는데요..
그런데 sprintf문에서 뭔가 이상한 의심이 생겼는데요
제가 알기로는 printf와 sprintf의 유일한 차이점이 stdout로 출력하는지 아님 할당된 변수에 출력하는지 이 차이인 것으로 아는데요

그런데 printf의 %d서식문자는 아래 링크처럼 출력자료형이 int으로 알고 있는데요
http://blog.daum.net/_blog/BlogTypeView.do?blogid=0TNH9&articleno=54&_bloghome_menu=recenttext

그렇다면 아래의 소스코드처럼 sprintf(str, "%d시%d분%d초\n",hour,minute,second);로 사용한다면
hour,minute,second는 전부 int형으로 str배열에 저장되는데
그렇다면 
str=new char[digit(hour)+digit(minute)+digit(second)+4];에서 
digit(minute)와 digit(hour)등은 전부 int자료형의 크기인 4바이트를 할당해야 하나요?
아니면 char은 크기가 1byte이고 여기에는 -128~127 까지 저장하기에 충분하니까 그냥 1바이트로 할당해도 충분할 지 알고 싶네요.

아시는 분 답변 주시면 정말 좋겠네요.

 #include <iostream>
using std::cout;
using std::endl;

int digit(int _digit);

class Time
{ char* str;
public:

 Time(int hour,int minute=0,int second=0)
 {
  str=new char[digit(hour)+digit(minute)+digit(second)+4];
  sprintf(str, "%d시%d분%d초\n",hour,minute,second);
 }
 ~Time()
 {
  delete []str;
 }
 void ShowTime()
 {
  printf("%s",str);
 }
};
int digit(int _digit)
{
return 4;
};
int main()
{
 Time time1=Time(19,1);
 time1.ShowTime();
 return 0;
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호