【问题标题】:How to access a variable inside of an if-statement如何访问 if 语句中的变量
【发布时间】: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 makeGNU bcGNU gawk
  • 一旦你的 C 程序被 GCC 编译而没有警告,使用像 GDB 这样的调试器来了解你的程序的行为。另请阅读Modern C 并查看this C reference
  • 所以不要将scanf移到if之外,只需将变量声明移到外面。并可能将其初始化为 0。
  • 仔细阅读您没有编写的每个函数的文档,特别是printf(3)scanf(3),它们可能会失败(并且您没有对此进行检查)。不要忘记在相关时使用fflush(3)
  • 顺便说一句,您的代码可以使用变量,或调用函数(或某些declared函数指针)。您可以调用的唯一变量具有函数指针类型。阅读callbacks 并查看GTK 的源代码以获取示例。

标签: c if-statement variables scope


【解决方案1】:

你可能想要这个:

printf("Were scores shifted (1=yes, 2=no)? ");
double shifted;
double shift = 0;      // declare shift here (and probably initialize to 0?)

scanf("%lf", &shifted);
if(shifted == 1){
  printf("Shift amount? ");
  scanf("%lf", &shift);
}else{}

double total = compute_total(earned, shifted, shift);

顺便说一句:double(shift); 是错误的,甚至无法编译。您是否重新输入了代码而不是复制/粘贴?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 2021-03-10
    相关资源
    最近更新 更多