首页 > 解决方案 > C++,错误:表达式必须具有整数或无范围枚举类型

问题描述

所以我有这个代码。

#include <stdio.h>

int main()
{
    float S, Y, P;
    printf("Sisestage laenusumma eurodes:\n");
    scanf("%f", &S);
    printf("Sisestage laenuperiood aastades:\n");
    scanf("%f", &Y);
    printf("Sisestage intressim44r protsentides:\n");
    scanf("%f", &P);
    float K, T;
    K = (S * (P / 100 / 12)) / (1 - (1 + (P / 100 / 12)) ^ (-Y * 12));
    T = K * Y * 12;
    printf("Laenusummaga %.2f eurot %.2f intressim44raga te peate maksma %.2f eurot kuus %.2f aastat. Ja kokku maksate pangale %.2f eurot.", S, P, K, Y, T);
    scanf("%f", &S);
}

(括号中的语言是爱沙尼亚语,如果有人对此感到好奇)

现在我的问题是,在 K = (S * (P / 100 / 12)) / (1 - (1 + (P / 100 / 12)) ^ (-Y * 12));第一个 '1' 和 -Y 之前的 '(' 下有一个错误。我在他们两个上得到的错误都是expression must have integral or unscoped enum type.

我已经看过一些关于这些的帖子,但我仍然不明白如何解决它。

有效的一件事是将浮点 S、Y、P 更改为 int,但我需要将它们设为浮点数。

非常感谢您的帮助。

标签: c++

解决方案


^用于按位运算(xor),而不是幂。

你可以std::powf改用。

K = std::powf((S * (P / 100 / 12)) / (1 - (1 + (P / 100 / 12))), -12 * Y);

推荐阅读