코딩 학습/C와 C++

C++ 기초 오답노트 / 기능 정리

이개 2026. 3. 12. 19:49

1. int, float, double, bool 중 자바와 크기가 다를 수 있는 타입은?

정답은 int 야! 🔴

자바는 int가 항상 4바이트로 고정이야. JVM이 보장해줘.

근데 C++은 int 크기가 플랫폼/컴파일러마다 달라질 수 있어.

// 32비트 시스템  → int = 4바이트
// 64비트 시스템  → int = 4 or 8바이트 (컴파일러마다 다름)

// 확인하는 법
std::cout << sizeof(int);     // 4 or 8
std::cout << sizeof(float);   // 4 (이건 어디서나 고정)
std::cout << sizeof(double);  // 8 (이건 어디서나 고정)

 

자바 개발자가 C++ 처음 쓸 때 자주 빠지는 함정이야. 크기를 보장받고 싶으면 int32_t, int64_t 같은 고정 크기 타입을 써. 언리얼도 이 이유 때문에 int32, uint8 같은 자체 타입을 써.

 

9. C++에서 bool 타입의 출력값은?

std::cout << true << " " << false;

 

std::cout << true; // 1

std::cout << false; // 0

 

자바는 System.out.println(true) 하면 true 나오는데, C++은 기본이 1/0 이야. 헷갈리기 쉬운 포인트!

 

 

14. 자바의 null 에 해당하는 C++ 키워드 2가지는?

int* ptr = NULL;     // C 스타일 (옛날 방식)
int* ptr = nullptr;  // C++11 이후 권장 ✅
// 자바의 null이랑 개념은 같아
// 근데 nullptr은 타입 안전성이 있어서 NULL보다 안전해

 

 

20. 아래 코드에서 컴파일 에러가 나는 이유는?

int a = 10;
int& ref = a;
int b = 20;
ref = b;
std::cout << a;

 

사실 이건 에러 아니야, 정상 동작해

int a = 10;
int& ref = a;
int b = 20;
ref = b;         // ref가 b를 참조하는 게 아니라
                 // a에 b의 값(20)을 복사하는 거야!
std::cout << a;  // 20 출력

 

핵심 포인트! ref = b 는 "ref가 b를 가리켜라" 가 아니라 "ref가 가리키는 곳(a)에 b의 값을 넣어라" 야. 참조자는 한번 묶이면 절대 다른 변수로 못 바꿔. 값만 바뀌는 거야.

 

 

 

 

 

약수 찾기

  1. 약수는 곱해서 n이 되는 두 수이기 때문에 항상 쌍으로 존재한다.
  2. C++에서는 #include <math.h> 또는 #include <cmath> 포함시 sqrt(n) 함수로 제곱근을 구할 수 있다.
    1. 하지만, for(int i = 1; i*i <= n; i++)가 더 연산이 적다.
for(int i = 1; i*i <= n; i++){
	// i와 n/i를 찾으면 된다.
    if(n%i == 0){
    	answer += i;
    if(i != n/i) // 완전제곱수는 하나를 제외하고 연산한다.
    	answer += n/i;
    }
}

'코딩 학습 > C와 C++' 카테고리의 다른 글

C++ 기초 - 객체지향 설계  (1) 2026.03.16
C++ 헷갈리는 개념 정리  (0) 2026.03.13
C++ 기초 - 템플릿  (0) 2026.03.11
C++ 기초 - 자원 관리  (0) 2026.03.10
C++ 기초 - Vector, Map  (0) 2026.03.09