C语言中 a+b problem

img

img

img

问:有什么问题?怎么编译失败?
而在sum=a+b前不加int却可以

因为sum在前面第4行定义了,所以下面的重复定义sum会编译报错,将第6行前面的int去掉即可。

修改如下:

参考链接:


A+B Problem - 洛谷 https://www.luogu.com.cn/problem/P1001


#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;
} 

img

的确,重定义了

【以下回答由 GPT 生成】

答案:

  1. 为什么在不使用int关键字声明变量的情况下,代码编译成功?

    在C语言中,如果在使用变量之前没有进行声明,编译器会将变量假设为默认类型int。这被称为隐式声明。因此,在没有使用int关键字声明变量的情况下,编译器会将变量默认为int类型,并且在编译时不会出现错误。

    例如,以下代码可以成功编译:

    c a = 5; b = 10; sum = a + b;

  2. 为什么在加上int关键字后,代码编译失败?

    当你在使用int关键字声明变量时,你需要在声明的同时进行初始化。如果你只是声明变量但没有进行初始化,编译器将会产生错误。在C语言中,所有的变量声明都需要进行初始化。

    例如,以下代码会导致编译错误:

    c int a; int b; int sum; sum = a + b;

    在上面的代码中,ab被声明为int,但没有进行初始化。因此,在计算sum = a + b时,会出现编译错误。为了解决这个问题,你可以在声明变量的同时进行初始化,如下所示:

    c int a = 5; int b = 10; int sum = a + b;


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^