xiaohuanghuang_
xiaohuanghuang_
采纳率85.7%
2021-03-02 23:05

请问一下为什么y会被报警没有初始化?

已采纳

#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{
    float x, y;
    int tag;
    scanf( "%f", &x );
        int t=0;
        if(x>=(-10)&&x<10)
            t=1;
        else if(x>=10&&x<20)
            t=2;
        else if(x>=20&&x<100)
            t=3;
        else
            ;
        printf("%d\n",t);
        switch (t)
        {
        case '1': y=sin(x+3.0);break;
        case '2': y=cos(x+8.0);break;
        case '3': y=log(x*4);break;
        default:printf("No define!\n");            

        }
        if (t!=0)
        {
                printf("%.5f\n",y);
        }
        getch();
    return 0;

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • Huoon Huoon 1月前
      case '1': y=sin(x+3.0);break;
      case '2': y=cos(x+8.0);break;
      case '3': y=log(x*4);break;
    
      // case 后面应该是整形1,2,3 而不是char型 要知道 '1' != 1
    
      // y 报警告是因为y未初始化,是一个未定义的值
      
    点赞 1 评论 复制链接分享
  • qq_43414873 小白小白你好菜 1月前

    把你的case 的'1'、'2'、'3'改成纯数字1,2,3

    你的t是整型,那么你的case 对应的应该也是整型,但是你现在的'1'定义的是字符型,类型不匹配,就输出default的内容了

    报警y未初始化不用管,只要你的case条件没错,y就会赋值,只是有些编译器警告而已

    点赞 1 评论 复制链接分享
  • xiaohuanghuang_ xiaohuanghuang_ 1月前

    就运行结果来看这几个句子好像没发挥作用???

    点赞 评论 复制链接分享