You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表达式求值后未赋值,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:27:59