본문 바로가기

스터디/코딩

[ 코딩 도장 : C ] Unit 7. 정수 자료형 사용하기 : 연습문제 / 심사문제

7.7 연습문제 : 정수형 변수 선언과 오버플로우

문제) 다음 소스 코드를 완성하여 0 0 -9223372036854775808이 출력되게 만드세요.

#include <stdio.h>

int main()
{
    char num1 = 256;
    char num2 = 65536;	// char대신 short를 사용해도 가능!
    long long num3 = 9223372036854775808;

    printf("%u %u %lld\n", num1, num2, num3);

    return 0;
}

> 아마 num1이 256이고, num2가 65536인것으로 보아 unsigned char과 unsigned short를 유도한 것 같은데....뭐 정답만 맞으면 되는거 아닝가 ^>*

 

 

7.8 연습문제: 자료형 크기 구하기

문제) 다음 소스 코드를 완성하여 14가 출력되게 만드세요.

#include <stdio.h>

int main()
{
    short num1;
    long long num2;

    printf("%d\n", sizeof(num1) + sizeof(num2) + sizeof(int));

    return 0;
}

 

 

7.9 연습문제: 최댓값 표현하기

문제) 다음 소스 코드를 완성하여 127 32767 2147483647 2147483647 9223372036854775807가 출력되게 만드세요(Visual Studio, Windows).

#include <stdio.h>
#include <limits.h>

int main()
{
    char num1 = CHAR_MAX;
    short num2 = SHRT_MAX;
    int num3 = INT_MAX;
    long num4 = LONG_MAX;
    long long num5 = LLONG_MAX;

    printf("%d %d %d %ld %lld\n", num1, num2, num3, num4, num5);

    return 0;
}

 

 

 

7.10 연습문제: 크기가 표시된 정수 자료형 사용하기

문제) 다음 소스 코드를 완성하여 -128 65535 2147483647 18446744073709551615가 출력되게 만드세요.

#include <stdio.h>
#include <stdint.h>

int main()
{
    int8_t num1 = INT8_MIN;
    uint16_t num2 = UINT16_MAX;
    int32_t num3 = INT32_MAX;
    uint64_t num4 = UINT64_MAX;

    printf("%d %u %d %llu\n", num1, num2, num3, num4);

    return 0;
}

 

 

7.11 심사문제: 정수형 변수 선언과 오버플로우

문제) 다음 소스 코드를 완성하여 0 0 -128이 출력되게 만드세요.

#include <stdio.h> 

int main()
{
    char num1;
    char num2;
    char num3;

    num1 = 65536;
    num2 = 4294967296;
    num3 = 128;

    printf("%u %u %d\n", num1, num2, num3);

    return 0;
}

> 이것도 지정해준 숫자를 보아서...unsigned short와 unsigned int를 유도한 것 같지만.... 조건은 따로 없응께..ㅎ

 

 

7.12 심사문제: 자료형 크기 구하기

문제) 다음 소스 코드를 완성하여 11이 출력되게 만드세요..

#include <stdio.h>

int main()
{
    char num1;
    short num2;

    printf("%d\n", sizeof(num1) + sizeof(num2) + sizeof(long long));

    return 0;
}

 

 

7.13 심사문제: 최솟값 표현하기

문제) 다음 소스 코드를 완성하여 -128 0 -2147483648 0 -9223372036854775808가 출력되게 만드세요.

#include <stdio.h>
#include <limits.h>

int main()
{
    char num1 = CHAR_MIN;
    unsigned short num2 = 0;
    int num3 = INT_MIN;
    unsigned long num4 = 0;
    long long num5 = LLONG_MIN;

    printf("%d %u %d %lu %lld\n", num1, num2, num3, num4, num5);

    return 0;
}

 

 

7.14 심사문제: 크기가 표시된 정수 자료형 사용하기

문제) 다음 소스 코드를 완성하여 -128 65535 0 9223372036854775807가 출력되게 만드세요.

#include <stdio.h>
#include <stdint.h>

int main()
{
    int8_t num1 = INT8_MIN;
    uint16_t num2 = UINT16_MAX;
    uint32_t num3 = 0;
    int64_t num4 = INT64_MAX;

    printf("%d %u %u %lld\n", num1, num2, num3, num4);

    return 0;
}

 

 

>> 초반인데 이 부분이 제일 힘들었다.... 그냥 코딩할때 이렇게 변수의 크기를 생각하면서 하는....경우가 많지 않았어서 그런가보다.... 학교를 다니면서 과제를 하고 무언가할때 그닥 변수의 크기를 생각하며 꼼꼼히 코딩을 하지 않았던 결과가 이렇게 기초가 약해진 결과로 돌아온 것 같다...ㅠㅠ