int fill_array(double ar[], int limit)
{
using namespace std;
double temp;
int i;
for (i = 0; i < limit; i++)
{
cout << (i + 1) << "번 부동산의 가격: $";
cin >> temp;
if (!cin) // 입력 불량
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "입력 불량; 입력 과정을 끝내겠습니다.\n";
break;
}
else if (temp < 0) // 루프 탈출을 위한 음수 값
break;
ar[i] = temp;
}
return i;
}
빨간색 부분인데..부동산가격 입력하는 함수에여 근데 저 조건부가 어찌돌아가는지 몰라서 실행해보니
당연하겠지만 양의정수 이외의 수나 문자등을 입력하면 저 if문이 실행되는데 !cin에서 이건 어떻게 검사를하는거에요?
데이터형을 검사하나..?cin의 뭘가지고 검사를 하는거죠? if(!temp)도아니고 if(!cin)일케쓰니까 cin을 ㅇ뭘 어떻게 해석해야할지 몰겠음..
더 좆같은건 ㅊ책에서도 그런 설명이 없어여 힝
cin은 객체로써 연산자 오버로딩이란건 아실 것임. 그걸 생각해보셔요
standard input 함수라 님이 맨 윗줄에서 써놓은 헤더파일에서 예외처리부분을 갖고있음. 이게 이해가 안되면, 일단 외우셈
객체로서의 연산자 오버로딩이라는걸 알 레벨에서 저런 쉬운 코드를 짜게하진않음
별바람, ㅇㅇ// 쟌넨! c++기초플러스는 함수 기초파트에 그걸 예제로 쓰고있답니다!
별바람// 그럼 헤더파일 까보면 cin에서 ! 이 연산자도 오버로딩 해놓고 있다는 말인가여
!연산자는 기본 연산자고, cin내부는 오류면 0 리턴하고 참이면 1리턴하도록 되어있음
오버로딩한 연산자는 >> 임.
아아..오버로딩한 연산자는 >>인건 알겠는데 원래 그 본문의 소스에서 빨간색 부분을 보면 if(!cin)일케 표현을 해놨던데..어차피 temp의 입력값을 검사하는거니까 if에 temp를 쓰면안되나여
조건식에 저렇게 cin을 쓰면 데이터형에 맞게 입력을 했는지 안했는지 검사하나여 if가
감사합니다 일단 돌려보고올게요 형님 기다리삼..
돌려보고 왔는데 if문 조건을 temp로 바꾸고 돌렸을때는 문자로 입력해도 바로 프로그램을 종료해버리는 출력을 띄우는데,cin을 했을때는 if문 안 몸체를 실행하네요..이 차이가 나는데 왜때문인지는 잘몰겠네요흐규
cin 같은 이미 정의된 표준 입출력 함수의 경우, 연산자 오버로딩을 통해 temp에게 값을 전달 해주는 것. 헤더에 정의되어 있는 이러한 함수를 보면 존나 복잡하지만, 컴퓨터의 중요한 원리인 메모리 로딩에 관련하여. 그 메모리 주소값에 대한 접근을 의미함. 그렇다면 키보드로부터 받은 그 입력 값은.. 단순히 char 형식의 글자가 아니라 메모리 적재, 처리, 전달의 과정을 모두 생각해야하는데 이를 아주 아주 쉽게 만들어준게 cin이란 함수이자 객체
아주아주 간단한 char,String으로 변환해서 temp에게 준 연산자 오버로딩의 역할.. 그렇다면 cin이 객체로써 받은 입력값 자체가 false 라면, 입력 불량과 같으니 에러가 나오고 n 값을 입력할때까지 계속해서 오류 출력을 함
temp만 넣어서 생각하실려면. cin을 비교하는것보다는 덜 안정적이지만, 윗부분 다 때버리고 조건문 때려서 temp만 비교해도 문제 없을 것
흠 그럼 cin이 char,string 으로 입력을 받아야 참이되는 거군요 원래..그걸 !연산자를 써서 false로 만드는거고..
감사합뉘다 형님..어렵네요 아직ㅜ
코딩이 단순한 취미가 아니라면 운영체제, 컴퓨터구조는 반드시 공부하시길.. 지루해질수도 있으니 어처피 이론으로 시작해서 이론으로 끝나니 교수님 통해 수업듣는것도 좋음
형님 근데 컴터구조가 코딩하는데 많이 도움이 되나여?
도움 좃도 안됨
긍데 왜 하라구하세영