#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int numArr1[3] = { 0, };
long long numArr2[3] = { 0, };
int* numPtr = malloc(sizeof(int) * 3);
void* ptr = malloc(sizeof(long long) * 3);
int num1;
long long num2;
scanf("%d %d %d %lld %lld %lld",
&numArr1[0], &numArr1[1], &numArr1[2],
&numArr2[0], &numArr2[1], &numArr2[2]
);
memcpy(numPtr, numArr1, sizeof(int) * 3);
memcpy(ptr, numArr2, sizeof(long long) * 3);
numArr1[0] = numArr1[1] = numArr1[2] = 0;
numArr2[0] = numArr2[1] = numArr2[2] = 0;
//
num1 = (*(int*)numPtr + 2); <-빈칸 입력 문제
num2 = (*(long long*)ptr + 1); <-빈칸 입력 문제
//
printf("%d %lld\n", num1, num2);
free(ptr);
free(numPtr);
return 0;
}
입력값 : 1 2 3 4 5 6 시 출력값이 3 5로 제대로 출력되는데
왜 틀렸다고 나오는 지 궁금합니다.
우연의 일치로 입력값과 출력값이 맞아서 정답처럼 보이는 코드입니다.
다음 입력 값에 대해서
111 222 333 444 555 666
출력 값은
113 445입니다.
세 번째와 다섯 번째 값을 출력하는 게 아니라는 사실을 알 수 있습니다.
1 2 3 4 5 6
입력에 대해
1 + 2를 한 결과 3을 출력하는 것을 세 번째 값을 출력하는 것처럼 착각하게 만든 것으로 보입니다.