【发布时间】:2021-01-29 06:27:51
【问题描述】:
这是我函数的一部分,如果分数发生偏移 (1),则会打印“偏移量?” after 并收集用户输入以在 compute_total(earned,shifted, shift) 函数中使用:
printf("Were scores shifted (1=yes, 2=no)? ");
double shifted;
scanf("%lf", &shifted);
if(shifted == 1){
printf("Shift amount? ");
double(shift);
scanf("%lf", &shift);
}else{}
double total = compute_total(earned, shifted, shift);
但是,显然我无法访问 if 语句中的变量,当我将变量和 scanf 移到 if 范围之外时,程序将运行,但是当我输入移位量的数字时,终端不会继续我的程序,它会“卡住”。
我应该如何解决这个问题,以便我可以访问变量但仍然可以正常工作?
【问题讨论】:
-
请提供一些minimal reproducible example - 一些我们可以编译的C代码!如果您使用GCC 作为编译器,请阅读其文档,然后使用所有警告和调试信息调用它:
gcc -Wall -Wextra -g。 从现有free software的源代码中汲取灵感,例如GNU make或GNU bc或GNU gawk。 -
一旦你的 C 程序被 GCC 编译而没有警告,使用像 GDB 这样的调试器来了解你的程序的行为。另请阅读Modern C 并查看this C reference
-
所以不要将
scanf移到if之外,只需将变量声明移到外面。并可能将其初始化为 0。
标签: c if-statement variables scope