casten von int auf double
-
#include <iostream> using namespace std; void func( int array[], size_t size ) { for( int i = 0; i < size; ++i ) array[ i ] = i; } int main() { double a; int *array = new int[ 100 ]; func( array, 100 ); a=array[20]/40; //a=0 cout<<a<<endl; delete[] array; }
hi
was muss ich denn hier ändern ich verstehe nicht warum das nicht funktioniert?
-
Hallo,
was funktioniert da nicht?
-
Divisionen von integralen Skalaren werden immer abgerundet. Dein wird abgerundet zu 0.
Mach aus
40
einfach40.
, dann ist es ein Fließkomma-Literal und das Ergebnis des Ausdrucks auch.a = array[20] / 40.;
-
Danke
-
new[]
ist übrigens Mist. Für dynamische Arrays gibt es in richtigem C++ denvector
.#include <iostream> #include <vector> using namespace std; void func( int array[], size_t size ) { //der richtige Typ von i ist size_t for( size_t i = 0; i < size; ++i ) array[ i ] = i; } int main() { double a; std::vector<int> array(100); func( array.data(), array.size() ); a=array[20]/40.; //a=0.5 cout<<a<<endl; }