matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Hochschulmathe
  Status Uni-Analysis
    Status Reelle Analysis
    Status UKomplx
    Status Uni-Kompl. Analysis
    Status Differentialgl.
    Status Maß/Integrat-Theorie
    Status Funktionalanalysis
    Status Transformationen
    Status UAnaSon
  Status Uni-Lin. Algebra
    Status Abbildungen
    Status ULinAGS
    Status Matrizen
    Status Determinanten
    Status Eigenwerte
    Status Skalarprodukte
    Status Moduln/Vektorraum
    Status Sonstiges
  Status Algebra+Zahlentheo.
    Status Algebra
    Status Zahlentheorie
  Status Diskrete Mathematik
    Status Diskrete Optimierung
    Status Graphentheorie
    Status Operations Research
    Status Relationen
  Status Fachdidaktik
  Status Finanz+Versicherung
    Status Uni-Finanzmathematik
    Status Uni-Versicherungsmat
  Status Logik+Mengenlehre
    Status Logik
    Status Mengenlehre
  Status Numerik
    Status Lin. Gleich.-systeme
    Status Nichtlineare Gleich.
    Status Interpol.+Approx.
    Status Integr.+Differenz.
    Status Eigenwertprobleme
    Status DGL
  Status Uni-Stochastik
    Status Kombinatorik
    Status math. Statistik
    Status Statistik (Anwend.)
    Status stoch. Analysis
    Status stoch. Prozesse
    Status Wahrscheinlichkeitstheorie
  Status Topologie+Geometrie
  Status Uni-Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++C - Variable und deren Grenzen
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "C/C++" - C - Variable und deren Grenzen
C - Variable und deren Grenzen < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

C - Variable und deren Grenzen: Angabe von Unter- u. Obergr.
Status: (Frage) beantwortet Status 
Datum: 20:15 Sa 19.04.2008
Autor: StefanBS

Aufgabe
Hier die Aufgabenstellung:

Schreiben Sie ein Programm, das eine Variable für die Datentypen char, unsigned char, int, unsigned int, short, long, float und double anlegt und jeweils ihre Ober- und Untergrenzen angibt. Verwenden Sie dafür die Konstanten in den  header-Dateien <limits.h> und <float.h>. Des weiteren soll die Anzahl der jeweiligen verbrauchten Bytes unter Verwendung des sizeof()-Operators angegeben werden. Außerdem soll die Adresse jeder Variablen, ihr Name und der Variableninhalt ausgegeben werden.
Erzeugen Sie aus diesen Informationen eine formatierte Tabelle, die etwa folgendes Aussehen haben soll:
Datentyp | Name | Adresse |  Inhalt | Bytes | Untergrenze | Obergrenze
----------------------------------------------------------------------------------------------
    char    |    c1    |  689678  |    'a'    |    1     |       -128       |        127      
----------------------------------------------------------------------------------------------
u.s.w.
Dies war ein Beispiel dafür wie eine Zeile für char aussehen würde. Komplettieren Sie die Tabelle für alle oben angegebenen Datentypen. Zu grosse Zahlen geben Sie dabei im e-Format mit zwei Nachkommastellen an. Den Ausdruck "unsigned" können Sie mit "u." abkürzen, damit die Zeilen nicht zu breit werden.

Hallo,
ich habe vor kurzem mit der Programmiersprache C begonnen und folgende Hausaufgabe zu Freitag zu erledigen. Leider wurde die Aufgabenstellung im Unterricht nicht erklärt, vielmehr der Hinweis gegeben, dass wir uns das Wissen ja im Internet aneignen könnten. Das habe ich zumindest versucht und nachfolgenden Quelltext erzeugt. Entschuldigt bitte, den langen Text, aber sonnst wüsste ich auch nicht, wen ich diesbezüglich fragen könnte, da meine Mitschüler auch völlig verzweifelt sind.

Meine Frage dazu wäre folgende:
Wie erhalte ich für unsigned int bzw. unsigned char eine Untergrenze?
Allgemein möchte ich auch Fragen, ob ich die Aufgabe halbwegs richtig bearbeitet habe oder das Aufgabenziel möglicherweise verfehlt habe bzw. welche Fehler noch im Quelltext sind?

Vorab schon mal vielen Dank, auch schon dafür, das Ihr meine Frage bis hierhin gelesen habt.

----------------------------------------
#include <stdio.h>
#include <limits.h>
#include <float.h>

int main(void) {

// Zeichen
char c1 = 'a';
unsigned char uc1 = [mm] '\x84'; [/mm]

// Ganzzahlen
short i1 = 5;
int i2 = 11;
unsigned int i3 = 100;
long i4 = -6;

// Gleitkommazahlen
float f1 = 3.4;
double d1 = 200.56;

[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" Datentyp | Name | Adresse | Inhalt | Bytes     | Untergrenze | [mm] Obergrenze\n"); [/mm]
[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6c | %9i |%12i [mm] |%12i\n", [/mm] "char", "c1", &c1, c1, sizeof(char), CHAR_MIN, CHAR_MAX);


[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6c | %9i |%12i [mm] |%12i\n", [/mm] "u char", "uc1", &uc1, uc1, sizeof(unsigned char), CHAR_MAX, UCHAR_MAX);


[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6c | %9i |%12i [mm] |%12i\n", [/mm] "short", "i1", &i1, i1, sizeof(short), SHRT_MIN, SHRT_MAX);


[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6c | %9i |%12i [mm] |%12i\n", [/mm] "int", "i2", &i2, i2, sizeof(int), INT_MIN, INT_MAX);


[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6c | %9i |%12i [mm] |%12i\n", [/mm] "u int", "i3", &i3, i3, sizeof(unsigned int), INT_MIN, UINT_MAX);


[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6c | %9i |%12li [mm] |%12li\n", [/mm] "long", "i4", &i4, i4, sizeof(long), LONG_MIN, LONG_MAX);


[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6G | %9.2e |%12.2e [mm] |%12.2e\n", [/mm] "float", "f1", &f1, f1, sizeof(float), FLT_MIN, FLT_MAX);


[mm] printf("---------------------------------------------------------------------------\n"); [/mm]
printf(" %-8s | %4s | %ld | %6G | %9.2e |%12.2e [mm] |%12.e\n", [/mm] "double", "d1", &d1, d1, sizeof(double), DBL_MIN, DBL_MAX);
[mm] printf("---------------------------------------------------------------------------\n"); [/mm]

return 0;
}
------------------------

        
Bezug
C - Variable und deren Grenzen: Antwort
Status: (Antwort) fertig Status 
Datum: 21:54 Sa 19.04.2008
Autor: andihit


> Meine Frage dazu wäre folgende:
>  Wie erhalte ich für unsigned int bzw. unsigned char eine
> Untergrenze?

unsigned heißt, dass das Vorzeichen nicht gespeichert wird.
Daher ist die Untergrenze 0, und die Obergrenze wird entsprechend höher.

(steht als Kommentar auch in der limits.h: "/* Maximum value an 'unsigned char' can hold.  (Minimum is 0.)  */", bzw. "/* Maximum value an 'unsigned int' can hold.  (Minimum is 0.)  */")

>  Allgemein möchte ich auch Fragen, ob ich die Aufgabe
> halbwegs richtig bearbeitet habe oder das Aufgabenziel
> möglicherweise verfehlt habe bzw. welche Fehler noch im
> Quelltext sind?

Ich sehe keinen Fehler. Man könnte den wiederkehrenden Code zwar in eine Funktion auslagern, aber das ist ja nicht Teil der Aufgabenstellung.

Bezug
                
Bezug
C - Variable und deren Grenzen: Bedeutung der Warnhinweise
Status: (Frage) beantwortet Status 
Datum: 20:15 So 20.04.2008
Autor: StefanBS

Aufgabe
Kompilierung läuft...
h2_ss08.cpp
[mm] c:\programme\microsoft [/mm] visual [mm] studio\myprojects\h2_ss08\h2_ss08.cpp(29) [/mm] : warning C4305: 'initializing' : Verkuerzung von 'const double' in 'float'
Linker-Vorgang läuft...

h2_ss08.exe - 0 Fehler, 1 Warnung(en)

Danke für die schnelle Antwort. Würde jetzt aber noch gerne wissen, was die oben angegebene Meldung zu bedeuten hat, bzw. was ich machen kann, damit diese nicht mehr erscheint.

Danke.

Bezug
                        
Bezug
C - Variable und deren Grenzen: Antwort
Status: (Antwort) fertig Status 
Datum: 21:14 Mo 21.04.2008
Autor: rainerS

Hallo!

> Kompilierung läuft...
>  h2_ss08.cpp
>  c:\programme\microsoft visual studio\myprojects\h2_ss08\h2_ss08.cpp(29) : warning C4305: 'initializing' : Verkuerzung von 'const double' in 'float'
>  Linker-Vorgang läuft...
>  
> h2_ss08.exe - 0 Fehler, 1 Warnung(en)
>  Danke für die schnelle Antwort. Würde jetzt aber noch
> gerne wissen, was die oben angegebene Meldung zu bedeuten
> hat, bzw. was ich machen kann, damit diese nicht mehr
> erscheint.

Du schreibst nicht, welche Zeile es ist, die der Compiler beklagt, aber ich vermute einfach mal, es handelt sich um diese:

 float f1 = 3.4; 

3.4 ist eine Konstante vom Typ double; wenn du sie einer Variablen vom Typ float zuweist, geht Genauigkeit verloren. Du solltest statt dessen

 float f1 = 3.4f; 

schreiben, denn 3.4f bedeutet 3.4 als Konstante vom Typ float.

Viele Grüße
  Rainer

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.unimatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]