Monday, July 03, 2006
C언어] 이런 경고(Warning)가 나와요: Possibly incorrect assignment... / assignment within conditional expression
C언어에서, if 등의 조건문 속의 ==을 =로 착각해서 잘못 써 놓으면 '확실한 에러'가 아닌 '잘못된 대입 워닝'만 나기에 주의가 필요합니다.
비주얼베이직에서는 조건문이든 변수 대입이든 항상 = 을 사용하지만,
C언어를 포함한 대부분의 언어에서는 == 을 사용해야 하고, 그냥 = 은 '변수 대입'에 사용됩니다.
O: if (i == j) puts("같습니다");
X: if (i = j) puts("같습니다");
치명적인 오타지만, 에러가 나지 않고 그대로 컴파일이 되어 버리기 때문에, 참 골치 아픕니다. C에서는 이런 경우가 많기 때문에 에러 메시지뿐만 아니라 경고(Warning)메시지도 잘 살펴 보아야 합니다.
구체적으로는 이런 경고(Warning)가 나옵니다:
Warning W8060 foo.c 226: Possibly incorrect assignment in function TestFunc
경고: TestFunc() 함수에서, 잘못된 대입이 있는 듯함
또는
warning C4706: assignment within conditional expression
경고: 조건문 속의 대입
비주얼베이직에서는 조건문이든 변수 대입이든 항상 = 을 사용하지만,
C언어를 포함한 대부분의 언어에서는 == 을 사용해야 하고, 그냥 = 은 '변수 대입'에 사용됩니다.
O: if (i == j) puts("같습니다");
X: if (i = j) puts("같습니다");
치명적인 오타지만, 에러가 나지 않고 그대로 컴파일이 되어 버리기 때문에, 참 골치 아픕니다. C에서는 이런 경우가 많기 때문에 에러 메시지뿐만 아니라 경고(Warning)메시지도 잘 살펴 보아야 합니다.
구체적으로는 이런 경고(Warning)가 나옵니다:
Warning W8060 foo.c 226: Possibly incorrect assignment in function TestFunc
경고: TestFunc() 함수에서, 잘못된 대입이 있는 듯함
또는
warning C4706: assignment within conditional expression
경고: 조건문 속의 대입
tag: cpp
C언어 | C/C++ (Visual C++)
if(x == 0)을
if(0 == x)로 쓰시는 분들도 계시더군요.
이 코딩스타일은
if(0 = x)라고 잘못치면 바로 에러나죠.
그런 방법이 있었군요..
(∩_∩)
<< Home