작성
·
42
·
수정됨
1
3 + 9703459 = The answer is 9703459
이렇게 출력이 되더라고요.
%i 를 z로만 채웠는데 알아서 값이 채워진 이유가 뭘까요?
답변 2
0
안녕하세요? 질문&답변 도우미 durams입니다.
코드를 첨부해주시지 않아 자세한 상황을 알 수는 없지만, 함수가 요구하는 개수보다 적은 인자를 전달한 경우 정상적으로 함수가 동작할 것이라고 기대할 수 없습니다.
값이 알아서 채워졌다기보다는, 본래 해당 인자의 값을 얻어와야 하는 곳에 위치한 쓰레기 값을 가져온 것이라고 보는 것이 옳습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
printf
함수를 사용할 때의 상황에 대해 질문 주셨군요. printf
의 형식 문자열 안에 변수를 정확히 인식하고 필요한 만큼 값을 제공해야 하는데, 그런 규칙이 잘못 적용된 경우 에러가 발생할 가능성이 있는데, 주어진 케이스에서는 무작위로 메모리에 존재하는 데이터를 참조할 가능성이 있습니다.
printf
에 주어진 형식 문자열은 3개의 정수를 기대하고 있으며, 가령 z
라는 단일 변수로 주어졌을 때는 예기치 않은 값이 출력될 수 있습니다. 각 %i
에 대해 별도의 정수를 제공하지 않으면 printf
는 z
의 값만으로 형식의 길이를 충족하려고 시도하며, 이는 종종 재사용될 수 있을 메모리 영역으로부터 임의의 데이터를 가져옵니다. 이렇듯 메모리의 재사용이나 접근이 변수에 할당된 것이 아닌 구역에서 이루어진다면 형식적인 결과가 보장되지 않습니다.
따라서, 각 %i
에 전달할 변수를 올바르게 제공해야 안전하게 예상한 결과를 얻을 수 있습니다. 아래의 URL에서 관련된 추가 정보를 확인해 보시기 바랍니다.
scanf
와 printf
의 출력을 제대로 다루는 방법에 대한 설명과 예제를 제공합니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.