问:有什么问题?怎么编译失败?
而在sum=a+b前不加int却可以
因为sum在前面第4行定义了,所以下面的重复定义sum会编译报错,将第6行前面的int去掉即可。
修改如下:
参考链接:
#include <stdio.h>
int main(void){
// https://blog.csdn.net/A_zjzj/article/details/104240079
// https://www.luogu.com.cn/problem/P1001
int a,b,sum;
scanf("%d %d",&a,&b);
sum=a+b; // 因为前面sum已经定义了,所以这里直接使用sum来存储a和b的和即可
// 打印计算出的和sum
printf("%d",sum);
return 0;
}
的确,重定义了
【以下回答由 GPT 生成】
答案:
为什么在不使用int
关键字声明变量的情况下,代码编译成功?
在C语言中,如果在使用变量之前没有进行声明,编译器会将变量假设为默认类型int
。这被称为隐式声明。因此,在没有使用int
关键字声明变量的情况下,编译器会将变量默认为int
类型,并且在编译时不会出现错误。
例如,以下代码可以成功编译:
c a = 5; b = 10; sum = a + b;
为什么在加上int
关键字后,代码编译失败?
当你在使用int
关键字声明变量时,你需要在声明的同时进行初始化。如果你只是声明变量但没有进行初始化,编译器将会产生错误。在C语言中,所有的变量声明都需要进行初始化。
例如,以下代码会导致编译错误:
c int a; int b; int sum; sum = a + b;
在上面的代码中,a
和b
被声明为int
,但没有进行初始化。因此,在计算sum = a + b
时,会出现编译错误。为了解决这个问题,你可以在声明变量的同时进行初始化,如下所示:
c int a = 5; int b = 10; int sum = a + b;