C

C언어를 가르칩니다.

C C언어를 가르칩니다.

signed, unsigned

signed(부호 있음)과 unsigned(부호 없음)을 알아봅니다.

signed, unsigned 자료형

signed

정의

부호가 있는 수입니다. 부호가 있다는 것은 양수 음수 모두 표시할 수 있다는 뜻입니다. 모든 변수는 기본적으로 signed되어 있습니다.

선언
signed int a; //부호 있는 int형 변수a를 선언합니다.
signed b; //부호 있는 int형 변수 b를 선언합니다. 생략하면 자동으로 int가 됩니다.
signed float c; //오류. float형 변수에는 signed를 쓸 수 없습니다.
//그렇다고 float이 unsigned인 것은 아닙니다. 다만 signed, unsigend 키워드를
//같이 쓸 수 없을 뿐입니다.
signed double d; //오류. double형 변수에는 signed를 쓸 수 없습니다.
//float과 같습니다.
signed long e; //부호 있는 long int형 e를 선언합니다.
signed long long f; //부호 있는 long long int 형 f를 선언합니다.
signed short g; // 부호 있는 short int 형 g를 선언합니다.
거의 모든 선언에서 signed는 생략합니다. 부호가 있다는 것을 확실히 명시해야 할 때만(프로그래머에게 알려줘야 할 때만) 사용하세요. 가령, unsigned int형 변수를 많이 쓰는 프로그램에서는 signed 키워드를 쓰지 않으면 프로그래머가 "이것도 unsigned겠지"라고 생각하게 될 수도 있습니다. 그럴 때 signed를 쓰면 됩니다.
활용

음수를 써야 하는 값에 사용합니다. 통장 잔고, 경제 성장률, 등등.

unsigned

정의

부호가 없는 수입니다. 부호가 없다는 것은 음수를 표시할 수 없다는 것을 의미합니다. 다르게 말하면, 음수에 쓸 수 있는 범위를 모두 양수에 쓴다는 얘기입니다. 즉, 양수에서 표시할 수 있는 범위가 늘어납니다.

선언
unsigned int a; //부호 없는 int형 a를 선언합니다.
unsigned float b; //오류. float형은 unsigned가 될 수 없습니다.
unsigned double c; //오류. double형은 unsigned가 될 수 없습니다.
unsigned d;
/* 부호 없는 int형 d를 선언합니다.
   unsigned만 쓰면 자동으로 unsigned int가 됩니다.
*/
unsigned long e; //부호 없는 long int e를 선언합니다.
unsigned long long f; //부호 없는 long long int f를 선언합니다.
unsigned short g; //부호 없는 short int g를 선언합니다.
크기

unsigned가 붙어도 차지하는 메모리는 4바이트로 동일합니다. int의 음수 표시 범위만큼 최대값도 증가합니다.

#include <stdio.h>
#include <limits.h>
int main(void)
{
    printf("unsigned int는 %zd바이트를 차지합니다."sizeof(unsigned int));
    printf("unsigned int의 최대값은 %u입니다.",UINT_MAX);

    return 0;
}
활용
포맷 문자 표기법
unsigned a=9999999;
unsigned long hair=3864231;
unsigned long long years_ago=22358923523;
printf("%u\n",a); //unsigned를 받을 때는 %u 포맷 문자를 사용합니다.
printf("%lu",hair); //unsigned long은 %lu입니다.
printf("%llu",years_ago); //unsigned long long은 %llu입니다.

음수가 될 필요가 없는 변수의 데이터형으로 사용합니다. 게임 레벨이라든지, 수능 등급이라든지요.

댓글

댓글 본문
작성자
비밀번호
버전 관리
truelight
현재 버전
선택 버전
graphittie 자세히 보기