기타 지식

C++ 기초) 변수에 대해 배워보자!

안녕 개붕이들아

오늘도 뭔가 심심해서 글을 써볼까 생각중이야.

 

이번에는 지난번에 말한 것 처럼 변수에 대해서 배워보자.

 

일단 변수가 뭐냐?

변수는 상자야.

근데 이름이 있는 상자야.

즉, 값을 보관할 수 있는거지.

그럼 이제 변수를 만들어보자.

 

변수를 선언하는 기본적인 형태는 이렇게 돼.

자료형 변수이름;

간단하지?

 

int num;

그럼 위에 있는 변수는 뭔지 한번 분석해보자.

 

int는 자료형이야.

자료형이 뭔지는 곧 배워볼게.

 

num은 변수 이름이야.

즉 상자의 이름이지.

 

그럼 이 변수에 값은 어떻게 넣을까?

간단해!

 

변수이름 = 값;

이렇게 써주면 문제 해결이야!

 

예를 들어서 num = 34; 라고 적혀있으면,

num 이라는 변수에 34라는 값을 넣는다.

라는 뜻이야.

 

그럼 이제 자료형이 뭔지 한번 알아보자.

자료형은 변수(상자) 안에 들어갈 수 있는 물건의 종류에 대해 나타내.

 

그럼 자료형들을 한번 보자.

구분 자료형 크기 범위
기본형 void
문자형 (signed) char 1 byte -128 ~ 127
unsigned char 1 byte 0 ~ 255
wchar_t 2 byte 0 ~ 65,535
정수형 bool 1 byte 0 ~ 1
(signed) short (int) 2 byte -32,768 ~ 32,767
unsigned short (int) 4 byte 0 ~ 65,535
(signed) int 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned int 4 byte 0 ~ 4,294,967,295
(signed) long (int) 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned long (int) 4 byte 0 ~ 4,294,967,295
__int8 1 byte -128 ~ 127
__int16 2 byte -32,768 ~ 32,767
__int32 4 byte -2,147,483,648 ~ 2,147,483,647
__int64 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float 4 byte 3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits)
(long) double 8 byte 1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)

 

이야 뭔가 엄청 복잡하다.

뭐가 많긴 한데, 일단 자주 사용하는것들 위주로 알아보자.

 

int 형

이건 프로그래밍 하면서 가장 많이 사용할 자료형이야.

int는 integer (정수) 의 약자야. 

즉, 말 그대로 int 형의 변수에는 숫자를 넣을 수 있어.

7645, -35, 0, 454

같은거 말야.

근데 소수는 못넣어.

 

int num;

num = 1234;

이런식으로 사용 가능해!

 

float 형

이건 소수를 의미해.

float 형의 변수에는 소수를 넣을 수 있지!

주의해야할건 소수를 표시할 때, 5.45f 같은 식으로 적어줘야돼.

 

float dec;

dec = 3.14;

이런식으로 사용 가능해!

 

double 형

이건 좀 더 자세한 소수를 표시할 때 쓰는거야.

3.5453523675.. 같은거 있잖아

그런 큰 소수까지 저장 가능해.

근데 이건 큰 소수까지 저장 가능한만큼 메모리를 많이 잡아먹어.

근데 솔직히 그런거 큰 차이 안나거든, 그러니깐 그냥 맘에 드는걸로 써.

 

double dub;

dub = 3.141592;

미안 내가 파이 자릿수를 이거보다 더 많이 몰라서 여기까지만 쓸게.

어쨌든 긴 소수를 저장할 수 있어. 

 

bool 형

bool은 boolean 의 약자야.

그게 뭔 뜻이냐고?

0과 1을 의미해.

다른 말로는 참과 거짓이지!

bool 형에는 true와 false 값만 넣을 수 있어.

즉, 이 변수에는 true 나 false 또는, 0이나 1을 넣을 수 있어.

 

bool isGaeBungEstupid;

isGaeBungEstupid = true;

이런식으로 사용 가능해!

 

char 형

이건 character (문자) 의 약자야

즉, 문자를 저장할 수 있어.

근데 문자라고 해봤자 그냥 영어랑 기호랑 숫자정도 넣을 수 있다고 생각하면 돼.

어라? 근데 숫자가 들어간다고?

그럼 int랑 뭔 차이지?

 

int 형은 엄청 커.

근데 char형은 작아.

127 이상 -128 이하 인 숫자는 넣을 수 없거든..

그래서 주로 문자를 담거나, 작은 크기의 정수를 넣을 때 사용하지.

 

C++ 에서는 문자를 ' ' 를 이용해서 구분해.

 

'D' 라고 적혀있으면, 이건 문자 D 라는 뜻이야.

'9' 라고 적혀있으면, 이건 문자 9 라는 뜻이지.

즉, 9랑 '9' 는 다르다는거야.

 

어쨌든, 이건

char bloodType;

bloodType = 'O';

같이 사용 가능해.

 

std::string 형

이건 iostream 라이브러리에 있는것중에 하나인데,

정말 많이 쓰는거여서 알고있는게 좋아.

이건 문자열 이라는 뜻이야.

즉, "안녕 나는 개붕이야!" 같은걸 저장할 수 있다는거지.

 

전에 말했다싶이, std::string 은 std 라는 라이브러리에 있는 명령어들 중에 string 이라는 명령어를 가져온다는 뜻이야.

이건

std::string str;

str = "Hello, DogDrip World!";

같이 사용해.

 

아까 문자에서 사용한 것 처럼,

" " 은 문자열을 표시하기 위한 기호같은거야.

문자에서는 작은따옴표, 문자열에서는 큰 따옴표.

잘 외워봐!

 

근데말야...

항상 변수 선언하고 값 저장하고 하는거 귀찮지 않아?

그래서 나온게 있어!

바로..

자료형 변수이름 = 값;

이야!

그냥 한번에 합쳐버린거지

뭐 이것도 기억하고 있어.

 

자 그럼 이제 한번 응용해보자.

 

#include <iostream>

 

int main (void) {

    std::string name = "승희";

    int age = 28;

    float grade = 98.58f;

    bool isVirgin = true;

    char sm = 'S';

 

    std::cout << name << "의 나이는 " << age << "살 이며, 성적은 " << grade << "점, 성적 취향은 " << sm << ", 그리고 동정 여부는 " << isVirgin << " 입니다." << std::endl;

 

    return 0;

}

 

이걸 실행하면 

승희의 나이는 28살 이며, 성적은 98.58점, 성적 취향은 S, 그리고 동정 여부는 1 입니다.

라고 출력돼.

 

그럼 코드들에 설명을 붙여보자.

// 을 하면 주석이라는게 작성 가능해.

 

즉 // 뒤에 오는 글자들은 전부 무시된다는거야.

이걸로 설명을 달 때 자주 사용해.

 

#include <iostream> //iostream 라이브러리 불러오기

 

int main (void) { //main 문

    std::string name = "승희"; //name 이라는 문자열 변수를 만들고, 값은 "승희"로 지정

    int age = 28; //age 라는 정수 변수를 만들고, 값은 28로 지정

    float grade = 98.58f; //grade 라는 소수 변수를 만들고, 값은 98.58로 지정. (f는 float 형이기 때문에 사용한다.)

    bool isVirgin = true; //isVirgin 이라는 참/거짓 변수를 만들고, 값은 true (참) 으로 지정

    char sm = 'S'; //sm 이라는 변수를 만들고, 값은 'S'로 지정

 

    std::cout << name << "의 나이는 " << age << "살 이며, 성적은 " << grade << "점, 성적 취향은 " << sm << ", 그리고 동정 여부는 : " << isVirgin << " 입니다." << std::endl;

 

    return 0;

}

 

 

짜잔!

이제 좀 프로그래머 다워졌어.

주석을 작성해놓으면 너가 퇴사한 후에 들어온 사람이 니 코드를 좀 더 쉽게 이해할 수 있을거야!

 

그러고보니 저 긴 std::cout 이 신경쓰이네

이것도 설명해보자.

 

<< 은 마치 연결시켜주는 느낌이라고 생각하면 돼.

std::cout << "안녕" << "하세요" << std::endl;

처럼 사용할 수도 있지.

 

여기에 변수 이름을 넣으면 변수의 값이 알아서 출력돼!

int num = 1234;

std::cout << num << std::endl;

이렇게 하면 1234 가 출력되겠지!

 

이런 점들을 이용해서 아까의 그 긴 std::cout 을 만들 수 있었던거지.

int age = 34;

std::cout << "나이 : " << age << std::endl;

같은 느낌이지.

 

그러고보니 가장 중요한걸 말 안해준 것 같네..

변수값은 프로그램이 실행되는 도중에 변경 가능해.

예를 들어서 

int num = 12;

num = 34;

num = 56;

 

이렇게 해주면,

int num = 12; //이 시점에서는 12

num = 34; //이 시점에서는 34

num = 56; //이 시점에서는 56

 

즉, 상자에 들어가는 물건을 도중에 바꾸는게 가능한것 처럼,

변수도 값을 도중에 변경하는게 가능하다는거지!

 

그럼 마지막으로 숙제를 내줄테니, 이거를 읽고있을 정도로 할 짓이 없는 개붕이들은 풀어서 댓글로 달아봐.

 

1. 해당 코드의 실행 결과를 적으시오. (1점)

#include <iostream>

 

int main (void) {

    int age = 19;

    std::cout << "개붕이의 나이는 " << age << "살 입니다." << std::endl;

    std::cout << "어라? 갑자기 1년이 지나버렸어요!" << std::endl;

    age = 20;

 

    std::cout << "개붕이의 나이는 이제 " << age << "살 입니다." << std::endl;

    std::cout << "개붕이가 벌써 성인이에요! 이제 자유에요!" << std::endl;

    return 0;

}

68개의 댓글

2021.02.09
@쿄코

그건 이미 정수가 아님 실수지

니가 그렇게 지정해도 저장된 내용을 보면

 

5.000000000000000000000000000097

 

이런 식으로 저장됨

0
2021.02.09
@숨은음은

다시 생각해보니 그래서 지우고 옴

고마워!

0
2021.02.09
@쿄코

그리고 소수로 저장할거면 애당초 5.4라고만 적어도 돼

f를 박는건 정수로 썼는데 실수로 인정하고 싶을 때임

 

5.4 => 5.40x float

5f => 5.0x float

5 => 5 int

 

이런 식

0
2021.02.09
@숨은음은

그건 아닌 것 같은데...?

C++에서는 기본으로 소수는 double로 인식하잖아.

그래서 f를 붙여서 float 범위 소수라고 알려주는거로 알고있었는데..

0
2021.02.09
@쿄코

아차차

 

근데 빼고 해도 C++은 자동형변환해주니까 크게 문제는 없을 듯

C#은 시발 형변환 자동으로 안해줘서 개가틈

0
2021.02.09
@숨은음은

ㅋㅋㅋㅋㅋㅋㅋ

 

0
2021.02.09
@전산실김씨

아무래도 C나 C++이 쓰기는 어렵지만 그만큼 로우레벨 언어라서 속도가 빠르거든.

퍼포먼스가 중요시되는 쪽은 대부분 C/C++ 쓴다고 보면 돼.

 

너가 만족하는대로 살면되지 뭐 ㅎㅎ C++ 꼭 해야하는 것도 아닌데

0
2021.02.09

정렬이 좀 빨라졌어요.

 


void quick_sort(int list[], int left, int right)
{  
    int q;
    
    if(left<right)
    {
        q=partition(list, left, right);
        quick_sort(list, left, q-1);
        quick_sort(list, q+1, right);
    }
}

0
2021.02.09

아 그래서 포인터가 뭐냐고

0
2021.02.09
@덕이진리

상자 주소

0
2021.02.09

ㅇㄷㅇㄷ

0
2021.02.09

Char 형에 작은 정수를 담니...?

어디서 코딩하길래 char 에 정수형을 담아두니...?

0
2021.02.09
@일째 밤샘중

-128 에서 127까지 담겨

0
2021.02.10
@쿄코

담기는거 알지;;; 정수형을 쓸거면 _int8을 쓰면 되지 혼란을 야기하기 위해서 char 에다가, 정수형을 담는 이유가 뭐냐는거지

위에 설명에도 너가, char는 문자를 위한 변수형이라고 기재하고 혼란스럽게 char 에 정수형을 담는다고 말했는데, 어디서 코딩하길래 그런 혼란스러운 코딩스타일을 쓰고 있냐는거지

0
2021.02.10
@일째 밤샘중

그렇게 말하니 또 그렇네..

문자만을 위한 변수라고 했을때 댓글로 숫자도 저장 가능하다고 뭐라 했었거든...

나도 개인적으로 경우에 따라서, 1바이트를 표현할때는 __int8 을 사용해야한다고 생각.

0
@일째 밤샘중

8비트 단위로 통신할때 담아둡니다..

0
2021.02.10
@중복은붐업부터박고시작

왜 _int8에 안 담고, 굳이 char로 담아서 통신하나여?

통신하는 쪽의 관례인가여? 나는 임베디드쪽은 한번도 경험 안 해봐서 관례를 모름

0
@일째 밤샘중

나는 int8이라 명시하는걸 선호하긴하는데, 다른코드들 돌아다니는거보면 그냥 char에 담아버리는 경우 많음

이미지의경우 걍 unsigned char로 담기도하고 어차피 int8이나 char나 typedef 관계니까

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
5227 [기타 지식] 카우치 사건은 정말 인디 음악을 끝장냈는가? 9 프라이먼 6 4 시간 전
5226 [기타 지식] 알코올 중독에 빠질 수 있는 칵테일, 브랜디 알렉산더편 - 바... 1 지나가는김개붕 4 1 일 전
5225 [기타 지식] 세계에서 제일 잘 팔리는 칵테일 중 하나, 위스키 사워편 - ... 2 지나가는김개붕 3 1 일 전
5224 [기타 지식] 왜 나는 독일을 포기하고 캐나다로 왔는가 26 상온초전도체 9 1 일 전
5223 [기타 지식] 독한 칵테일의 대표, 파우스트편 - 바텐더 개붕이의 술 이야기 5 지나가는김개붕 2 2 일 전
5222 [기타 지식] 칵테일에도 아메리카노가 있다. 편 - 바텐더 개붕이의 술 이야기 6 지나가는김개붕 6 4 일 전
5221 [기타 지식] 미국은 왜 틱톡을 분쇄하려 하는가? 14 K1A1 29 13 일 전
5220 [기타 지식] 아마도, 미국에서 가장 사랑 받는 칵테일 마르가리타편 - 바... 7 지나가는김개붕 9 13 일 전
5219 [기타 지식] 카이저라이히 다큐멘터리 E07. 왕관과 초승달 3 김팽달 0 16 일 전
5218 [기타 지식] 1편보다 나은 2편, 콥스 리바이버#2 편 - 바텐더 개붕이의 술... 1 지나가는김개붕 6 17 일 전
5217 [기타 지식] 애플 잭을 언급했으니 나오는 칵테일, 잭 로즈 편 - 바텐더 ... 1 지나가는김개붕 3 19 일 전
5216 [기타 지식] 얼려서 만드는 술, 애플잭편 - 바텐더 개붕이의 술 이야기 11 지나가는김개붕 6 20 일 전
5215 [기타 지식] 부드러운 입문용 버번, 우드포드 리저브 - 바텐더 개붕이의 ... 13 지나가는김개붕 5 21 일 전
5214 [기타 지식] 카이저라이히 다큐멘터리 E06. 영원한 제국 김팽달 1 25 일 전
5213 [기타 지식] 카이저라이히 다큐멘터리 E03. 불타는 브리튼 2 김팽달 3 28 일 전
5212 [기타 지식] 카이저라이히 다큐멘터리 E02. 유럽의 붉은 새벽 김팽달 1 28 일 전
5211 [기타 지식] 미술은 부자만 할 수 있을까? 에 대한 현실적인 이야기 8 알라신1 10 28 일 전
5210 [기타 지식] 엄벌주의에 반대하는 6가지 이유 78 술콩 38 2024.02.24
5209 [기타 지식] 유명하고 인기도 많지만 잘 안 만드는 칵테일, 피나 콜라다 ... 7 지나가는김개붕 9 2024.02.24
5208 [기타 지식] 뉴올리언스, 그리고 칵테일편 - 바텐더 개붕이의 술 이야기 14 지나가는김개붕 11 2024.02.20