Hier ist mein CodeErste zwei verschiedene Ergebnis für pow() Funktion auf zwei verschiedenen Linux OS
#include<stdio.h>
#include<math.h>
void main(void)
{
printf("pow as double: %lf\n\r", pow(2,32));
printf("pow as long int: %ld\n\r", ((long int)pow(2,32)));
}
ich den Code auf 2 verschiedenen Linux-Betriebssystem kompiliert. (Gcc powfn.c -o powfn)
Auf VirtualBox Ubuntu habe ich folgendes Ergebnis
pow as double: 4294967296.000000
pow as long int: 4294967296
auf Debian GNU/Linux 8 OS auf einem Znyq ARM Cortex A9-Prozessor läuft, ich habe folgendes Ergebnis
pow as double: 4294967296.000000
pow as long int: 2147483647
Was ist los? Warum die zwei verschiedenen Ergebnisse?
Versuchen Sie, die Größe von 'long int Überprüfung 'auf beiden Maschinen. – taras
Sieht so aus, als wäre Ihr langer int auf ARM eigentlich eine 32-Bit-Ganzzahl. – steppo
Yup. lang Int auf ARM ist 4 Bytes, während auf VirtualBox Ubuntu seine 8 Bytes – KharoBangdo