죄송합니다만 아까 했던 질문에서 계속 반복된 질문을 하게 되었는데요..
그런데 sprintf문에서 뭔가 이상한 의심이 생겼는데요
제가 알기로는 printf와 sprintf의 유일한 차이점이 stdout로 출력하는지 아님 할당된 변수에 출력하는지 이 차이인 것으로 아는데요
그런데 printf의 %d서식문자는 아래 링크처럼 출력자료형이 int형으로 알고 있는데요
그렇다면 아래의 소스코드처럼 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;}