为何printf无法输出程序中numtoo的值?代码问题求助
问题分析与修复:HCF测试代码中numtoo输出异常
你的代码核心问题是变量作用域冲突:
- 在
if((firstnum)%2 == 0)的代码块里,你重新声明了局部变量int numtoo = 1;,这个变量和外部定义的int numtoo;是完全独立的两个变量。 - 当输入的
firstnum是偶数时,你修改的只是这个局部的numtoo,外部的numtoo从未被赋值,内存里是随机的垃圾值,所以输出结果异常。 - 只有当
firstnum是奇数时,else分支才会给外部的numtoo赋值0,这时候输出才正常。
修复方案
把if块里的int numtoo = 1;改成numtoo = 1;,直接复用外部定义的变量即可:
int main() { int firstnum ; printf("Enter First Number :-"); scanf("%d" , &firstnum ); int numtoo ; if((firstnum)%2 == 0) { int firstquo ; numtoo = 1 ; // 去掉前面的int,使用外部定义的numtoo int test1; test1 = firstnum ; do { firstquo = (test1)/2 ; numtoo ++ ; test1 = firstquo ; } while((test1)%2 == 0); } else { numtoo = 0 ; } printf("%d" , numtoo); }
修改后,无论输入奇数还是偶数,外部的numtoo都会被正确赋值,输出结果就能符合预期。
内容的提问来源于stack exchange,提问作者user26419966
相关产品推荐
相关产品推荐

