Aufgabe aus dem c Tutorial

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Psysin
Beiträge: 22
Registriert: Sa Okt 13, 2012 9:41 am
Wohnort: Braunschweig

Re: Aufgabe aus dem c Tutorial

Beitrag von Psysin » Do Okt 18, 2012 12:34 pm

Xin hat geschrieben:Darüber nachzudenken, war als Ziel der Aufgabe angedacht. ^^
Das Ziehl habe ich wohl deutlich erreicht :)

Nun aber zu nächsten Aufgabe ;)
Ich setzt das mal hier mit rein und mach nicht jedesmal nen neues Thema auf.
Aufgabe: http://www.proggen.org/doku.php?id=c:tutorial:decisions ganz unten.
Mein Code:

Code: Alles auswählen

#include <stdio.h>

int main( void )
{
    int a = '50';

    if( a >= '10' && a <= '100' )
    {
        printf( "'%c' ist Richtig\n", a );
    }
    else
    {
        printf( "'%c' ist Falsch\n", a );
    }
return 0;
}
Codeblocks versucht es richtig auszugeben doch statt "50 ist Richtig" bekomme ich die Aussage "0 ist Richtig".
Außerdem bekomme ich 3 Warnungen aber nicht gesagt wo.
Ich kann mir aber denken das es daran liegt das ich 2 und 3 stellige Zahlen genommen habe, kann es sein das ich das nicht einfach ohne weiteres machen kann? Oder etwas beachten muss?
Denn in der Aussage kürzt er das ergebnis "50" ja auch auf eine Ziffer "0"?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aufgabe aus dem c Tutorial

Beitrag von Xin » Do Okt 18, 2012 1:01 pm

Psysin hat geschrieben:Aufgabe: http://www.proggen.org/doku.php?id=c:tutorial:decisions ganz unten.
Mein Code:

Code: Alles auswählen

#include <stdio.h>

int main( void )
{
    int a = '50';

    if( a >= '10' && a <= '100' )
    {
        printf( "'%c' ist Richtig\n", a );
    }
    else
    {
        printf( "'%c' ist Falsch\n", a );
    }
return 0;
}
Codeblocks versucht es richtig auszugeben doch statt "50 ist Richtig" bekomme ich die Aussage "0 ist Richtig".
Hehehe, hübsch. ^^
Psysin hat geschrieben:Außerdem bekomme ich 3 Warnungen aber nicht gesagt wo.
Hier: '50', hier '10' und hier '100'.

Welchen Compiler benutzt Du?
Psysin hat geschrieben:Ich kann mir aber denken das es daran liegt das ich 2 und 3 stellige Zahlen genommen habe, kann es sein das ich das nicht einfach ohne weiteres machen kann? Oder etwas beachten muss?
Das Hochkomma ergibt aus einem (1,0) Zeichen, den entsprechenden ASCII-Code. Mehrere Zeichen haben mehrere ASCII-Codes... Der ASCII-Code aus mehreren Zeichen ist ... vermutlich undefiniert. Ein Error wäre anstatt einer Warning angemessener. Lass die Hochkommas weg.

Was bedeutet hier 'Richtig' und was 'Falsch'?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Psysin
Beiträge: 22
Registriert: Sa Okt 13, 2012 9:41 am
Wohnort: Braunschweig

Re: Aufgabe aus dem c Tutorial

Beitrag von Psysin » Do Okt 18, 2012 1:13 pm

Xin hat geschrieben:Hehehe, hübsch. ^^
Soll heißen ? :)

Ich benutze den GNU GCC Compiler in Code::Blocks.
Die Hochkomma habe ich aus dem Tutorial übernommen da sie ja dort auch geschrieben wurde.
Xin hat geschrieben:Hier: '50', hier '10' und hier '100'.
Hab ich mir auch gedacht denn als ich mit nur einer Ziffer verglichen habe wie im Tutorial gabs keine Warnungen.
Xin hat geschrieben:Was bedeutet hier 'Richtig' und was 'Falsch'?
Damit ist die Ausage gemeint das "50" größer oder gleich wie "10" ist bzw kleiner oder gleich wie "100" also "Richtig"
"150" währe dann zb. "Falsch" da es größer als "100" ist.
Zuletzt geändert von Psysin am Do Okt 18, 2012 1:31 pm, insgesamt 1-mal geändert.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Aufgabe aus dem c Tutorial

Beitrag von oenone » Do Okt 18, 2012 1:14 pm

int a = '50'; <-- huh? wusste gar nicht, dass das erlaubt ist.

Psysin
Beiträge: 22
Registriert: Sa Okt 13, 2012 9:41 am
Wohnort: Braunschweig

Re: Aufgabe aus dem c Tutorial

Beitrag von Psysin » Do Okt 18, 2012 1:18 pm

Psysin hat geschrieben:Lass die Hochkommas weg.
Wenn ich die weglasse, kommen zwar keine Warnungen mehr, aber die Ausage stimmt dann auch nicht mehr die Code::Blocks
ausgibt!

Psysin
Beiträge: 22
Registriert: Sa Okt 13, 2012 9:41 am
Wohnort: Braunschweig

Re: Aufgabe aus dem c Tutorial

Beitrag von Psysin » Do Okt 18, 2012 1:20 pm

oenone hat geschrieben:int a = '50'; <-- huh? wusste gar nicht, dass das erlaubt ist.
Ist das nicht das selbe wie:

Code: Alles auswählen

int mayBeDigit = '0';

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aufgabe aus dem c Tutorial

Beitrag von Xin » Do Okt 18, 2012 1:33 pm

Psysin hat geschrieben:
Xin hat geschrieben:Hehehe, hübsch. ^^
Soll heißen ? :)
Is' quatsch.
Psysin hat geschrieben:Ich Hochkomma habe ich aus dem Tutorial übernommen da sie ja dort auch geschrieben wurde.
'0' ist nicht 0, sondern 48. Die Hochkommas ergeben den ASCII-Code des Zeichens, das üblicherweise oval gezeichnet wird und als "Null" bezeichnet wird.
Xin hat geschrieben:Was bedeutet hier 'Richtig' und was 'Falsch'?
Damit ist die Ausage gemeint das "50" größer oder gleich wie "10" ist bzw kleiner oder gleich wie "100" also "Richtig"
"150" währe dann zb. "Falsch" da es größer als "100" ist.[/quote]
Lass die Hochkommas weg.

a = 50, if( a >= 10 && a <= 100 )...
oenone hat geschrieben:int a = '50'; <-- huh? wusste gar nicht, dass das erlaubt ist.
Ist es auch nicht, aber offenbar kann man es mit Warnings kompilieren.
Psysin hat geschrieben:
oenone hat geschrieben:int a = '50'; <-- huh? wusste gar nicht, dass das erlaubt ist.
Ist das nicht das selbe wie:

Code: Alles auswählen

int mayBeDigit = '0';
Dann gib doch mal mayBeDigit als Zahl aus:
Da kommt 48 raus.

Lässt Du die Hochkommas weg, kommt 0 raus. => es ist nicht dasselbe.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Psysin
Beiträge: 22
Registriert: Sa Okt 13, 2012 9:41 am
Wohnort: Braunschweig

Re: Aufgabe aus dem c Tutorial

Beitrag von Psysin » Do Okt 18, 2012 1:40 pm

'0' ist nicht 0, sondern 48. Die Hochkommas ergeben den ASCII-Code des Zeichens, das üblicherweise oval gezeichnet wird und als "Null" bezeichnet wird.
Stimmt ja ;) bin davon ausgegangen das mit '0' auch 0 gemeint ist.

Naja hab gleich Feierabend dann setzte ich mich zuhause nochmal dran, mit neuem Denkansatz.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aufgabe aus dem c Tutorial

Beitrag von Xin » Do Okt 18, 2012 1:45 pm

Psysin hat geschrieben:
'0' ist nicht 0, sondern 48. Die Hochkommas ergeben den ASCII-Code des Zeichens, das üblicherweise oval gezeichnet wird und als "Null" bezeichnet wird.
Stimmt ja ;) bin davon ausgegangen das mit '0' auch 0 gemeint ist.
Wie bei printf auch: "0" druckt 0. "\0" ist ein String, der zwei Byte lang ist, der ein Nullbyte enthält und dann mit einem Nullbyte endet. '\0' ist ein Nullbyte. '0' ist ein Byte, das das ASCII-Zeichen 48 repräsentiert, die 0, eben das ovale etwas, was wir als Null verstehen - kein Byte, dass den Wert 0 besitzt, also kein Nullbyte.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Aufgabe aus dem c Tutorial

Beitrag von oenone » Do Okt 18, 2012 1:46 pm

sehr interessant.... http://ideone.com/rCMZx

Antworten