Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » & (Adreßoperator)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ]
020
18.08.2006, 16:53 Uhr
xXx
Devil



Zitat:


C++:
#include <stdio.h>
const unsigned int nStudentPerClass = 10

int main (void) // WEIL DAS KEIN ZULÄSSIGER STD. IST!
{
    long z1 = 0;
    long z2 = 0;
    long z3 = 0;

    printf("\n Zahl 1 der Addition: \n");
    scanf("%ld", &z1);

    printf("\n Zahl 2 der Addition: \n");
    scanf("%ld", &z2);

    printf("\n Zahl 3 der Addition: \n");
    scanf("%ld", &z3);

    printf("\n Folgende Zahlen gaben Sie ein: %ld %ld %ld\n", z1, z2, z3);

    return 0;// Hier ist return 0; nicht ZWINGEND notwendig!
}


beim 2.Programm sieht alles aber anders aus.
nach eingabe des ersten wertes, wird die 2.eingabe übersprungen und man landet bei eingabe nr 3.
warum ist das so?


C++:
#include <stdio.h>
const unsigned int nStudentPerClass 10

int main(void)
{
    char z1, z2, z3;

    printf("\n Zahl 1 der Addition: \n");
    scanf("%c", &z1);

    printf("\n Zahl 2 der Addition: \n");
    scanf("%c", &z2);

    printf("\n Zahl 3 der Addition: \n");
    scanf("%c", &z3);


    printf("\n Folgende Zahlen gaben Sie ein: %c %c %c\n", z1,z2,z3);
    return 0;
}


So... beim nächstenmal verwendest du selber die Code-Tags ...


Bearbeitung von 0xdeadbeef:

...und beim nächsten mal benutzt du sie vielleicht korrekt /cpp-tag eingefügt.


Dieser Post wurde am 18.08.2006 um 17:59 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
18.08.2006, 17:56 Uhr
0xdeadbeef
Gott
(Operator)


In C ist das return 0; am Ende durchaus notwendig, nur in C++ kannstes wegrationalisieren.

Was das void angeht, es gibt zwar Compiler, die dir das abkaufen, aber das werden immer weniger, dementsprechend ist solcher Code höchst unportabel. Irgendetwas einsparen kannst du damit auch nicht, denn der Compiler muss den Stack eh um einen int erweitern, weil dir sonst nachher die Umgebung den Stack zerschießt. Dazu kommt, dass du keine Fehler abfangen kannst - stell dir zum Beispiel vor, jemand will dein Programm nachher in einem Skript benutzen und kriegt ärgste Probleme, nur weil du, entschuldigung, zu dämlich warst, dich an den Standard zu halten.

Was den Code angeht,

C++:
scanf("%c", &z1);


kann nur ein Zeichen einlesen. Das bedeutet, wenn du dann 12 eingibst, wird nur die 1 aus dem Stream gezogen, die 2 ist aber noch drin und wird beim nächsten scanf in z2 geschrieben. Danach landest du bei eingabe 3.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 18.08.2006 um 18:01 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
18.08.2006, 19:52 Uhr
~chessymaster
Gast


@ xXx

deine aussage ist net ganz korrekt. wenn ich als erste zahl ne 2 oda ne 8 eingebe, wird die 2. abfrage auch übersprungen.

warum??????




einer sagt in main (void) ist ein standard, ein anderer sagt ist keiner.
was denn nun?

was ist der standard?
warum return 0? warum net return 1???????????????????????


bitte um eine genau erklärung, danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
18.08.2006, 20:22 Uhr
xXx
Devil


Wer behauptet das

C++:
void main(void)
dem aktuellen Std. entspricht? Einem Uralten hat das mal entsprochen... sicha


C++:
int main(void)
int main(int, char**) // usw.
das entspricht dem aktuellen Std. ich meine ist schon ab ISO 98 so... bei dem Datum kann ich mich aber auch täuchen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
18.08.2006, 20:29 Uhr
~chessymaster
Gast


beantwortet doch mal bitte alle fragen, net nur immer eine
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
19.08.2006, 00:32 Uhr
xXx
Devil


Überleg mal sorum... welchen "Status" hat ein Bit wenn es auf true gesetzt ist?

Aja... alles über 0 = Fehler...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
19.08.2006, 01:10 Uhr
~chessy
Gast


ein bit auf true gesetzt, dann hat es den wert eins oda net?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
19.08.2006, 10:03 Uhr
xXx
Devil


jop... ach die erklärung war mist naja...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
19.08.2006, 15:58 Uhr
~chessymaster
Gast


bei eingabe eines strings mit scanf muss kein adressoperator an die variable übergeben werde. warum nicht?

scanf ("%s", string);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
19.08.2006, 16:02 Uhr
~Blubber2063
Gast


weil ein string ein Zeiger auf ein char Feld ist. Also schon die Adresse die benötigt wird.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: