【问题标题】:C - Semicolon after For Loop Statement [duplicate]C - For循环语句后的分号[重复]
【发布时间】:2016-07-22 19:34:37
【问题描述】:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 19

int main() 
{
    char name[SIZE];
    int x;
    int i;

    printf("Enter your name: ");

    scanf("%s", &name);

    for (i = 1; name[i] != '\0'; i++);
        printf("Are you sure your name is: ");

    for (x = i - 1; x >= 0; x--)
        printf("%c", name[x]);
}

在第 9 行,为什么我们需要在 For 语句之后有一个分号?如果没有分号,程序会打印“你确定你的名字是:你确定你的名字是:”。

编辑:人们不喜欢重复的问题,所以我在这里有所不同 - 你认为问题是什么,为什么它不起作用???? [已解决]

【问题讨论】:

  • 不。这是一个错误。
  • 不清楚你的期望是什么。但是,for 后面不需要分号;通过删除分号,您可以打印两次消息,因为 NULL 字符位于数组的第三个元素(在您描述的情况下)。你想完成什么?
  • 这不是错误。用于计算字符串长度为i
  • 是的,这显然是故意的。缩进是错误的,使用while循环会更干净,没有人会怀疑它是否是一个错误。
  • 哦...是的,我的错。循环应该是空的,但我假设它在一起后的 printf 。我想我也可以完成 for 循环,但将 {} 大括号留空。

标签: c loops for-loop


【解决方案1】:

线

for (i = 1; name[i] != '\0'; i++);

循环直到name[i] 是一个空终止符。此时,计数器i 将具有字符串name 的长度,将在接下来的代码行中使用。 代码的唯一问题是下一行的缩进,这会让人误以为它是循环的一部分。

【讨论】:

  • “代码的唯一问题是下一行的缩进”——好吧,事实上没有理由不使用 strlen() 并使整个事情变得更加清晰...
  • @nephtes 那是肯定的。但我会把它留给代码审查。
  • 是的,循环之后的打印语句不应该是那样的......哈哈。谢谢尤金!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多