2016-10-01 17 views
1

ich dieses einfache Stück C-Code ausgeführt wirdWie kann man eine Fließkommazahl als Exponent in c verwenden

#include "stdafx.h" 
#include "math.h" 

int main() 
{ 
float i = 5.5; 
float score = 0; 

score=i/(i+(2^i)); 

} 

und der Herausgeber sagt, dass der Schwimmer i „muss ein integraler oder unscoped Enum-Wert sein“ und es ist wichtig, dass ich ein Float bleibt. Wie verwende ich einen Float als Exponent in c?

+3

'^' nicht Potenzierung in C mit! Lesen Sie ein Tutorial zu C, bevor Sie unbegründete Annahmen treffen! – fuz

Antwort

5

ändern diese:

score=i/(i+(2^i)); 

dazu:

score = i/(i + pow(2, i)); 

^ ist die XOR-Operator, müssen Sie pow(double base, double exponent); Putting alles zusammen:

#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; 
} 

Ausgang:

[email protected]:~$ gcc -Wall main.c -lm -o main 
[email protected]:~$ ./main 
0.108364 

Ab , wie njuffa erwähnt, können Sie verwenden exp2(float n):

Ermittelt 2 an die angegebene Leistung n angehoben .

und Statt:

pow(2, i) 

Verwendung:

exp2f(i) 
+0

Das hat es geschafft, danke! –

+0

Great @ J.doo, vergiss nicht * eine Antwort * zu akzeptieren! – gsamaras

+0

Wahrscheinlich besser 'exp2f (i)' hier anstelle von 'pow (2, i)' in Bezug auf Leistung und Genauigkeit zu verwenden, und wohl klarer. – njuffa

1

In C der Ausdruck

2^i 

das bitweise XOR-Operator verwendet ^, ist dies nicht ein Exponent ist, daher der Hinweis, dass i muss vom Integer-Typ sein.

Versuchen Sie, die mathematische Funktion pow wie mit

score = i/(i + pow(2,i)); 
Verwandte Themen