출처 드림핵 강의
같은 자료형이라도 운영체제에 따라 크기가 달라질 수 있다. 이 문서의 자료형 챕터를 참고하라.
변수에 어떤 값을 대입할 때, 그 값이 변수에 저장될 수 있는 범위를 벗어나면, 저장할 수 있는 만큼만 저장하고 나머지는 모두 유실된다.
만약 unsigned int 자료형에 음수를 전달하는 경우 2의 보수 법칙에 따라 값이 왜곡되어 전달된다. 따라서 양수로만 쓰일 값에는 반드시 unsigned를 붙여야 한다.
만약 int 변수의 값을 무부호 변수에 전달하는 경우 어떤 문제가 있을까?, int 변수로 입력 길이 검사를 수행하는 경우, -1을 대입하면 검사를 우회할 수 있다. 그리고 read 함수의 경우 size_t는 무부호 변수이므로, 음수를 전달 받는 경우 매우 큰 수로 해석되어, 매우 긴 길이를 입력받을 수 있다.

우리 주변에서 이로인한 버그를 많이 찾을 수 있다.
예를 들어 size에 가장 큰 수를 입력한다고 가정하자. size+1만큼 청크를 할당하고, size만큼 read함수로 입력을 받는 경우, size+1은 오버플로우로 0이 되어 최소 32바이트의 청크를 할당받는다. 하지만 입력은 size 크기 그대로 받는다.