묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[c++]두문제 설명좀 부탁합니다..
2003.03.22 23:58
2.1. 대부분의 컴퓨터는 정수를 저장하는 데 2의 보수 표현을 사용한다. 이러한 컴퓨터에서 -1을 정수형으로 저장하면 모든 비트는 1이 된다. 사용자 시스템이 이러한 컴퓨터라면, char 형이 signed char 형과 unsigned char 형 중 어느 형과 동일한지 여부를 결정하는 방법이 있다. 다음을 포함하는 프로그램을 작성하여라.
char c = -1;
signed char s = -1;
unsigned char u = -1;
printf("c = %d s = %d u = %dn", c, s, u);
각 변수 c, s, u는 비트 패턴 11111111로 메모리에 저장된다. 사용자 시스템에서는 무엇이 출력되는가? 이것으로 char 형이 signed char 형과 unsigned char 중 어떤 형과 동일하다고 말할 수 있는가?
2.2. 다음 코드를 출력하여 결과를 비교하고, 각 결과에 대한 이유를 설명하시오.
#include <stdio.h>
int main(void)
{
printf(“answer1 is the integer %dn”, 9/4);
printf(“answer2 is the real %fn”, 9/4);
printf(“answer3 is the integer %dn”, (double)(9/4));
printf(“answer4 is the real %fn”, (double)(9/4));
printf(“answer5 is the integer %dn”, (double)9/4);
printf(“answer6 is the real %fn”, (double)9/4);
printf(“answer7 is the integer %dn”, (double)9/(double)4);
printf(“answer8 is the real %fn”, (double)9/(double)4);
printf(“answer9 is the integer %dn”, 17.0/3.0);
printf(“answer10 is the real %fn”, 17.0/3.0);
printf(“answer11 is the integer %dn”, (int)(17.0/3.0));
printf(“answer12 is the real %fn”, (int)(17.0/3.0));
printf(“answer13 is the integer %dn”, (int)17.0/3.0);
printf(“answer14 is the real %fn”, (int)17.0/3.0);
printf(“answer15 is the integer %dn”, (int)17.0/(int)3.0);
printf(“answer16 is the real %fn”, (int)17.0/(int)3.0);
return 0;
}
char c = -1;
signed char s = -1;
unsigned char u = -1;
printf("c = %d s = %d u = %dn", c, s, u);
각 변수 c, s, u는 비트 패턴 11111111로 메모리에 저장된다. 사용자 시스템에서는 무엇이 출력되는가? 이것으로 char 형이 signed char 형과 unsigned char 중 어떤 형과 동일하다고 말할 수 있는가?
2.2. 다음 코드를 출력하여 결과를 비교하고, 각 결과에 대한 이유를 설명하시오.
#include <stdio.h>
int main(void)
{
printf(“answer1 is the integer %dn”, 9/4);
printf(“answer2 is the real %fn”, 9/4);
printf(“answer3 is the integer %dn”, (double)(9/4));
printf(“answer4 is the real %fn”, (double)(9/4));
printf(“answer5 is the integer %dn”, (double)9/4);
printf(“answer6 is the real %fn”, (double)9/4);
printf(“answer7 is the integer %dn”, (double)9/(double)4);
printf(“answer8 is the real %fn”, (double)9/(double)4);
printf(“answer9 is the integer %dn”, 17.0/3.0);
printf(“answer10 is the real %fn”, 17.0/3.0);
printf(“answer11 is the integer %dn”, (int)(17.0/3.0));
printf(“answer12 is the real %fn”, (int)(17.0/3.0));
printf(“answer13 is the integer %dn”, (int)17.0/3.0);
printf(“answer14 is the real %fn”, (int)17.0/3.0);
printf(“answer15 is the integer %dn”, (int)17.0/(int)3.0);
printf(“answer16 is the real %fn”, (int)17.0/(int)3.0);
return 0;
}