Diskussion:C-Programmierung: Ausdrücke und Operatoren

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Währe es nicht besser, dieses Kapitel in die Referenz aufzunehmen? -- Daniel B 17:48, 19. Aug 2004 (UTC)

Beispiel 1 Typumwandlung[Bearbeiten]

float f = 1.5; int i = (float)f; // i erhaelt den Wert 1

müsste hier nicht eigentlich ein (int) hin, anstelle eines (float)? also: int i = (int)f; // i erhaelt den Wert 1

Gruß, Philip


Beispiel 2 Typumwandlung[Bearbeiten]

float a = 5, b = 2; float ergebnis; ergebnis = a / (float)2 //ergebnis erhaelt den Wert 2.5

was will dieses Beispiel denn eigentlich sagen ?

und noch eines, mal wird zb "..des Wertes" mal "..des Werts" verwendet. Wollen wir uns auf eine Form einigen ?

Gunnar

Operator[Bearbeiten]

... auch hier fehlt der tertiäre...--Bastie 07:59, 7. Okt 2005 (UTC)


für was ist der : operator zuständig?[Bearbeiten]

struct beispiel_struct
                  {
                       int eine_struct_var  :  1; // was beudeutet hier das :1?
                  }

danke

Stichwort: Bitfelder, siehe http://www.google.com/search?q=c+struct+bitfeld --84.131.152.246 15:31, 19. Okt. 2009 (CEST)


Danke, das sollte vielleicht in dem Kapitel erwähnt werden.

Beispiel 3 Typumwandlung[Bearbeiten]

Wenn ich meine Kenntnisse von C# zugrundelege, dürfte die Beschreibung der Division unvollständig sein. Zumindest ungenau ist die folgende Formulierung:

  • Funktionen wie 'printf' erwarten bei Berechnungen als Argumente ganze Zahlen.

Richtig ist vermutlich so etwas:

  • Bei Operationen zwischen Zahlentypen ist das Ergebnis immer vom selben Typ: Addition zweier int-Zahlen liefert eine int-Zahl.
  • Die Division ganzer Zahlen wird ebenso als "Integer-Division" verarbeitet: Das Ergebnis ist eine ganze Zahl ohne Rest. Beispiel: ist 0.
  • Bei Berechnungen werden "einfache Zahlen" als ganze Zahlen interpretiert, sofern nichts anderes gesagt wird. Wenn das Ergebnis von als Dezimalzahl benötigt wird, ist mindestens ein Bestandteil als float zu deklarieren.
// Variante 1: float-Literale
float ergebnis = 3 / 5.0;
// Variante 2: float-Deklaration
int a = 3; float b = 5;
float ergebnis = a / b;
// Variante 3: Typumwandlung
int a = 3, b = 5;
float ergebnis = a / (float)b;

Die ganzen Beispiele kranken IMHO daran, dass sie sich fast ausschließlich auf int-Variable beziehen. Die Seite müsste deshalb grundlegend überarbeitet werden. Aber das gilt, wie ich aus verschiedenen Diskussionen weiß, wohl für das ganze Buch. -- Jürgen 08:58, 1. Mär. 2011 (CET)

Bitmanipulation[Bearbeiten]

Die Darstellung beschreibt wohl eher die Funktionsweise der logischen Operatoren als die eigentlichen Bit-Operationen, wo Bits verglichen werden. Soll man den Text ergänzen? Kann man Falsches ersetzen? Wie sowas bei WIKIBOOKS behandelt wird, ist mir nicht klar. Wäre um eine kurze Antwort dankbar. Martinspin 13:49, 1. Mär. 2011 (CET)

Was stimmt denn deiner meinung nach bei den Bitoperationen nicht? Mein C ist zwar schon lange her, aber logisches und (&&) und logisches oder (||) kann ich hervorragend von binärem und (&) und binärem oder (|) unterscheiden. -- ThePacker 14:19, 1. Mär. 2011 (CET)

Die eigentlichen Bitoperationen sind nicht beschrieben und haben imho nix mit den logischen Operationen zu tun.

main()
  {
    unsigned int a = 60;	/* 60 = 0011 1100 */  
    unsigned int b = 13;	/* 13 = 0000 1101 */
    unsigned int c = 0;           

    c = a & b;                  /* 12 = 0000 1100 */ 
  }

Martinspin 17:40, 1. Mär. 2011 (CET)

Die werden doch gar nicht zusammen behandelt... Abschnitt 2.5 und Abschnitt 2.6 ?-- ThePacker 19:58, 1. Mär. 2011 (CET)

Hey ThePacker
Wieso kannst du mein Einwand nicht nachvollziehen? Die Wahrheitstabellen in 2.6 hab gar nix mit dem eigentlichen Thema (Bitmanipulationen) zu tun und gehören klar in das Kapitel 2.5 (Aussagenlogik). Statt diesen Tabellen, die völlig fehl am Platz sind, sollten die möglichen Bitoperationen korrekt dargestellt werden, was nicht der Fall ist.
Ich bin ein grosser Fan von diesen Open-Geschichten und den ganzen Wiki-Sachen. Was in diesem Wikibooks abgeht, hinterlässt bei mir einen äusserst schwerfälligen Eindruck. So kann und will ich nicht arbeiten. Immerhin machen wir diese Arbeit auf freiwilliger Basis. Aus meiner Sicht ist es nicht zwingend notwendig, dass ich dieses Wikibook mit konkreten Beispielen ergänze und auf Mängel hinweise. Konstruktive Idee landen hier offenbar im im Nirwana und so gibt es ganz sicher keine Fortschritt. Dieses Wikibook "C-Programmierung" weist imho einige gute Ansätze auf, hat aber auch klare Schwächen und liefert z.T. Fehlinformationen. Ich mag einfach nicht über Dinge diskutieren, die nicht wesentlich sind. Sowas raubt wertvolle Resourcen. Was soll's? Ich bin weg und tschüss. Martinspin 23:59, 1. Mär. 2011 (CET)

Hallo Martin, ihr hattet wohl beide zu kurz formuliert, was euch gestört hatte (am Artikel bzw. an der Kritik des anderen). Ich gebe dir jedenfalls recht: Die Wahrheitstabellen gehören zu den logischen Operatoren, die Beschreibung der Bitmanipulation fehlt weitgehend. Das könnte aber das Problem dieses Buches überhaupt sein, wie ich beim vorigen Thema angedeutet habe. Über die Suchfunktion nach "C-Programmierung" auf Diskussionsseiten bin ich u.a. auf die folgende Diskussion gestoßen: C-Programmierung Streit. Dort gibt es einige Hinweise auf Verschlimmbesserungen dieses Buches.
Gleichzeitig kannst du dort auch Probleme bei der Zusammenarbeit innerhalb von Wikibooks erkennen. Ohne die Bereitschaft zur Mitarbeit kann es nicht besser werden; und Überreaktionen helfen dabei auch nicht. Wie kommst du darauf, dass konstruktive Ideen im Nirwana landen? ThePacker hatte sich vermutlich nur zwei (statt 15) Minuten damit beschäftigt, den Bezug deiner Kritik zuzuordnen. Ich bitte dich deshalb, keine voreiligen Schlüsse zu ziehen. -- Gruß Jürgen 09:37, 2. Mär. 2011 (CET)
Huch, da scheinen wir aneinander vorbeigeredet zu haben. Aus deiner ersten Nachricht, habe ich einfach nur eine Anklage herausgelesen und aus der Kürze des Hinweises war für mich nicht ersichtlich worauf du hinauswolltest. -- ThePacker 10:02, 2. Mär. 2011 (CET)

Hallo Jürgen
Wieso die gemeinsame Arbeit an diesem Wikibook zu grossen Kontroversen führen kann, ist einerseits klar und andererseits aber auch nicht. Gerade weil ich diese Form der Informationsaufbereitung so sehr liebe, verstehe ich nicht, wieso z.B. das Kapitel "Bitmanipulationen" so vorschnell und lieblos dargestellt wird. Im Grunde genommen hat das Thema z.B. im Fall der Negation seine ganz grossen Tücken und liefert je nach Rechner und Deklaration schwer verständliche Resultate. Ich kenne das Medium Wikibooks nicht wirklich und versuche Möglichkeiten und Grenzen auszuloten. Einerseits macht es keinen Sinn, bei einer anderen Herangehensweise an ein Thema ein neues Wikibook zu schreiben. Andererseits stören die Mängel eines bestimmten Wikibooks schon nach relativ kurzer Zeit. Ich lass das mal so stehen und überlege mir erst mal, wie ich in Zukunft mit den Informationen umgehen will.
LG Martinspin 23:24, 2. Mär. 2011 (CET)

Nein, das ist wieder ein Missverständnis. Das Buch war wohl früher sehr gut (Buch des Monats) und wurde durch umfangreiche Überarbeitungen immer schlechter (siehe den o.g. Verweis auf den Streit). Das muss man bedenken, wenn man einzelne Stellen verbessern will. Wenn ich nichts Besseres zu tun hätte und genauere Kenntnisse zu C hätte, könnte ich alles auf eine frühere Version zurücksetzen. Aber das wäre ähnlich aufwändig wie das Neuschreiben für einen Fachmann. -- Jürgen 09:19, 3. Mär. 2011 (CET)