[c언어 기초]

우리가 아는 C언어

[c언어 기초] 우리가 아는 C언어

문자열형 변수와 논리변수

변수와 실수 그리고 자료형의 이해

문자열형 변수

문자열형 변수는 문자형 변수와 유사하지만 저장과 계산의 효율성을 위해 몇 가지 규칙이 포함되어 있습니다.

아래의 코드를 직접 작성하고 실행해 봅시다.

#include <stdio.h> 
main () 
{ 
    char a[5] = { 'K', 'O', 'R', 'E', 'A',}; 
    printf ( "%c\n", a[1]); 
    printf ( "%s\n", a); 
    char b[6] = { 'K', 'O', 'R', 'E', 'A', '\0'}; 
    printf ( "%s\n", b); 
    char c[6] = "KOREA"; 
    printf ( "%s\n", c); 
}

  실행결과

위 프로그램을 실행하면 일정한 메모리 공간에 해당하는 문자를 출력합니다.

  • 5행에서 a[1]은 ‘O’를 출력하게 됩니다. 따라서 a[0]는 ‘K’, a[2]는 ‘R’이라는 것을 알 수 있죠.
  • 6행에서 a를 출력하면 “KOREA”를 모두 출력하게 됩니다. 하지만 우리가 지정한 a[5]는 7행과 달리 종료 문자 없이 출력되므로, ‘K’에서 시작하지만 끝을 알 수 없기 때문에 다른 문자들이 함께 출력됩니다.
  • 7행은 b[6] 문자열형 변수에 문자열형 변수 값의 끝을 의미하는 종료(null)문자 ‘\0’이 포함되어 8행에서 정확한 결과가 출력됩니다. 또한 종료 문자를 널(null)문자라고 불르기도 합니다.
  • 9행은 입력의 불편함을 막기 위해 출력할 문자를 모두 입력하는 방법으로, 널 문자가 자동적으로 입력됩니다.

문자열형 변수는 여러 문자를 저장하기 위해서 여러 개의 메모리 공간을 연속적으로 할당받아 한 문자씩 저장하게 됩니다.(a[ ], b[ ]등) 문자열형 변수를 저장할 때는 변수명 뒤에 필요한 공간의 크키를 적어야 하는데, 저장하고자 하는 문자열 상수의 길이보다 하나 큰 공간을 할당해야합니다.
(즉 KOREA일 경우 a[5]가 아닌 종료문자가 포함될 수 있도록 a[6]이라고 해야 합니다.)

논리변수

C 언어에서는 ‘참’과 ‘거짓’의 논리 상수값을 저장하는 변수를 사용할 수 있습니다. 일반적으로 논리값은 ‘크다’, ‘작다’와 같은 비교 연산의 결과이죠. 

아래의 코드를 직접 작성하고 실행해 봅시다.

#include <stdio.h> 
#include <stdbool.h> 
main () 
{ 
    bool a = false; 
    bool b = 25; 
    printf ( "%d %d \n", a, 0); 
    printf ( "%d %d \n", b, true); 
}
실행결과
어? 헤더 파일이 2개가 사용되었네요? 또한 자료형이 int나 char 대신 bool이 사용되었습니다.
  • bool자료형을 사용하기 위해서 헤더 파일 #include <stdbool.h>가 필요합니다.
  • bool은 논리 자료형 이라고도 하며 참과 거짓을 나타내는 데 사용합니다.
  • 5행에서 논리 변수 a에 거짓(false, 0)이 저장됩니다.
  • 6행에서 b에는 25를 저장하였지만 논리 변수에 저장할 때 1(true)로 바꾸어 저장됩니다. 따라서 6행과 7행에서 각각 ‘0, 0’과 ‘1, 1’이 출력되죠.
  • 논리값을 의미하는 논리 상수인 참(true), 거짓(false)은 1(참) 또는 0(거짓)으로 바뀌어 저장되며, 0 이외의 모든 수는 참(true)으로 인식됩니다.

#include <stdbool.h> – bool, true, false가 정의된 헤더 파일

다음 토픽에서는 변수 이름의 작성 규칙과 C프로그램의 기본구조에 대해 알아봅시다.

 

 

 

댓글

댓글 본문
  1. 강동혁
    저도 그렇게 나왔는데 업데이트된 프로그램상에서 자동으로 수정되는 기능이 추가된건 같습니다.
    대화보기
    • char a[5] = { 'K', 'O', 'R', 'E', 'A',};
      printf ( "%s\n", a); //이 부분의 출력값도
      KOREA"가 아니라 다른 것과 마찬가지로 KOREA 라고 나왔습니다 ㅠㅠ
      혹시 버전이 다르면 결과값이 달라질수도있나요...?
      clang version 7.0.0-3~ubuntu0.18.04.1 (tags/RELEASE_700/final)
    • 잘봤습니다!
    • 어흥zz
      감사합니다
    버전 관리
    life knowledge
    현재 버전
    선택 버전
    graphittie 자세히 보기