none
C++ 계산 오류 질문 RRS feed

  • 질문

  • 값 3만 나와요 뭐가 문제죠?

    #include <stdio.h>
    #include <stdlib.h>

    int main(void)

    {

    int fst;
    int sce;
    int xvt;
    int tal;

    {

    printf("첫째 수 입력 : ");
    scanf("%d",&fst);
    printf("둘째 수 입력 : ");
    scanf("%d",&sce);
    printf("1. *, 2. -, 3. +, 4. /");
    printf("연산 식 선택 : ");
    scanf("%d",&xvt);
    if(xvt = 1)
    {
    tal = fst * sce;
    }
    else if(xvt = 2)
    {
    tal = fst - sce;
    }
    else if(xvt = 3)
    {

    tal = fst + sce;

    }

    else if(xvt =4)

    {

    tal = fst / sce;

    }

    else

    {

    tal = 0;

    }
    printf("값 %d\n",tal);

    system("pause");
    return 0;
     }
    }


    • 편집됨 Lee hyungsuck 2014년 1월 3일 금요일 오전 5:04
    • 이동됨 HONGJU JUNGMVP 2015년 9월 11일 금요일 오전 4:02 Azure 분야 질문이 아니므로 이동합니다.
    2014년 1월 3일 금요일 오전 4:42

답변

  • 여기서 또 한 가지 첨언하자면...

    if (xvt = 1) 과 if (xvt ==1) 은 모두 C/C++ 문법상 적법한 코드이기 때문에

    if (xvt = 1) 과 같은 실수를 하더라도 컴파일 시점에 알아낼 수 있는 방법이 없습니다.

    그래서 저 같은 경우는 if (1 == xvt) 처럼 습관적으로 상수를 앞에 놓도록 작성합니다.

    그러면 if (1 = xvt) 와 같은 잘못된 코드를 작성하였을 때에 컴파일 오류가 나기 때문에 바로 문제를 알아낼 수 있죠.

    • 답변으로 표시됨 SMPark82 2015년 9월 18일 금요일 오전 12:06
    2015년 9월 11일 금요일 오전 5:59

모든 응답

  • 안녕하세요,

    if(xvt = 1) 부분을 if(xvt == 1)로 바꾸셔야 됩니다.
    밑에 있는 else if 문도 마찬가지입니다.

    C나 C++에서 같음을 비교하는 연산자는 =가 아니라 ==입니다.

    • 답변으로 제안됨 Pope KimMVP 2015년 9월 11일 금요일 오전 4:23
    2015년 9월 11일 금요일 오전 4:00
  • 안녕하세요,

    if(xvt = 1) 부분을 if(xvt == 1)로 바꾸셔야 됩니다.
    밑에 있는 else if 문도 마찬가지입니다.

    C나 C++에서 같음을 비교하는 연산자는 =가 아니라 ==입니다.

    여기에 추가 설명을 하자면...

    1) xvt = 1 을 하면 xvt에 1이 대입됩니다. (현재 xvt값은 1)

    2) 이것을 if안에 넣으면 if(xvt)와 같고.. 0이 아닌 값이 if문 안에 들어가면 이건 true라고 처리됩니다. C++에서 0인 숫자 == false 0이 아닌 숫자 == true 거든요.


    My Blog

    • 답변으로 제안됨 Chris OhkMVP 2015년 9월 11일 금요일 오전 5:17
    2015년 9월 11일 금요일 오전 4:22
  • 보충 설명 감사합니다 :)
    2015년 9월 11일 금요일 오전 5:17
  • 여기서 또 한 가지 첨언하자면...

    if (xvt = 1) 과 if (xvt ==1) 은 모두 C/C++ 문법상 적법한 코드이기 때문에

    if (xvt = 1) 과 같은 실수를 하더라도 컴파일 시점에 알아낼 수 있는 방법이 없습니다.

    그래서 저 같은 경우는 if (1 == xvt) 처럼 습관적으로 상수를 앞에 놓도록 작성합니다.

    그러면 if (1 = xvt) 와 같은 잘못된 코드를 작성하였을 때에 컴파일 오류가 나기 때문에 바로 문제를 알아낼 수 있죠.

    • 답변으로 표시됨 SMPark82 2015년 9월 18일 금요일 오전 12:06
    2015년 9월 11일 금요일 오전 5:59