我知道我在指令末尾需要分号, 但是当我尝试编译时,它要求我在我不知道为什么的地方使用分号,并且它可以工作,但现在的问题是,为什么我需要在while循环的开始和结束括号之前使用分号?
#include <unistd.h>
int main()
{
char a = 'a'
;while (a <= 'z')
{
write(1, &a, 1);
a++;
}
return (0)
;}
但是我在这段代码中不需要分号(至少在不需要之前)
#include <unistd.h>
char ft_putchar(char c)
{
write(1, &c, 1);
}
char rec(char a)
{
if (a <= 'z')
{
ft_putchar(a);
a++;
rec(a);
}
return (0);
}
int main()
{
char a = 'a';
rec(a);
return (0);
}
我正在Windows 10 Visual Studio代码上运行。
答案 0 :(得分:7)
您只是忘记了上一行的分号,而是将其放在下一行的开头进行了修复。
C实际上并不关心分号在哪里,只要它们位于语句之间即可。不管新行在哪里:
您的代码在这里
#include <unistd.h>
int main()
{
char a = 'a'
;while (a <= 'z')
{
write(1, &a, 1);
a++;
}
return (0)
;}
与
相同#include <unistd.h>
int main()
{
char a = 'a';
while (a <= 'z')
{
write(1, &a, 1);
a++;
}
return (0);
}
,也与以下相同:
#include <unistd.h>
int main() { char a = 'a'; while (a <= 'z') {write(1, &a, 1); a++; } return (0);}
答案 1 :(得分:2)
您的代码没有错,但是格式非常不正常。通常,您将换行符放在;
的之后,而不是之前。
您的代码应如下所示:
#include <unistd.h>
int main()
{
char a = 'a';
while (a <= 'z')
{
write(1, &a, 1);
a++;
}
return 0;
}
顺便说一句:您不应该像在这里return (0);
那样将返回值放在()之间,而应该只写return 0;
。 put()没错,但是不必要的使它看起来像一个函数调用。
对于C程序来说,换行符不是必需的,您可以编写它并编译:
#include <unistd.h>
int main() {char a = 'a';while (a <= 'z'){
write(1, &a, 1);a++;} return 0;}
此代码段,我之前的代码段和您的代码段是等效的。