함수에 관한 이야기 입니다.
호시
섭씨 화씨 를 출력하면 바꿔서 출력해라 이런거입니다.
#includestdio.h
double fahrenheit(double c);
double celsius(double f);
int main(void)
{
int sel;
double val;
printf(섭씨 입력 1, 화씨 입력 2: );
scanf(%d, &sel);
if(sel==1)
{
printf(섭씨 입력: );
scanf(%lf, &val);
printf(변환된 화씨 : %f\n, fahrenheit(val));c
}
else if(sel==2)
{
printf(화씨 입력: );
scanf(%lf, &val);
printf(변환된 섭씨 : %f \n, celsius(val));f
else
printf(선택 오류 \n);
return 0;
}
double fahrenheit(double c)
{
return 1.8*c+32;
}
double celsius(double f)
{
return (f-32)/1.8;
}
여기에서 보면 위의 프린트에프함수에는 val로 되어있고 밑에 함수에는 c와 f로 되어있는데 어째서 입력값이 연동이 되는거죠?
스캔에프으 입력값이 밑의 함수에 연동이 될려면 val로 안되고 c와 f로 되어 있어야 하지 않나요??
그리구 화씨를 섭씨로 바꾸는 공식은 (f-32)*1.8 아닌가요?
-
상처입은마음 2023-10-20
부연설명을 하자만... Call By Value (값을 인자로 전달하여 함수를 호출하는 방법)는 값을 복사한다고 생각하시면 됩니다.
f=val; 과 같습니다. 복사를 해 주는거죠..
윗분 말씀처럼 c 나 f 역시 함수의 지역변수 이므로 함수가 리턴하면 사라집니다.
그러니.. 함수에서 인자를 받을때 f로 받든 c로 받는 상관이 없습니다.
가독성을 높여주고, 너무 길지 않은 선에서 원하는 변수명을 사용하시면 됩니다. -
에드가 2023-10-20
메인에서 val값을 함수에서는 c나f 로 전달받습니다
리턴해준뒤 함수가 끝나면 안에있는 c,f는 없어집니다 -
상큼한캔디 2023-10-20
\함수에 관한 이야기 입니다.\ → \함수에 관한 질문입니다.\
무슨 이야기인가 한참 생각했네요. -
앵겨쭈 2023-10-20
이 문제에 대해서는 스스로 생각해보시면 답이 나올겁니다.
힌트를 드리자면
val 대신에 30.0f 을 넣어도 되고
99.9f 를 넣어도 됩니다.