匆匆看一下我写的
#include <stdio.h>
static flag;
int main()
{
printf("flag is %d",flag);
return 0;
}
它不会发出任何警告或错误,并且工作正常。我不明白为什么会这样做?
答案 0 :(得分:7)
C假定为int
。函数定义及其参数也是如此:
// same as int add(int x, int y)
add(x,y) { return x + y; }
// same as int main()
main()
{
}
答案 1 :(得分:3)
Staic始终默认为int,static int为0 ..
答案 2 :(得分:1)
当int
与其他关键字一起使用时,int
是可选的
static int <--> static
volatile int <--> volatile
short int <--> short
long int <--> long
虽然short
和long
是可接受的简短表单,但您应该避免将其与存储关键字(static
,volatile
)一起使用。
答案 3 :(得分:1)
主要数据类型
char , int , float , double
存储类,如
auto,static,extern etc
数据类型修饰符,如
long,signed,unsigned etc,
如果存储类或数据类型修饰符错过了变量的主数据类型,那么编译器默认将它们视为整数,即使函数返回类型也是如此 未定义它们默认情况下被视为int
示例
long i is similar to long int i
static i is similar to static int i
但你不能简单地说我并问为什么编译器不会把它当作int
答案 4 :(得分:-1)
标志初始化为0,作为全局静态变量。如果您尝试使用未初始化的变量,Java等其他语言将出错。我假设这是C,在这种情况下,标志默认为int类型。请不要这样做。这是非常糟糕的编程习惯。