我正在运行这段简单的c代码
#include "stdafx.h"
#include "math.h"
int main()
{
float i = 5.5;
float score = 0;
score=i/(i+(2^i));
}
并且编辑说,浮动i"必须是一个整数或无范围的枚举值",并且我必须保持浮动。如何在c?
中使用float作为指数答案 0 :(得分:5)
改变这个:
score=i/(i+(2^i));
到此:
score = i / (i + pow(2, i));
^
是XOR运算符,您需要pow(double base, double exponent);把所有东西放在一起:
#include "math.h"
#include "stdio.h"
int main()
{
float i = 5.5;
float score = 0;
score = i / (i + pow(2, i));
printf("%f\n", score);
return 0;
}
输出:
gsamaras@gsamaras-A15:~$ gcc -Wall main.c -lm -o main
gsamaras@gsamaras-A15:~$ ./main
0.108364
截至c99,如njuffa所述,您可以使用exp2(float n):
计算2提升到给定的功率n。
而不是:
pow(2, i)
使用:
exp2f(i)
答案 1 :(得分:1)
在C表达式
2^i
使用按位XOR运算符^
,这不是指数,因此i
必须是整数类型的建议。
尝试使用数学函数pow
,例如
score = i / (i + pow(2,i));