언어/C++ 21

[C++] 오류 : E2140) 식에 정수 또는 범위가 지정되지 않은 열거형 형식이 있어야 합니다.

위와 같은 오류가 뜨는 이유는 변수 A, B, C를 선언할 때 실수형 자료형인 float을 사용했기 때문이다. float 타입은 실수를 다루는 자료형으로, % 연산자는 정수형 자료에만 적용할 수 있다.% 연산자는 정수형 나머지 연산을 위한 연산자이다. 따라서 float 자료형에는 사용될 수 없다. 그러므로 오류를 없애려면 float이 아닌 int 타입을 사용해야 한다.  만약 실수로 나머지를 구하고 싶다면?→ fmod 함수를 사용해야 한다. fmod는 두 실수의 나머지를 구하는 함수이다. fmod를 이용한 코드는 아래와 같다. #include #include // fmod 함수를 사용하려면 이 헤더를 포함해야 한다.using namespace std;int main() { float A, B, ..

언어/C++ 2025.03.18

[C++] 자료형 크기

64bit 환경에서 데이터 자료형의 크기와 범위이다. 자료형크기범위논리형bool1 byte (8 bit)0 ~ 1voidvoid--nullpointerdecltype (nullptr)--문자형(signed) char1 byte (8 bit)-128 ~ 127unsigned char1 byte (8 bit)0 ~ 255정수형(signed) short (int)2 byte (16 bit)-32,768 ~ 32,767unsigned short (int)2 byte (16 bit)0 ~ 65,535(signed) int4 byte (32 bit)-2,147,483,648 ~ 2,147,483,647unsigned int4 byte (32 bit)0 ~ 4,294,967,295(signed) long (int)8..

언어/C++ 2025.03.18

[C++] 오류 : E0146) 이니셜라이저 값이 너무 많습니다.

#include using namespace std;int func2(int arr[], int N) { for (int i = 0; i  -> func2({1, 52, 48}, 3); 부분에서 오류 발생  이유: C++ 에서는 배열을 함수의 매개변수로 전달할 때 배열을 직접 초기화할 수 없다. 대신 배열을 매개변수로 전달하기 전, 미리 선언하고 초기화한 다음, 그 배열을 함수에 전달해야 한다.   #include using namespace std;int func2(int arr[], int N){ for (int i = 0; i

언어/C++ 2024.07.15

[C++] string 헤더파일을 include 하지 않아도 잘 실행되는 이유

string 헤더파일을 include 하지 않아도 string 클래스와 멤버함수들까지 에러없이 컴파일 되고 실행이 잘 될 때가 있다. 그 이유가 뭘까? 1. 다른 표준 라이브러리 헤더들 중 하나가 헤더를 내부적으로 포함하고 있는 경우 헤더는 헤더를 포함하고 있어서 헤더를 포함시키지 않아도 string 클래스의 사용이 가능하다. 그 밖에도 다른 표준 라이브러리 헤더들 중 하나가 내부적으로 헤더를 포함하고 있어 사용이 가능할 수 있다. 2. 컴파일러 자체적으로 표준 라이브러리 사용을 제공하는 경우 컴파일러가 기본적으로 C++ 표준 라이브러리를 사용하는 경우, 명시적으로 헤더를 포함시키지 않아도 사용이 가능하다. 하지만, 다른 환경, 다른 컴파일러 등에서는 정상적으로 동작하지 않을 수도 있으며, 암시적으로 다..

언어/C++ 2024.01.28

[C++] vector 최댓값, 최솟값 구하기 (+ 인덱스까지)

먼저, algorithm 헤더를 불러와야 한다. #include algorithm 헤더에 담긴 min_element 함수와 max_element 함수를 사용하면 쉽게 최댓값, 최솟값, 그리고 그 값들의 인덱스 번호까지 구할 수 있다. 1. 최솟값 min_element : 벡터에서 최솟값의 위치를 반환. 최솟값 자체를 구하려면 포인터를 사용하여 값에 접근하여야 함. //최솟값 *min_element (벡터이름.begin(), 벡터이름.end()); //최솟값의 인덱스 min_element ( 벡터이름.begin(), 벡터이름.end() ) - 벡터이름.begin(); //인덱스는 리턴된 벡터의 위치에서 벡터의 시작위치를 빼서 구함 2. 최댓값 max_element : 벡터에서 최댓값의 위치를 반환. 최댓값..

언어/C++ 2024.01.26

[C++] vector 정렬 (오름차순, 내림차순, 마음대로)

먼저, algorithm 헤더를 불러와야 한다. #include 1. 오름차순 정렬 sort (벡터이름.begin(), 벡터이름.end()); 2. 내림차순 정렬 sort(벡터이름.begin(),벡터이름.end(), greater()); /*greater인데 여기서는 int를 예시로 함. greater함수와 vector의 자료형을 맞춰야 정상적으로 정렬이 된다. */ 표준 라이브러리 내에 있는 greater() 라는 비교 함수를 마지막 파라미터로 전달하여, 숫자가 클수록 앞으로 정렬되게 설정해준다. 3. 사용자가 원하는 대로 정렬 sort (벡터이름.begin(), 벡터이름.end(), 사용자가 만든 함수); // bool compare(string a, string b){ return a.size() ..

언어/C++ 2024.01.26

[C++] 오류 : E0142) 식에 대체 포인터 형식이 있어야 하는데 "int" 형식이 있음

백준 1926번 문제를 풀다가 이런 오류가 떠서 왜 그런지 봤는데, 빨간색 밑줄 부분과 노란색 밑줄 부분의 이름을 같게해서 그런 것이었다.  (배열명과 변수명 모두 똑같은 x,y를 이름으로 쓰지말고 배열명은 dx[4] = {0, 0, -1, 1}; dy[4] = {1, -1, 0, 0}; 이렇게 하고 변수명은 int x, int y 같은 방식으로 했어야 했다. ) 배열과 변수는 다르니까 같은 이름을 써도 상관없겠지? 라고 생각하고 똑같은 이름을 사용했는데,배열과 변수가 다르다고 해서 같은 이름을 써도 되는 것은 아니었다.  주의하자. 모든 이름은 다 달라야한다!!

언어/C++ 2024.01.24

[C++] vector 초기화 (1차원, 2차원)

1차원 벡터 vector v1; //기본적인 1차원 벡터 선언 vector v1(3); //크기가 3인 1차원 벡터 선언 vector v1(3,1); //크기가 3이고 초기값이 1인 1차원 벡터 선언 (v1은 벡터의 이름이다. 이름은 사용자가 마음대로 지어주면 된다.) 2차원 벡터 vector v2; //기본적인 2차원 벡터 선언 vector v2(n, vector (m)); //n x m의 2차원 벡터 선언 vector v2(n, vector (m,1)); //초기값이 1인 n x m의 2차원 벡터 선언 (v2는 벡터의 이름이다. 이름은 사용자가 마음대로 지어주면 된다.) vector의 경우, 초기값을 설정해주지 않으면 0으로 초기화 된다.

언어/C++ 2024.01.24