본문 바로가기

C언어 공부

(37)
디버깅 실습 우분투의 QT에서 실습하였습니다. ^^ 다음의 소스를 디버깅하고 실행시켜보니 a에 32766이라는 값이 들어가있다. 한 단계 실행을 시켜보니 a에 1이라는 값이 들어간 것이 확인된다. 다음 단계를 실행시켜보니 b에 2라는 값이 들어갔다. 또 다음 단계를 실행시켜보니 c에도 3이라는 값이 들어간다. 이렇듯 디버깅은 버그를 찾기 위해 중간 중간 중단점을 적용함으로써 코드를 전체 실행이 아니라 부분적으로 실행시킬 수 있는 기능이다. 긴 코드를 실행시키고 버그를 찾기 어려울 때 디버깅 기능을 이용해 버그를 분석할 수 있으니 잘 배워둬야겠다 ^^
7.14 심사문제 write up 이 문제는 int8_t, uint16_t, uint32_t, int64_t와 같이 크기가 표시된 자료형이 정의된 헤더파일을 추가해주면 된다. 답은 #include
7.13 심사문제 write up 이 문제는 CHAR_MIN, INT_MIN, LLONG_MIN이 있는 헤더파일인 limits.h을 추가해주는 문제이다. 답은 #include
7.12 심사문제 write up num1과 num2, long long의 자료형 크기의 합이 11이라는 문제이다. long long의 자료형 크기는 8바이트 그렇다면, num1과 num2의 자료형 크기의 합이 3이 되어야한다는 것이다. 3이 되기 위해서는 char->1바이트, short->2바이트가 더해지면 된다. 그렇다면 빈 칸에는 num1과 num2에 각각 자료형 char, short를 선언해주면 된다. 답은 char num1; short num2;
7.11 심사문제 write up 이 문제는 오버플로우를 발생 시키는 문제이다. num1과 num2의 형식지정자는 %u, num3의 형식지정자는 %d인 것을 통해, num1,num2는 unsigned 자료형이고 num3는 signed임을 알 수 있다. num1의 출력 값이 0이 된 것을 보아 num1은 오버플로우가 발생한 것이 확인된다. num1의 최댓값인 65535보다 큰 65536이 들어가자 오버플로우가 발생하며 최솟값인 0을 출력한 것으로 보아 num1의 자료형은 unsigned short임을 알 수 있다. num2의 출력 값이 0이 된 것을 보아 num2 역시 오버플로우가 발생한 것이 확인된다. num2의 최댓값인 4294967295보다 큰 4294967296이 들어가자 오버플로우가 발생하며 최솟값인 0을 출력한 것으로 보아 nu..