https://visualstudio.microsoft.com/ko/vs/community/
| 타입 | 표현하는 데이터 | 설명 |
|---|---|---|
| int | 정수(양수,0,음수) | 소수점 X |
| float,double | 부동 소수 | 소수점 O, 둘은 정밀도 차이 |
| char | 단일 문자 | 작은 따옴표로 한 문자 표현 |
| bool | 논리값 | true 와 false |
| string | 문자열 | 쌍 따옴표로 문자열 표현, <string> 헤더 필요 |
| unsigned | 양수 | 음수 입력 불가, 양수 범위가 2배 |
기본적인 대입(=), 사칙연산(+, -, *, /) 그리고 대소비교( >, <, >=, <=, !=, == )가 가능 하다. 주의해야할 점은 대입은 = 이고, 비교는 == 라는 점.
| 연산자 | 간단 코드 예제 | 설명 |
|---|---|---|
| + | int sum = 3 + 5; | 덧셈 (Addition) |
| - | int diff = 10 - 4; | 뺄셈 (Subtraction) |
| * | int product = 6 * 7; | 곱셈 (Multiplication) |
| / | int quotient = 10 / 2; | 나눗셈 (정수 나눗셈 시 몫 반환) |
| % | int mod = 10 % 3; | 나머지 연산 (Modulolo) |
| 연산자 | 간단 코드 예제 | 설명 |
|---|---|---|
| == | bool isEqual = (5 == 5); | 같음 (Equal to) |
| != | bool isNotEqual = (5 != 3); | 다름 (Not equal to) |
| > | bool isGreater = (10 > 3); | 초과 (Greater than) |
| < | bool isLess = (2 < 5); | 미만 (Less than) |
| >= | bool isGreaterOrEqual = (4 >= 4); | 이상 (Greater than or equal to) |
| <= | bool isLessOrEqual = (3 <= 7); | 이하 (Less than or equal to) |
| 연산자 | 간단 코드 예제 | 설명 |
|---|---|---|
| = | int a = 10; | 값 할당 (Assignment) |
| += | a += 5; -> a = a + 5; | 덧셈 후 대입 |
| -= | a -= 3; -> a = a - 3; | 뺄셈 후 대입 |
| *= | a = 2; -> a = a 2; | 곱셈 후 대입 |
| /= | a /= 4; -> a = a / 4; | 나눗셈 후 대입 |
| %= | a %= 2; -> a = a % 2; | 나머지 후 대입 |
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = a++; // 후위 증가: b에 먼저 a를 대입한 후 a 증가
int c = ++a; // 전위 증가: a를 먼저 증가시킨 후 c에 대입
cout << "후위 증가 (b = a++):" << endl;
cout << "b = " << b << ", a = " << a << endl; // b = 5, a = 7
cout << "전위 증가 (c = ++a):" << endl;
cout << "c = " << c << ", a = " << a << endl; // c = 7, a = 7
return 0;
}
void Calc()
{
int num1 = 0;
int num2 = 0;
cout << "첫 번째 숫자를 입력하세요 : ";
cin >> num1;
cout << "두 번째 숫자를 입력하세요 : ";
cin >> num2;
cout << "두 수의 합은 " << num1 + num2 << " 입니다." << endl;
}
배열은 동일한 타입의 여러 값을 한꺼번에 담을 수 있는 자료 구조이다.
예를 들어, 4명의 학생 점수를 저장하려면 네 개의 변수를 만드는 대신, 크기가 4인 배열 하나를 만들면 된다.
만약 네 개의 변수를 만드는 경우 실생활에 비유하면 과일 장사를 하는데 동일한 과일을 하나의 박스에 넣지 않는 것과 같다.
- 배열은 임의 접근이 가능하다.
예를 들어, int arr[4] 와 같이 크기가 4인 정수형 배열의 경우, arr[0]이 맨 처음 원소이고, arr[3]가 제일 마지막 원소이다.- 변수와 마찬가지로 배열은 선언과 동시에 초기화 및 선언 후
추후에 초기화가 모두 가능하다.- 배열은 통째로 복사 및 대입이 되지 않는다.
각 배열의 원소는 일반 변수와 같이 복사 및 대입이 가능하나, 배열 자체를 통째로 대입하는 것은 불가능하다.- 배열의 각 원소는 변수와 동일하므로
cin과cout을 통해 입출력이 가능하다.
#include <iostream>
using namespace std;
// 배열 선언과 초기화 예제
int main() {
// 선언과 동시에 초기화
int arr1[3] = {1, 2, 3};
// 선언 후 개별 원소 초기화
int arr2[3];
arr2[0] = 10;
arr2[1] = 20;
arr2[2] = 30;
// 배열 출력
cout << "arr1: " << arr1[0] << ", " << arr1[1] << ", " << arr1[2] << endl;
cout << "arr2: " << arr2[0] << ", " << arr2[1] << ", " << arr2[2] << endl;
return 0;
}
/*
출력 예시:
arr1: 1, 2, 3
arr2: 10, 20, 30
*/
void GradeManagement() {
int score[5];
int size = sizeof(score) / sizeof(score[0]);
int total; // int total = 0; 으로 선언해야함.
double avg ;
for (int i = 0; i < size; i++) {
cout << "[" << i << "] 학생의 점수를 입력하세요 : ";
cin >> score[i];
}
for (int i = 0; i <size; i++) {
total += score[i];
}
avg = total / size;
cout << "총점은 "<< total<<"점, 평균은 " << avg <<"점 입니다.";
}
int size = sizeof(score) / sizeof(score[0]);
배열 전체의 크기를 배열 요소의 크기 값으로 나눠주면 배열의 크기를 알 수 있다.
이대로 실행하면 오류가 난다.

avg는 멀쩡한데 왜 total은 버그가 나는것인가!
바로 total += score[i]; 이 부분에서 오류가 난 것인데,
int total은 지역 변수라서 자동 변수이고, 자동 변수는 C++에서 초기값이 자동으로 0이 아님.
total += score[i];는total = (쓰레기 값) + score[i];처럼 동작하기 때문에, 정상적인 값이 되지 않음.
컴파일러에 따라 경고나 오류가 뜨기도 한다.
avg = total / size;처럼 나중에 대입만 했기 때문에 초기화된 값을 쓰지 않았음.
즉, 사용 전에 값을 할당해주었기 때문에 초기화 값 (쓰레기 값)을 사용하지 않아 문제가 생기지 않았음.
결론은 지역 변수의 경우 초기값이 0이 아니기 때문에 값을 바로 할당 받는 게 아니라면 0으로 초기화 해줘야 되는데 그냥 오류 방지를 위해 0으로 초기화 해주는 습관이 필요할 거 같다.
내가 왜 이런 실수를 했나 생각해보니 유니티에서 전역 변수를 많이 써서 그 습관이 생긴 거 같다.
| 항목 | 지역 변수 | 전역 변수 |
|---|---|---|
| 선언 위치 | 함수 안 | 함수 바깥 |
| 사용 범위 | 선언된 블록 안에서만 사용 가능 | 프로그램 전체에서 사용 가능 |
| 메모리 할당 | 함수 실행 시 생성, 종료 시 제거 | 프로그램 실행 시 생성, 종료 시 제거 |
| 초기화 필요 | ❗ 반드시 초기화 필요 (자동 초기화 안 됨) | ✅ 자동으로 0으로 초기화됨. |
초기화도 자동으로 해주는 전역 변수가 더 좋아보이는데 왜 지역 변수를 쓸까?
메모리 절약 : 함수 끝나면 사라지니까
코드 관리 용이 : 변수 이름 충돌 방지, 안전한 변수 사용.
버그 방지 : 한정된 범위에서만 사용되어 실수 줄임.