如何解决此 int 溢出?

How do I resolve this int overflow?

int frequency(string note)
{
    int i;
    float f;
    int n=0;
    float octave= note[strlen(note)-1];
    if(strlen(note)==3)
    {
        if(note[1]=='#')
        {
            n+=1;
        }
        else if(note[1]=='b')
        {
            n-=1;
        }
    }
    if(note[0]=='B')
    {
        n+=2;
    }
    else if(note[0]=='C')
    {
        n-=9;
    }
    else if(note[0]=='D')
    {
        n-=7;
    }
    else if(note[0]=='E')
    {
        n-=5;
    }
    else if(note[0]=='F')
    {
        n-=4;
    }
    else if(note[0]=='G')
    {
            n-=2;
        }
        n+=(octave-4.0)*12.0;
        float p= n/12.0;
        f=(int)(round(pow(2.0,p)*440.0));
        return f;
    }

所以基本上每当我 运行 这段代码时,我都会收到一条错误消息 "runtime error: value 7.3641e+16 is outside the range of representable values of type 'int'"

那么返回的值就是-2147483648。我在网上查了一下,但没有找到对我的代码有帮助的答案。这也是在 cs50 IDE 中制作的,所以有一堆命令和导入的东西。我的程序编译正确并且可以 运行 那么我该如何解决这个问题?

半音音阶的音符频率首先不是整数。

如果传递给像 Cb 这样的两个字符的字符串,您会得到一个频率太高的愚蠢的巨大八度音阶。