기타 지식

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
0
2021.02.09

와 정말 찾던 자료였어요

0
2021.02.09

프로그래머들은 머릿속으로 논리로 된 레고 조립하고 있다고 보면 되나..

0
2021.02.09
@Reddot

아마 '시발' 이랑 '왜 안 됌?' 2개만 번갈아 가면서 씀

0
2021.02.09

레고 조립하는 사람도 있고, 소설을 쓰는사람도 있고 다양하지

0
2021.02.09

너도 비전공자같은데 뭐 어디까지 할라고 이러고있냐

0
2021.02.09
@최고의만찬

몰라? 그냥 심심할때 마다 싸지를 생각인데

0
2021.02.09

좋다야

0
2021.02.09

20살이 되어서 성인이 되었어요! 군대가자!

0
2021.02.09

니같은놈 놈이 제일 악질이야

내가 씨발 인터넷돌아다니다가 유머사이트에서 프로그램 원리라는 글 봐가지고

와 재미있겠다하고 시작했는데 그새끼만 아니었어도...

회사도 좆같은데 순진하게 끌려가서 야근만하다가 추노하고나니 3년 날아감

개붕이들 이거보고 함부로 시작하지마라

0
2021.02.09
@김망초

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

0

자료형 선언할 필요없는 python을 쓰도록 하자

0
2021.02.09
@파일을찾을수없음

??? : 그렇게 복잡하게 할 필요 없이 파이썬은 한줄로 가능해요

0
2021.02.09

이전에 C를 수업들은 적 있었는데 수업이 끝나고 아무 생각이 없다

기본적인 프로그래밍은 배웠는데 C는 하나도 머리에 안남음. 포인터의 악몽을 제외하고

0
2021.02.09
@번째드립인지

포인터 재미있는데..

C++ 에서 동적할당 하면 기분 째짐

 

int *num = new int();

delete num;

0
2021.02.09
@쿄코

그래서 너가 CE인거야 ㄷㄷ

0
2021.02.09

메모리에 대해서도 설명해주면 좋겠어유

0
2021.02.09
@게드맆망헤라

메모리는 박스를 넣을 수 있는 창고 크기.

0
2021.02.09

이거보고 구글에 입사했어요! 감사합니다!

0

아두이노 한다고 C언어 공부하는데 재밌더라

0
2021.02.09

이글보고 c++가지말길

ㅈ같은언어

0
2021.02.09
@쌍복낙타

이거 구라니까 C++ 많이 배워유~

0
2021.02.09

아 ptsd온다... 고딩3년 대딩3년을 했지만 좆같아서 때려침... 초중딩땐 스타디아해보고 나도 저렇게 내손으로 겜만들어봐야지!! 하고 큰 꿈을 가졌었는데 시발ㅋㅋㅋㅋㅋ

0
2021.02.09

char는 문자형이 아니라 8bit integer 형이고 연산도 물론 int와 동일하게 연산 가능 하다. 통상 'a'등의 표현은 아스키 코드를 의미하고 해당 문자에 해당하는 아스키 코드 수를 말하는거다. 설명이 너무 이상해서 댓글담

0
2021.02.09
@뭐먹고사나

어 그러게? 이전에 수업시간에 덧셈연산 예제 했던 기억이 나네. 이왕 댓글 단김에 물어보고 싶은게

 

int main {void} 였나로 항상 시작해서 그 안에다가 만들었는데, 파이썬 하니까 이런게 없더라고.

근데 저게 도대체 왜 사용하는거고 뭣 때문에 만들어진거야?

0
2021.02.09
@번째드립인지

main은 프로그램이 실행될 때의 진입점의 역할을 하는 중심 축이라고 보면 됨. 파이썬은 c계열과 달리 인터프리터 언어라 줄단위로 실행되기 때문에 별도의 main함수 없이도 실행 가능함. 그렇다고 python에서 main을 안쓰지는 않고 스크립트가 나눠지는 경우 진입점을 명확히 하기 위해 main을 정의해서 사용함.

0
2021.02.09
@뭐먹고사나

오 그렇구나 감사감사!

0
2021.02.09
@뭐먹고사나

물론 그렇긴 한데, 최대한 초보자를 기준으로 한거여서 저렇게 설명함.

연산 부분은 문자와 숫자의 구분을 위해서 저렇게 설명함.

'3' + '5' != 3 + 5 니깐..

 

char 를 문자 전용이라고 설명하는게 더 옳지 않을까?

8bit integer로는 __int8 이 더 알맞은 용도니깐,

문자를 저장하기 위한 용도라고 하는게, 나중에 문자열 배열 진행하기에도 더 편하지 않을까 생각해서 저리 적음

0
2021.02.09
@쿄코

분야마다 다르겠지만 실질적으로 char를 아스키 표현보단 1바이트 변수로 쓰는 경우가 더 많기도 하고 연산이 불가능하다 문자표현 전용이다 라는 표현이 추후 공부하는 사람에게 잘못된 지식을 주는 꼴이 됨. 나중에 오픈소스나 다른 소스코드 활용할때 오해의 여지가 너무 많아서 좋지 않다고 보여짐. __int8이든 int8_t든 다 결국 char의 이름만 재정의하는 꼴이라 그냥 처음부터 명확히 이야기 하는게 좋을거 같음

0
2021.02.09
@뭐먹고사나

오 char 를 1바이트로 쓰는구나..

나는 이름때문에 __int8을 더 많이 쓰거든..

뭐 어쨌든 그렇다면 바꿔볼게!

0
2021.02.09

고맙다 개붕아

이 글 읽고 구글에서 스페이스X로 이직 제의 받았다

0
2021.02.09
@빌런히어로

0
2021.02.09

어차피 구글에서 복사해다 붙여넣기 퍼다 나르는 일만 할텐데 이런거 알아야 됨?

0
2021.02.09
@666666666666666
[삭제 되었습니다]
2021.02.09
@쿄코

무슨말인지 모르겠지만, 알고 싶지도 않게 댓글을 써놨네

0
2021.02.09
@666666666666666

미안 내가 다시 봐도 좀 별로였다.

기본적인 문법정도는 알아야지 복붙해서라도 써먹을 수 있다는 뜻이였어.

0
2021.02.09
@666666666666666

아는 만큼 활용이 가능하기 때문에 알아야함. 자동차 그거 대충 부품사다가 조립하면 되는거 아님? 이라고 해도 부품의 용도 부품간의 상호 균형이나 수정해야할 것들을 알아야 조립이 가능하고 적어도 자동차에 필요한 부품이 뭔지는 알아야 구매를 하니까. 마찬가지로 프로그램도 소스코드가 인터넷에 많다 한들 코드의 용도나 목적에 따라 수정하고 내 프로그램에 맞춰서 사용해야 함 안그러면 컴파일러한데 속사포 랩으로 뚜두러 맞거나 프로그램이 난죽택하고 다운됨

1
2021.02.09

나 애기개붕 JAVA개발함

C++로는 뭐개발하면서 먹고살아?

0
2021.02.09
@전산실김씨

몰라...

0
2021.02.09
@전산실김씨

머신러닝 엔지니어링 쪽에서 일하는데 주베이스는 파이썬쓰고 파이썬이 느리면 c++로 구현한담에 cython으로 포팅할 때 많이 쓰긴 함, 게임쪽도 c++로 구현하는데가 많긴 하고, 근데 상대적으로 자바보다 수요가 적긴한 느낌

0
2021.02.09
@오늘도내일도

자바는 돈이 많든 적든 일단 일이 많아서 좋다 ㅎㅎㅎ

0
2021.02.09
@전산실김씨

일반화 일지도 모르겠지만 c계열 사용하는 사람들은 대부분 시스템 프로그램 작성하는 사람들일거라 생각됨. 나는 전공이 로봇이고 제어관련 일을 하는데 C/C++ 외 언어들은 퍼포먼스가 안나와서 안쓰게됨. 임베디드 펌웨어는 대부분 C만 지원하거나 C++까지만 되는 경우가 많고

0
2021.02.09
@뭐먹고사나

인베디드가 엘레베이터나 에어컨 뭐 이런거 같은거에 들어가는거 코딩하는거야?

0
2021.02.09
@전산실김씨

시스템, OS, 윈도우 프로그래밍, 게임 프로그래밍

 

크게 이 네 분야에서 쓴다고 보면 됨

0
2021.02.09
@숨은음은

나는 내길에 만족하고 하는중

0
2021.02.09
@전산실김씨

갑자기? 니가 물어본 거 답해준거임 ㅇㅇ.. C++로 뭐하냐고 그래서

0
2021.02.09
@숨은음은

아 너무 뜬금없이 내생각 말한거같은데

다 대학다닐때 싫어했던거라 자바에서 웹쪽하는데 만족한다는의미로 말하려던거임

너무 많은걸 생략하고 말해서 오해할법했네...

0
2021.02.09
@전산실김씨

자바로 배포용 윈도우 프로그램이나 게임 만들기는 무리더라.. 그래서 C++ 로 넘어옴

0
2021.02.09
@쿄코

아 위에 중요한거 하나 빠졌는데

 

float형에서 정수를 넣을 수도 있어에서 형변환 빼먹으면 전혀 말이 안되는 소리가 되고...

float에서 정수와 실수간 메모리 차이 있다는 것도 오류야

 

일반적인 int는 4바이트고 float도 4바이트인데 이 둘이 무슨 메모리가 차이나서 구분하는 자료형이냐;;

0
2021.02.09
@숨은음은

어라 소숫점 뒷자리가 0인 정수도 들어가지 않아?

5.0f 같은거.

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
5245 [기타 지식] 중국에서 안드로이드 폰을 사면 안되는 이유? 4 대한민국이탈리아 11 9 시간 전
5244 [기타 지식] 최근 지각변동이 일어나는 국내 항공업계 (수정판) 15 K1A1 23 2 일 전
5243 [기타 지식] 도카이촌 방사능 누출사고 실제 영상 21 ASI 2 7 일 전
5242 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 2부 21 Mtrap 8 7 일 전
5241 [기타 지식] 100년을 시간을 넘어서 유행한 칵테일, 사제락편 - 바텐더 개... 5 지나가는김개붕 1 9 일 전
5240 [기타 지식] 오이...좋아하세요? 오이 칵테일 아이리쉬 메이드편 - 바텐더... 3 지나가는김개붕 2 11 일 전
5239 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 1부 31 Mtrap 13 10 일 전
5238 [기타 지식] 칵테일의 근본, 올드 패션드편 - 바텐더 개붕이의 술 이야기 15 지나가는김개붕 14 11 일 전
5237 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 2부 22 Mtrap 14 11 일 전
5236 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 1부 13 Mtrap 20 11 일 전
5235 [기타 지식] 서부 개척시대에 만들어진 칵테일, 카우보이 그리고 프레리 ... 3 지나가는김개붕 5 16 일 전
5234 [기타 지식] 모던 클래식의 현재를 제시한 칵테일편 - 바텐더 개붕이의 술... 4 지나가는김개붕 2 17 일 전
5233 [기타 지식] 브라질에서 이 칵테일을 다른 술로 만들면 불법이다, 카이피... 5 지나가는김개붕 1 19 일 전
5232 [기타 지식] 럼, 라임, 설탕 그리고 다이키리 편 - 바텐더 개붕이의 술 이... 2 지나가는김개붕 6 19 일 전
5231 [기타 지식] 1999년 도카이촌 방사능누출사고 대량 방사능 피폭 피해자들 ... 9 ASI 5 20 일 전
5230 [기타 지식] 진짜 레시피는 아무도 모르는 칵테일 싱가포르 슬링편 - 바텐... 3 지나가는김개붕 2 20 일 전
5229 [기타 지식] 통계로 보는 연애 상황에서 외모의 중요성 8 개드립에서가장긴... 11 23 일 전
5228 [기타 지식] 추울 수록 단맛이 유행한다, 위스콘신 스타일 올드 패션드편 ... 1 지나가는김개붕 8 24 일 전
5227 [기타 지식] '얼마나 걸릴까?'를 찾는데 걸린 시간은.. 1 동부전선이상무 5 24 일 전
5226 [기타 지식] '누구나 아는' 노래에 대한 이야기 9 동부전선이상무 20 28 일 전