C Study 0002

C언어 공부 0002

변수와 자료형

  • 아래 코드는 변수와 자료형이 모두 나타난 코드이다.
#include <stdio.h>

int main()
{
    int a = 1;
    float b = 2.3;
    char c = 'A';
    double sum;

    sum = a + b + c;

    return 0;
}

변수

  • 자료형과 이름으로 이루어진다.
    • 자료형 변수이름; 의 형태가 기본이며, 변수의 선언과 동시에 값을 초기화 하려면 자료형 변수이름 = 값; 의 형태를 이용할 수 있다.
  • 위의 코드에서 a, b, sum이 변수라고 할 수 있다.
    • a와 b는 선언과 동시에 초기화가 되었다.
    • sum은 a + b 한 결과를 갖도록하는 구문으로 코드의 마지막에 값이 할당된다.
  • 변수의 값은 원하는대로 바꿀 수 있다.
  • 변수를 이용하여 프로그램에서 같은 계산을 여러 번 하거나, 중간값을 따로 저장하여 연산에 효율성을 높일 수 있다.

변수의 네이밍 방법

  • 카멜 표기법
    • 낙타의 혹을 닮았다 하여 붙여진 이름이다.
    • 여러 개의 단어가 연결될 때, 첫 단어를 제외한 단어의 첫 문자를 대문자로 표기한다.
      • 예 : minsuJoDevelopmentLog
  • 파스칼 표기법
    • 모든 단어의 첫 문자를 대문자로 표기한다.
      • 예 : MinsuJoDevelopmentLog
  • 스네이크 표기법
    • 구불구불 길게 연결된 모습이 뱀과 닮았다 하여 붙여진 이름이다.
    • 여러 개의 단어가 연결될 때, 모든 단어는 소문자를 이용하며 연결 부위에 ‘_‘를 이용한다.
      • 예 : minsu_jo_development_log
  • 헝가리안 표기법
    • 접두어에 자료형을 붙이는 표기법이다.
      • 예 : strMinsuJoDevelopmentLog

변수의 네이밍 규칙

  • 알파벳, 숫자, 밑줄문자 ‘_‘로 구성한다.
  • 첫번째 문자는 반드시 알파벳 또는 밑줄문자로 구성한다.
  • 대문자와 소문자를 구별한다.
  • 예약어(키워드)와 똑같은 이름은 허용되지 않는다.
    • 예약어 : 고유한 의미를 가지고 있는 특별한 단어이다.
      • auto, double, break, else, case, enum, char, extern, const, float, continue, for, default, goto, do, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while 등이 있다.

변수의 선언 위치

  • 변수는 사용되기 전 선언되어야 한다.

자료형

  • 자료형이란 쉽게 말하면 아래와 같다.
    • 초등학교에는 8~13세의 아이들이, 중학교에는 14~16세의 아이들이 다닌다.
    • 초등학교에는 중학생이, 중학교에는 초등학생이 다닐 수 없다.
  • 즉, 자료형마다 저장할 수 있는 값의 종류나 범위가 다르며, 다른 자료형 끼리는 연산이 불가능하다.
  • 자료형의 크기는 sizeof(자료형 or 변수 or 값)을 이용하여 알 수 있다.

자료형의 종류

자료형 설명 차지하는 저장 공간
(Byte)
값의 표현 범위
정수형 부호있음 short 표현범위가 작은 정수 2 -215   ~   215 - 1
int 일반적인 표현범위의 정수 4 -231   ~   231 - 1
long 표현범위가 큰 정수 4 or 8 -231   ~   231 - 1
부호없음 unsigned short 부호가 없는 short형 정수 2 0   ~   216 - 1
unsigned int 부호가 없는 int형 정수 4 0   ~   232 - 1
unsigned long 부호가 없는 long형 정수 4 or 8 0   ~   232 - 1
문자형 부호있음 char 문자 및 정수 1 -27   ~   27 - 1
부호없음 unsigned char 문자 및 부호가 없는 char형 정수 1 0   ~   28 - 1
부동소수점형 float 단일 정밀도 부동소수점 4 1.2E-38   ~   3.4E38
double 두배 정밀도 부동소수점 8 2.2E-308   ~   1.8E308

언더플로우와 오버플로우

  • 언더플로우(Underflow) : 값의 표현 범위보다 큰 값이 들어가서 일어나는 문제
    • 발생시 최대 표현 범위보다 큰 만큼의 값이 최소 표현 범위에서 더해진다.
  • 오버플로우(Overflow) : 값의 표현 범위보다 작은 값이 들어가서 일어나는 문제
    • 발생시 최소 표현 범위보다 작은 만큼의 값이 최대 표현 범위에서 빼진다.

진법

  • 자료형에 적합한 값을 저장할 때, 다양한 진법을 활용할 수 있다.
  • 진법의 종류
    • 2진법 : 0과 1로 이루어짐
    • 8진법 : 0~7까지의 수로 이루어짐
      • 사용법 : int a = 010;과 같이 사용하며, 8진수 10은 10진수로 8이다.
    • 10진법 : 0~9까지의 수로 이루어짐
    • 16진법 : 0~9, A(=10)~F(=15)까지의 수로 이루어짐
      • 사용법 : int a = 0x10;과 같이 사용하며, 16진수 10은 10진수로 16이다.

지수표기법

  • 지수를 이용하여 값을 저장할 때 사용한다.
  • 다양한 표기 방법
    • 1.23456e4 = 12345.6
    • 1.23456e-3 = 0.00123456
      1. = 2.0
    • .34 = 0.34
    • 2e+10 = 210

서로 다른 자료형끼리의 연산

  • 자동 형변환
    • 데이터의 손실이 적은 쪽으로 일어난다.
      • 이 글 가장 위의 코드를 사용자가 직접 수정해가며 느끼는게 좋다.
  • 강제 형변환
    • 사용자가 명시적으로 자료형을 써주어 일어난다.
      • 예 : int형 a를 float형으로 바꾸려면

문자형

  • 문자 하나를 저장할 수 있다.
    • char c = 'A'; 와 같이 사용한다.
    • 한 문자는 작은따옴표를 이용하여 처리한다.
      • 여러 문자는 큰따옴표를 이용하여야하며, 이는 ‘문자’가 아닌 ‘문자열’이다.

제어문자

  • 아스키코드를 직접 사용하거나, 이스케이프 시퀀스를 사용할 수 있다.
  • 자주 사용되는 제어문자
    • \0 : NULL
    • \t : tab 문자
    • \n : 줄바꿈 문자
    • \\ : 따옴표나 역슬래쉬 등의 일반적인 방법으로 출력되지 않는 기호를 출력하기 위해 사용

Reference

0%