www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de