Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C/C++의 오류

<시간/>

C 또는 C++에서 우리는 다양한 종류의 오류에 직면합니다. 이러한 오류는 5가지 유형으로 분류할 수 있습니다. 다음과 같습니다 -

  • 구문 오류
  • 런타임 오류
  • 링커 오류
  • 논리적 오류
  • 의미적 오류

이러한 오류를 하나씩 살펴보겠습니다 −

구문 오류

이러한 종류의 오류는 C++ 작성 기술이나 구문의 규칙을 위반할 때 발생합니다. 이러한 종류의 오류는 일반적으로 컴파일 전에 컴파일러에 의해 표시됩니다. 때때로 이것을 컴파일 시간 오류라고 합니다.

이 예에서는 한 줄 뒤에 세미콜론을 넣지 않으면 구문 오류가 발생하는 방법을 볼 수 있습니다.

예시

#include<stdio.h>
main() {
   printf("Hello World")
}

출력

Error] expected ';' before '}' token

런타임 오류

이러한 종류의 오류는 프로그램이 실행될 때 발생합니다. 이것은 컴파일 오류가 아니므로 컴파일이 성공적으로 완료됩니다. 숫자를 0으로 나누려고 하면 이 오류를 확인할 수 있습니다.

예시

#include<stdio.h>
main() {
   int x = 52;
   int y = 0;
   printf("Div : %f", x/y);
}

출력

Program crashes during runtime.

링커 오류

이러한 종류의 오류는 프로그램이 성공적으로 컴파일되고 다른 목적 파일을 메인 목적 파일과 연결하려고 할 때 발생합니다. 이 오류가 발생하면 실행 파일이 생성되지 않습니다. 예를 들어 잘못된 함수 프로토타이핑, 잘못된 헤더 파일 등입니다. main()이 Main()으로 작성되면 링크된 오류가 발생합니다.

예시

#include<stdio.h>
main() {
   int x = 52;
   int y = 0;
   printf("Div : %f", x/y);
}

출력

C:\crossdev\src\mingw-w64-v3-git\mingw-w64-crt\crt\crt0_c.cundefined reference to `WinMain'

논리적 오류

때로는 원하는 출력을 얻지 못할 수도 있습니다. 구문 및 기타 사항이 정확하면 일부 논리적 문제로 인해 올바른 출력을 얻지 못할 수도 있습니다. 이를 논리적 오류라고 합니다. 때때로 우리는 루프 뒤에 세미콜론을 넣습니다. 이는 구문상 정확하지만 하나의 빈 루프를 생성합니다. 이 경우 원하는 출력이 표시됩니다.

예시

#include<stdio.h>
main() {
   int i;
   for(i = 0; i<5; i++); {
      printf("Hello World");
   }
}

출력

Here we want the line will be printed five times. But only one time it will be printed for the block of code.

의미 오류

이러한 종류의 오류는 구문상 올바르지만 의미가 없을 때 발생합니다. 이것은 문법적 실수와 같습니다. 대입 연산자의 왼쪽에 어떤 식을 지정하면 의미 오류가 발생할 수 있습니다.

예시

#include<stdio.h>

main() {
   int x, y, z;
   x = 10;
   y = 20;
   x + y = z;
}

출력

[Error] lvalue required as left operand of assignment