可以在分号前换行吗?

Okay with newline before semi-colon?

我是 C 编程的新手。我写了一个基本的 C 代码 喜欢

#include<stdio.h>
main()
{
    int t = 
5
;
    printf("%d\n",t
);
}

它会产生错误吗?

嗯,我的问题是

int x = 9;

int x = //Finish this instruction in 3 lines instead of one!
9
;

两者都正确?我可以使用多行结束指令吗

澄清问题后重写答案。

是的,分号的位置无关紧要。 Whitespace (space, newline, tab) 在 C 中通常无关紧要。它不是一种面向行的语言,在这种语言中,源代码必须被严格地组织成行。有线条,但它们不是很重要。几乎总是可以将换行符更改为 space(甚至删除)而不改变代码的含义。

这些都是等价的:

int x = 1;

int y=1;

int z=1          ;

int
w
=
1
;

您应该查看一些 Obfuscated C entries 以了解如何将其用于创意效果。

在 ANSI C 标准出现之前的旧 K&R 时代,任何函数或变量的默认类型都是 int 所以你可以(人们经常这样做)在声明中省略类型说明符,如果类型是指成为 int。这是惯用的,特别是在 main() 函数的情况下(甚至 "The C Programming Language second edition" 也使用了约定,尽管据称它是基于 ANSI C 的)。也没有 void 类型,因此您不能指定函数不返回任何内容。函数总是返回一些东西,即使它是一个垃圾值。

从(我认为)C99 开始,决定将类型默认为 int 是一个非常糟糕的主意,因此在技术上是不允许的。但是,为了向后兼容,编译器在遇到它时只会发出警告。

您可以使用

使警告静音
int main(void)

int main(int argc, char*argv[])

这是 C11 中的两个 "official" 可移植定义。

虽然您不需要在 main 中指定 return 语句,但这样做是一种很好的做法。添加

return 0;

main 函数结束。

编辑

我在写答案时问题发生了变化。

关于像问题中那样跨行拆分语句。就编译器而言,这样做没有问题。 White space (space, tab, newline, form feed) 在 C 中并不重要。你唯一需要它的地方是它将两个标记 运行 合二为一的地方,例如intmain 显然是行不通的,任何地方一个白色 space 都是合法的,任何数量的白色 space.

也是合法的

此外,评论几乎可以出现在任何可以放置白色的地方 space。例如

int/* blah */foo = 5;

合法

在 C 中,您的 do 函数声明如下:

int main(int argc, char **argv)

int -> return 函数类型。此函数将 return 一个整数

main -> 函数名(这里是你程序的主要函数)

(int argc, char **argv) -> 括号,显示它是一个函数,以及函数的参数;它需要什么作为输入。

很少有人建议不要在新行上写分号,这是一种不好的做法