①
관리자님..
unit 81 공부하는데 기초적인 질문일 수 있지만
구조체나 변수를 정의할 때
어디는 unsigned 어디는 signed인데
그 기준이 많이 헷갈립니다..
예를 들어 p.989 예제에
unsigned char *image; 는 "부호 없는" 이지만
int size;
int width, height;
이렇게 다른 것들은 또 signed이고 그 기준을 잘 모르겠습니다..
------
size, width, height는 unsigned로 쓰는 게 좋습니다.
기준이 더 엄격하면 좋습니다.
유튜브 조회수도 최댓값을 넘어서 오버플로로 음수가 된 적이 있습니다.
-. 싸이 '강남스타일' 조회수 집계 오류? 알고 보니… 깜짝
https://www.ajunews.com/view/20141204140906500
3일 유튜브에서는 '강남스타일' 뮤직비디오가 21억4748만3647건의 조회수를 돌파하자, 수치가 더 이상 집계되지 않았다. 또 조회수에 마우스 커서를 올려놓으면 마이너스(-)로 집계되기도 했다
②
p.993에
// (y * (세로 크기 * 픽셀 크기))는 픽셀이 몇 번째 줄인 지 계산
이라고 적혀있는데
밑에는 (y * (width * PIXEL_SIZE) 라고 되어 있는데
width - > height로 고쳐야 하는 것 아닌가요??
아니면 세로 크기 -> 가로 크기로 고쳐야하나요??
------
가로 크기입니다.
주석이 틀렸습니다.
③
p.993에
//현재 픽셀의 주소를 RGBTRIPLE 포인터로 변환하여 RGBTRIPLE 포인터에 저장
RGBTRIPLE *pixel = (RGBTRIPLE *)&image[index];
라고 되어 있는데
p.989 메인 함수에
unsigned char *image로 정의했는데
pointer to char == address of char이니까
RGBTRIPLE *pixel = (RGBTRIPLE *)&image[index]; 에서
RGBTRIPLE *pixel = (RGBTRIPLE *)image[index]; 으로
이렇게 &(메모리 주소)를 빼야하지 않나요??
------
image 배열은 unsigned char로 선언되어 있지만, 실제 그 내부는 RGB 정보로 되어 있습니다. 픽셀 하나는 Red, Blue, Green으로 구성되어 있습니다.
int index = (x * PIXEL_SIZE) + (y * (width * PIXEL_SIZE)) + (padding * y);
index 위치를 계산할 때 PIXEL_SIZE가 쓰였습니다. 이건 3으로 정의되어 있습니다.
RGBTRIPLE *pixel = (RGBTRIPLE *)&image[index];
④
p.993에
fprintf(fpTxt, "%c%c", c, c); // 텍스트 파일에 문자 출력
여기서
fprintf(fpTxt, "%c%c", 'c', 'c');
'c', 'c' 이렇게 문자를 표시해야하지 않나요??
-----
char c = ascii[gray * sizeof(ascii) / 256];
char c를 계산해서 c에 저장된 문자 값을 출력하기 위한 것입니다.
단순히 문자 'c'를 무한히 찍는 게 요구사항은 아닐 겁니다.
p.1001 퀴즈 3번의 정답도
fprintf(fp, "%c", 'a'); 이게 정답이라고 되어있어서요..
------
퀴즈 예시가 틀렸습니다. a로 바꿔야 합니다. 'a'가 아닙니다.
다음 종이책 중쇄에 반영하겠습니다.