그러면 0또는 -1만 가능한건가요? 다른 값은 불가능 한가요? memset에 대해 좀 더 찾아보고싶은데 마땅히 잘 나와있는곳이 없네요 ㅠㅠ
11060번 - 점프 점프
아주 간단하게 대충 설명해보면
"int값을 16진수로 나타냈을 때 동일한 바이트 패턴이 4번 반복되는 값" 으로 초기화하고 싶은 상황이면
그 바이트 패턴을 memset에 넣어서 사용할 수 있습니다.
-1을 예로 들어 설명해보면
음수를 표현할 때 2의 보수를 사용하는 플랫폼 (= 거의 대부분의 플랫폼) 에서는
(int)-1 을 0xffffffff 로 나타냅니다.
memset에 (int)-1 을 넣으면 함수 내부에서 unsigned char로 변환하고 그 때의 값은 0xff 가 되고
이 값으로 모든 바이트를 채우게 됩니다.
따라서 어느 위치에서 읽어도 (int)-1 이 되는 것이죠.
비슷하게 memset에 0x0f 를 넣으면
0x0f0f0f0f 같은 값으로 초기화 되겠죠.
댓글을 작성하려면 로그인해야 합니다.
kkw564 7년 전
// memset(DP, INT_MAX, sizeof(DP));
fill(DP, DP + n, INT_MAX);
이 두코드가 있는데 왜 memset로는 결과값이 -1(예제 입력시)로 뜨고
fill로는 정상적으로 값이 나올까요??..