728x90 분류 전체보기389 [C언어][Error] 016. lvalue required as left operand of assignment – 좌변 값이 수정 가능한 값이 아님 C언어에서 대입 연산자(=)는 왼쪽에 반드시 값을 저장할 수 있는 대상(lvalue)이 와야 합니다. 이 오류는 수정할 수 없는 값에 대입을 시도할 때 발생합니다. 예를 들어 상수, 계산식 결과, 함수 호출 결과 등은 메모리 주소를 가지지 않기 때문에 값 변경이 불가능하며, 대입 대상이 될 수 없습니다.많은 초보자들이 연산 결과에 직접 값을 할당하려 시도하거나, 배열 전체 이름처럼 읽기 전용 식별자에 값을 대입하려다 이 오류를 경험합니다.● 오류 예제#include int main() { (3 + 4) = 10; // 오류 발생: 연산 결과는 수정 불가능한 값 return 0;}위 코드에서 (3 + 4)는 값 7로 평가되며, 해당 표현식은 수정 가능한 공간이 아닙니다. 따라서 값을 대입할 수.. 2025. 4. 24. [C언어][Error] 015. subscripted value is neither array nor pointer – 인덱스를 사용할 수 없는 값에 배열 연산 시도 이 오류는 배열 인덱스 연산자([])를 사용할 때, 해당 대상이 배열이나 포인터가 아닌 경우에 발생합니다. C언어에서는 배열 또는 포인터 타입에만 인덱스를 적용할 수 있으며, 정수, 구조체, 연산 결과 등의 값에는 사용할 수 없습니다.실수로 배열처럼 보이지만 실제로는 일반 변수나 상수에 인덱싱을 시도하는 경우 자주 발생합니다. 특히 포인터가 아닌 일반 정수형 변수에 [0], [1] 등을 붙이는 실수를 주의해야 합니다.● 오류 예제#include int main() { int num = 5; printf("%d\n", num[0]); // 오류: num은 배열이 아님 return 0;}위 코드에서 num은 정수형 변수이므로 배열이 아니며, [0]을 사용할 수 없습니다. 컴파일러는 다음과 .. 2025. 4. 24. [C언어][Error] 014. assignment makes pointer from integer without a cast – 정수를 포인터에 대입함 C언어에서 포인터는 메모리 주소를 저장하는 변수이며, 일반적인 정수형 변수와는 다르게 다루어야 합니다. 이 오류는 정수 값을 직접 포인터에 대입하려고 할 때 발생합니다. 즉, 포인터는 주소를 저장해야 하는데, 단순한 정수 값을 대입하면 타입이 일치하지 않아 오류가 발생하는 것입니다. 컴파일러는 정수와 포인터 간 대입이 안전하지 않다고 판단하며, 암묵적 형변환 없이 이 둘을 직접 연결하는 것을 허용하지 않습니다. 일반적으로 변수의 주소를 포인터에 저장하거나, 동적 메모리 할당 결과를 저장하는 방식으로 사용해야 합니다. ● 오류 예제#include int main() { int *ptr; ptr = 100; // 오류 발생: 정수를 포인터에 대입 printf("%p\n", ptr); .. 2025. 4. 24. [C언어][Error] 013. assignment makes integer from pointer without a cast – 포인터를 정수에 대입함 이 오류는 포인터 타입의 값을 정수형 변수에 직접 대입하려고 할 때 발생합니다. C언어에서 포인터는 메모리 주소를 담는 특별한 타입이며, 정수형 변수에 대입하려면 명시적인 형 변환(cast)이 필요합니다. 포인터는 일반적으로 4바이트 또는 8바이트 크기를 가지며, int와 같은 정수형과는 호환되지 않기 때문에 타입이 다르다는 이유로 컴파일러가 오류를 발생시킵니다. 아래는 오류가 발생하는 예시입니다.#include int main() { int *ptr; int num; ptr = # int value = ptr; // 오류 발생: 포인터를 정수에 대입 printf("%d\n", value); return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.err.. 2025. 4. 22. [C언어][Error] 012. ‘return’ with no value, in function returning non-void – 값을 반환해야 하는 함수에서 return 문 없음 이 오류는 반환형이 int, float 등 값을 반환해야 하는 함수에서 return 문이 없거나, return 문이 존재하더라도 반환할 값이 없는 경우 발생합니다. C언어에서는 함수의 선언과 정의에서 명시한 반환형에 따라 반드시 적절한 값을 return해야 합니다.특히 조건문 내에서 일부 분기만 return 값을 포함하고, 다른 분기에는 return 값이 없을 경우에도 이 오류가 발생할 수 있습니다.다음은 오류가 발생하는 예시입니다.#include int getValue(int flag) { if (flag) return 1; // return 문 없음}int main() { int result = getValue(0); printf("%d\n", result); .. 2025. 4. 22. [C언어][Error] 011. ‘return’ with a value, in function returning void – void 함수에서 값을 반환함 이 오류는 반환형이 void인 함수에서 return문을 사용할 때, 값을 함께 반환하려고 할 경우 발생합니다. void 함수는 값을 반환하지 않는 함수이므로, return 문에는 아무 값도 포함되지 않아야 합니다. 반환형이 void인 함수에 return 뒤에 값을 넣으면 컴파일러는 이 동작이 잘못되었다고 판단하고 오류를 발생시킵니다. 다음은 오류가 발생하는 잘못된 예시입니다.#include void greet() { return 1; // 오류: void 함수는 값을 반환할 수 없음}int main() { greet(); return 0;}컴파일 시 다음과 같은 오류가 출력됩니다.error: ‘return’ with a value, in function returning void 정상적.. 2025. 4. 22. 이전 1 ··· 49 50 51 52 53 54 55 ··· 65 다음 728x90