이것은 내 함수 코드입니다. 기본적으로 온도가 켈빈 또는 화씨인지 확인합니다. 내가 main에서 temp_enota = 'F'를 얻었을 때 (디버깅으로 확인했기 때문에 수행합니다), temp = 116은 어떤 이유로 함수가 약 46이어야 할 때 0을 반환합니다. 그 이유는 무엇입니까? 켈빈에서는 잘 작동합니다.
float pretvorbaTemp(char temp_enota, float temp) {
if (temp_enota == 'K') {
temp = temp - 273.15;
}
else if (temp_enota == 'F') {
temp = (temp - 32) * (5 / 9);
}
return temp;
}
주요 기능에서 호출
if (temp >= 283 && temp <= 323) {
temp_enota = 'K';
zacasna = 1;
cout << "Vnesena temperatura je v K, kar je enako "<<pretvorbaTemp(temp_enota, temp)<<" C" << endl;
}
else if (temp <= 122 && temp >= 50) {
temp_enota = 'F';
zacasna = 1;
cout << "Vnesena temperatura je v F, kar je enako "<<pretvorbaTemp(temp_enota, temp)<<" C" << endl;
}
else if (temp >= -10 && temp < 50) {
temp_enota = 'C';
zacasna = 1;
cout << "Vnesena temperatura je v C" << endl;
}
else {
zacasna = 0;
zacasna2 = 1;
}
0을 얻는 이유는
5/9
두 개의 정수 값이므로 0으로 평가되므로 컴파일러는 정수 나누기를 수행하는 코드를 생성합니다.
그냥 변경
5./9
부동 소수점을 강제합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다