表达式求值后未赋值,Cel变量始终为零的技术求助
问题分析与修复方案
嘿,我帮你揪出代码里的两个核心问题啦,这就是导致你遇到的求值分配异常和Cel变量始终为0的原因:
1. 整数除法坑了你的计算结果
你写的 9/5 是整数除法——在C++里,两个整数相除会直接砍掉小数部分,所以这个表达式的结果是1,不是你需要的1.8!这直接导致华氏度的计算完全不符合预期。
修复起来很简单,只要把其中一个数改成浮点数,让编译器按浮点数除法计算就行:
Far = (Temp * (9.0/5)) + 32;
换成 9/5.0 也能达到同样的效果。
2. 漏掉了摄氏度转换的逻辑分支
你只处理了用户输入'f'/'F'的情况,但完全没写输入'c'/'C'时的代码!这就意味着当用户选择转摄氏度时,Cel变量从来没被赋值——局部变量如果没显式初始化,值是未定义的(你这里显示为0是编译器的默认行为,但本质是没被正确赋值)。
补上对应的分支逻辑就解决了,完整的条件判断代码可以改成这样:
if(choice == 'f' || choice == 'F'){ Far = (Temp * (9.0/5)) + 32; cout << "Temperature in Farenheit is: " << Far << endl; } else if(choice == 'c' || choice == 'C'){ Cel = (Temp - 32) * (5.0/9); cout << "Temperature in Celcius is: " << Cel << endl; } else { cout << "Invalid choice! Please enter 'f' or 'c'." << endl; }
另外注意你原来的cout语句没写完,记得加上<< endl;来完成输出哦。
内容的提问来源于stack exchange,提问作者A.F.R.N
相关产品推荐
相关产品推荐

