C++ 이라기보단 C 질문인데, printf 에서 맨 앞의 format string 제외하면 나머지는 va_arg/va_list 로 넘어가기때문에 format string 뒤쪽의 argument 에 대해서는 타입 정보를 못받습니다. 즉, 순수하게 1111...1111 같은 비트 덩어리만 넘어가는거고, 저 bit 를 해석하는건 %d 에 달려있죠. %d 는 int 에 대응되는거니 저 bit 덩어리를 int 로 해석해서 -1 이 되는거고요. 같은 이유로, printf 에서는 float 이나 double 이나 둘다 %f 를 써도 되지만, scanf 에서는 %f, %lf 구분을 해줘야 하죠.
저건 그냥 (int)((unsigned int)(-1))한 거랑 마찬가지고요
그렇게 넣고 x 가지고 곱하기 나누기 막 계산하다 보면 결과가 병신됩니다.
from CV
답변 주신 고수님들 감사합니다!!