分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Rodney_8H

当输出平均数时,程序显示分段错误11。 - While outputting the average number, the program rendered segmentation fault 11

  •  -1
  • Rodney_8H  · 技术社区  · 7 月前

    这里有两组代码看起来没有什么不同,但其中一组代码会生成警告和分段错误11。

        //the program which turns out alright
        #include<stdio.h>
        int main()
        {int a,b,c,d;float f;
         scanf("%d %d %d",&a,&b,&c);
         d=a+b+c;
         f=(a+b+c)*1.0/3.0;
         printf("%d %.2f\n",d,f);
         return 0;
         }
    
       //the program that comes along small issues
       //format specifies type 'int *' but the argument has type 'int' [-Wformat]
       //After inputting 3 integers, in mac terminal console, it showed: segmentation fault:11
         #include<stdio.h>
        int main(void)
        {
          int a,b,c = 0;
          float average = 0.0f;
          printf("Please enter three integers you wish to calculate their average:");
          scanf("%d %d %d", a,b,c); //从input把数据放到arithmatic counter里面
    
          average = (float)(a+b+c)/3.0f;
    
          printf("\nThe average of the three numbers is:%.2f", average);
          return 0;
          }
    
    1 回复  |  直到 7 月前
        1
  •  1
  •   Sourav Ghosh    7 月前

    这里有两套代码看起来没有什么不同,

    你得看看 仔细地。

    查看 scanf() 声明:

    • scanf("%d %d %d",&a,&b,&c); 是正确的
    • scanf("%d %d %d",a,b,c); 是错的。您的编译器已经就此警告过您。

    SCAN() 预期提供的参数 %d 指向整数的指针-为它们提供 int s(基本上,任何其他与预期类型不兼容的类型)将调用 undefined behavior .分段故障是其副作用之一。