#include <stdio.h>
int main(void)
{
unsigned long int a = 12345;
signed long int b = 12345;
unsigned short int c = 123;
signed short int d = 123;
float e = 1.3;
double f = 1.43;
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(b));
printf("%d\n", sizeof(c));
printf("%d\n", sizeof(d));
printf("%d\n", sizeof(e));
printf("%d\n", sizeof(f));
return 0;
}
#include <stdio.h>
#include <values.h>
int main (void)
{
printf("float min: %f\n", MINFLOAT);
printf("float max: %f\n", MAXFLOAT);
printf("float min exp: %d\n", FMINEXP);
printf("float max exp: %d\n", FMAXEXP);
printf("double min: %f\n", MINDOUBLE);
printf("double max: %f\n", MAXDOUBLE);
printf("double min exp: %d\n", DMINEXP);
printf("double max exp: %d\n", DMAXEXP);
return(0);
}
Nein, sizeof() liefert die Anzahl Bytes für eine angegebene Variable oder Typdefinition.Lucky07 schrieb:...hm...ihr meint also wenn ich einen best. Wertebereich habe, von sagen wir mal -5......33000, dann kann ich mit sizeof () den geeigneten Datentyp ermitteln .
#!/usr/bin/perl
use warnings;
use strict;
my $a = 0;
my $x = 1;
my $i;
print "Binary " . '"' . "1" x 32 . '" (32 digits):'. "\n\n";
print "Bit-Nr. \t Bit-Value if set \t Accumulated result\n";
foreach $i (1 .. 32) {
$a += $x;
print 33 - $i ." \t\t $x \t\t\t $a\n";
$x = $x * 2;
}
perl -e 'print 0xFFFFFFFF ."\n";'
Und mit folgendem C-Codewarning: this decimal constant is unsigned only in ISO C90
#include <stdio.h>
int main(void)
{
unsigned long int a = 2147483647;
a++;
printf("%d\n", a);
return 0;
}
perl -e 'print 0x7FFFFFFF ."\n";'
%u statt %d bei der Formatierung der Ausgabe verwenden, dann klappt das.abgdf schrieb:erhält man "-2147483648". Ein "unsigned" überschlägt sich zu einem negativen Wert? Sehr merkwürdig. C/C++ mal wieder.
Wenn Du noch mehr Lust hast, könntest Du mein Perl-Skript oben ja mal nach C oder C++ übersetzen. Vielleicht übt das ja noch etwas mehr. (Ist halt nur so'ne Idee.)Lucky07 schrieb:Die Aufgabe hab ich soweit gelöst aber wirklich kapiert hab ich es immer noch net.
Lucky07 schrieb:Hallo zusammen,
wie bekomme ich den Datentyp heraus wenn der Wertebreich beispielsweise 0.......6*10 hoch5 ist ???