我是C编程的新手。我写了一个Basic 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
;
两者都是正确的?我可以使用多行
结束指令答案 0 :(得分:3)
澄清了问题后的重写答案。
是的,分号的位置并不重要。空格(空格,换行符,制表符)通常在C中不重要。它不是面向行的语言,源代码必须严格地构造成行。有线,但它们并不是很重要。几乎总是可以在不改变代码含义的情况下将换行符更改为空格(甚至删除)。
这些都是等价的:
int x = 1;
int y=1;
int z=1 ;
int
w
=
1
;
您应该查看一些Obfuscated C entries,了解如何将其用于创造性效果。
答案 1 :(得分:1)
在ANSI C标准之前的旧K&amp; R天,任何函数或变量的默认类型都是int
所以你可以(和人们经常这样做)在声明中省略类型说明符是int
。这是惯用的,特别是在main()
函数的情况下(Even&#34; C编程语言第二版&#34;使用惯例,即使它据称基于ANSI C)。还没有void
类型,因此您无法指定函数不返回任何内容。函数总是返回一些东西,即使它是垃圾值。
从(我认为)C99开始,决定将类型默认为int
是一个非常糟糕的主意,因此从技术上讲是不允许的。但是,为了向后兼容,编译器只会在遇到它时发出警告。
您可以使用
使警告静音int main(void)
或
int main(int argc, char*argv[])
这是两个&#34;官方&#34; C11中的便携式定义。
虽然您不在,return
,但您不需要在main
中指定return 0;
声明,但这样做是很好的做法。添加
main
到intmain
函数的末尾。
修改强>
在我写答案时,问题已经改变了。
关于在问题中跨行分割语句。就编译器而言,这样做没有问题。白色空间(空格,制表符,换行符,换页符)在C中并不重要。唯一需要它的地方是它会使两个令牌运行到一个例如int/* blah */foo = 5;
显然无法正常工作,并且每个空格都是合法的,因此任何数量的空白都是合法的。
评论几乎可以出现在任何可以放置空格的地方。例如
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"dd/mm/yyyy HH:mm:ss"];
NSDate *date = [formatter dateFromString:@"19/01/2016 14:16:03"];
NSCalendar *gregorian = [NSCalendar currentCalendar];
NSDateComponents *comonents =
[gregorian components:(NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond
) fromDate:date];
NSInteger day = [comonents day];
NSInteger month = [comonents month];
NSInteger year = [comonents year];
NSInteger hour = [comonents hour];
NSInteger minutes = [comonents minute];
NSInteger seconds = [comonents second];
合法
答案 2 :(得分:-1)
在C中你的do函数声明:
int main(int argc, char **argv)
int - &gt;返回函数的类型。此函数将返回一个整数
主要 - &gt;函数的名称(这里是程序的主要功能)
(int argc,char ** argv) - &gt; paranthesis,显示它的功能,以及功能的参数;它需要什么作为输入。
只是很少有建议不在新行上写分号这是一个不好的做法