可以在分号前换行吗?
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) -> 括号,显示它是一个函数,以及函数的参数;它需要什么作为输入。
很少有人建议不要在新行上写分号,这是一种不好的做法
我是 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) -> 括号,显示它是一个函数,以及函数的参数;它需要什么作为输入。
很少有人建议不要在新行上写分号,这是一种不好的做法