최고의 답변자
C++ 계산 오류 질문

질문
-
값 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 분야 질문이 아니므로 이동합니다.
답변
-
여기서 또 한 가지 첨언하자면...
if (xvt = 1) 과 if (xvt ==1) 은 모두 C/C++ 문법상 적법한 코드이기 때문에
if (xvt = 1) 과 같은 실수를 하더라도 컴파일 시점에 알아낼 수 있는 방법이 없습니다.
그래서 저 같은 경우는 if (1 == xvt) 처럼 습관적으로 상수를 앞에 놓도록 작성합니다.
그러면 if (1 = xvt) 와 같은 잘못된 코드를 작성하였을 때에 컴파일 오류가 나기 때문에 바로 문제를 알아낼 수 있죠.
- 답변으로 표시됨 SMPark82 2015년 9월 18일 금요일 오전 12:06
모든 응답
-
안녕하세요,
if(xvt = 1) 부분을 if(xvt == 1)로 바꾸셔야 됩니다.
밑에 있는 else if 문도 마찬가지입니다.C나 C++에서 같음을 비교하는 연산자는 =가 아니라 ==입니다.
- 답변으로 제안됨 Pope KimMVP 2015년 9월 11일 금요일 오전 4:23
-
안녕하세요,
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 거든요.
- 답변으로 제안됨 Chris OhkMVP 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