程序入口点-C中main(i)的含义是什么,它是如何工作的?i的值和类型是什么


void main(i)
{
    printf("%d",i);
}

main(i)在这里的含义是什么?它是如何工作的?CCD_ 2的值和类型是什么?

void main(i)

声明一个没有类型的函数参数只在旧的、过时的C90标准中有效。在C90中,i将默认为类型int

如果此代码是用于独立实现(嵌入式系统或操作系统(,那么它在C90中是有效的。它将相当于void main (int i)。您的编译器需要记录这种形式的main((应该做什么

如果此代码用于托管实现(在操作系统上运行的编程(,则它是无效的,不会编译。C90 2.1.2.2托管环境只允许两种形式的main((:

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

在较新的C标准中,无论是独立的还是托管的,代码都将无效,因为"默认为int"规则已从语言中删除。

它可能是int类型的,表示在命令行上传递的参数数;包括程序的名称。

但您不应该像那样编写main原型,因为程序行为在形式上是由实现定义的,因此可能因平台而异。

请改用int main(void)int main(int argc, char **argv)

首先,

void main(i)
{
    printf("%d",i);
}

C中的无效语法,您不应该使用它,因为C标准规定

  1. 案例1:[C11,§5.1.2.2.1],在托管环境中,

    • main()应返回int
    • 它应采用0(void(或2(int argc, char*argv[]或等效(自变量
  2. 案例2:在独立环境中,

    • 它是无效的(根据最新标准(,因为C标准不再支持"默认为int的变量类型"概念

[这只是为了理解,在标准中不再支持,因此,行为不能得到保证。]

现在,说到上述代码的含义部分,在i0中提供i的定义是一种技巧和过时的方法,主要用于代码高尔夫球以缩短代码大小。i的类型在这里默认为int,并保存提供给程序的扩充数(包括程序名称(。

例如,如果程序像一样运行

 ./test

在程序中,i最有可能具有值1

相关内容

  • 没有找到相关文章

最新更新