gpt4 book ai didi

c - 当 i 是全局变量时, "int i = 10;"和 "int i; i=10;"执行不同的功能吗?

转载 作者:行者123 更新时间:2023-12-02 08:13:08 27 4
gpt4 key购买 nike

请引用下图所示的程序。我收到以下编译器警告。

bash-3.2$ gcc -Wall test1.ctest1.c:6:警告:数据定义没有类型或存储类test1.c:6: 警告:类型在“j”的声明中默认为“int”

通常在函数外编写运行时操作时会抛出此警告。所以我想问为什么在全局范围内,“int j; j=20”会抛出警告而“int i = 10”不会?

   #include <stdio.h>

int i = 10;

int j;
j=20;

int
main(void)
{
int k;

k = 30;

printf("%d %d %d\n", i, j, k);

return 0;
}

最佳答案

这一行

j=20;

不是作业。它是j的声明,它使用了int的隐式类型。

C 允许您在全局范围内对同一个变量进行多次声明,只要它们匹配:

int j;
int j;
int j = 20;

当您未指定任何类型时,C99 之前的 C 标准也采用 int 类型。

这里是你如何打破你的例子:

double j;
j = 20;

这不会编译,因为 j 被声明为 double 然后重新声明为 int

关于c - 当 i 是全局变量时, "int i = 10;"和 "int i; i=10;"执行不同的功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44285364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com