请问一下为什么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;

 

  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未初始化,是一个未定义的值
  

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

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

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

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