在检查变量是否为空或空的行上,我一直非法使用字符。
有人知道为什么会这样吗?
这里的错误点是:

if((fa == "" && fp == "") || (fb == "" && fp == "")){

虽然我之前不知道是什么导致了这个错误。
编辑:
现在更改了代码,错误是函数sinfa的参数太少。
我只想一次传递一个参数给这个函数,这是可能的,还是我必须创建另一个函数来实现这一点,这样我才能单独满足它们?
谢谢您。:)
#include<stdio.h>

#include<conio.h>
#include<math.h>
#define PI 3.14159265359

float sinfa(float num1,float num2)
{
    float fc;
    float powers;
    float rad_angle;

    if(num1 != 0){
    rad_angle = num1 * (PI / 180.0);
    powers = pow(rad_angle,4);
    fc = sin(rad_angle)-powers+1;
    }else{
    rad_angle = num2 * (PI / 180.0);
    powers = pow(rad_angle,4);
    fc = sin(rad_angle)-powers+1;
    }
    return (fc);
}

float sinp(float p1)
{
    float fop;
    float ppowers;
    printf("%f",p1);
    ppowers = pow(p1,4);
    fop = sin(p1)-ppowers+1;
    return (fop);
}

float tp(float fa,float fb,int num1,int num2)
{
    float p;
    float fm2 = fa*num2;
    float fm1 = fb*num1;
    p = fm2-fm1/fa-fb;
    return (p);
}

float main()
{
    float num1;
    float num2;
    float fa;
    float fb;
    float p1;
    float fp;

    clrscr();
    printf("Enter number 1: \n");
    scanf("%f", &num1);
    getch();
    printf("Enter number 2: \n");
    scanf("%f", &num2);
    getch();
    clrscr();

    if((fa == 0 && fp == 0) || (fb == 0 && fp == 0)){
        fa = sinfa(num1);
        fb = sinfa(num2);
        p1 = tp(fa,fb,num1,num2);
        fp = sinp(p1);
    }else{
        if((fa*fp) < 0){
            num1 = num1;
            num2 = p1;
            fa = sinfa(num1);
            fb = sinfa(num2);
            p1 = tp(fa,fb,num1,num2);
            fp = sinp(p1);
        }
        if((fb*fp)< 0){
            printf("\n 2");
            getch();
        }
    }
}

最佳答案

出现错误是因为要将浮点与字符串文本进行比较,即:

if((fa == "")

只能将float与numeric/float文本进行比较,即:
if((fa == 0.0

回想一下,对于诸如float这样的基元类型,没有空/未初始化的概念。相反,它们通常默认为0。
因此,具有以下平均值f的值将是文本0
float f;

关于c - 在C中非法使用浮点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14594749/

10-15 00:49