Hallo zusammen,
warum geht das so in C nicht ???
int j=0;
j++=7;
bzw.
int a[10]={0};
int *c=a;
(*c)++=7;
Fehler: Linker Operand muss ein L-Wert sein....
was macht der Operator ++ in seiner Definition?
Vielen Dank Gruß
Hä was willst du den machen ?
j inkrementieren und dann 7 dazu zählen
j = j++ + 7; // da könnest du aber gleich + 8 schreiben
wenn du zu j 7 dazu zählen willst dann j += 7;
Vielen Dank,
nein ich wollte mal einige Möglichkeiten ausprobieren:
z.B.
c += 38;
*c = 78;
*(++c) = 88;
*++c = 3;
*(c++) = 2;
*c++ = 1;
(*c)++;
(*c)++ = 4;
Dank an alle :-)
C Code schrieb:> nein ich wollte mal einige Möglichkeiten ausprobieren:
und hast du auch verstanden, was da als Ergebnis deiner verschiendenen
Versuchausdrücke raus kommt?
Oder wolltest du prüfen, welchen Ausdruck dein Compiler ohne
Fehlermeldung verdaut?
Geht das schon wieder los :-(
markus schrieb:> Glaube ich nicht.
Glauben heißt nicht wissen.
Das hat etwas mit Sequence Points zu tun, zwischen denen eine Variabel
nur einmal geändert werden darf.
Das j++ kann auch erst am Ende dieses Sequence Point wirken. Dann hast
du nur
j++, da das Ergebnis von dem +7 überschrieben wird.
Es mag sein, dass auf deinem aktuellen System mit deinem aktuellen
Compiler das so funktioniert, wie du es beschrieben hast.
Kann aber mit der nächsten Compilerversion auch wieder anders sein.
Kann man auch im C-Standard nachlesen.
C Code schrieb:> warum geht das so in C nicht ???
Gegenfrage:
Warum zum Kuckuck kannst du dich nicht zusammenreißen und einen
einfachen und biederen Code schreiben? Also eine Quelle, wo nicht immer
alles mit irgendwlchen Kunststückchen zusammengeschustert ist, sondern
brav alles separat und einfach nachvollziehbar hingeschrieben ist?
Die Ausrede "ja die anderen machen sowas ja auch.." ist in Wahrheit eben
KEINE Ausrede.
Also lerne keine Ober-Kunststückchen, sondern solide, biedere, quasi
defensive Notation zu schreiben. Auf Dauer ist das tausendmal besser als
alle Quellcode-Husarenstücke.
Und nochwas: C ist unverständlich, man kann es nicht verstehen, da die
meisten Regeln nicht logisch sind, sondern als eine Art Ordre de Mufti
daherkommen. Es ist ein bissel wie der "wissenschaftliche Kommunismus".
Deswegen muß man C eben lernen und sich die Bedeutung der Kringel eben
merken.
Heutzutage ist sowas wie y=a++ überflüssiger als ein Kropf, denn jeder
aktuelle Compiler kann problemlos y=a; a=a+1; genauso gut optimieren.
Aber lernen, was a++ bedeutet und wo der Unterschied zu ++a liegt, mußt
du trotzdem.
W.S.
markus schrieb:> Glaube ich nicht.
Das ändert nichts an den Tatsachen.
Und zeigt wieder mal schön, daß selbst die Grundregeln der Sprache den
allermeisten C-Programmierern nicht bekannt sind.
Bei nicht Pointer ist dieser Falle genau definiert, nicht aber bei
Pointern.
j = j++ + 7;
Wenn j aber ein Pointer ist, sollte man
j++=j+7
schreiben, was dann auch wiederum genau definiert ist.
Dies hingegen ist Immmer!! genau definiert:
i=i++;
Stefan Rand schrieb:> Und zeigt wieder mal schön, daß selbst die Grundregeln der Sprache den> allermeisten C-Programmierern nicht bekannt sind.
Was wiederum daran liegt, daß die allermeisten C-Programmierer
eigentlich garkeine Programmierer mehr sind, sondern nur noch Leute, die
ihre Zeit damit verbringen, von anderen geschriebene Sources
zusammenzuklauben und dann notdürftig zusammenzunageln.
Hauptsache der Compiler läuft ohne Showstopper-Fehlermeldungen durch.
Warnungen werden unterdrückt und ein Blick in den kopierten Code ist
sowieso die absolute Zumutung. Wenn der Compiler ohne Fehler durchläuft,
wird schon alles in Ordnung sein...
chris schrieb:> Bei nicht Pointer ist dieser Falle genau definiert, nicht aber bei> Pointern.> j = j++ + 7;> Wenn j aber ein Pointer ist, sollte man> j++=j+7> schreiben, was dann auch wiederum genau definiert ist.> Dies hingegen ist Immmer!! genau definiert:> i=i++;
Einfach ausgedrückt:
Du schreibst Unsinn.
Und zwar in allen Punkten. Nichts, aber auch gar nichts, von dem was du
geschrieben hast, ist korrekt.
W.S. schrieb:> Gegenfrage:>> Warum zum Kuckuck kannst du dich nicht zusammenreißen und einen> einfachen und biederen Code schreiben? Also eine Quelle, wo nicht immer> alles mit irgendwlchen Kunststückchen zusammengeschustert ist, sondern> brav alles separat und einfach nachvollziehbar hingeschrieben ist?>> Die Ausrede "ja die anderen machen sowas ja auch.." ist in Wahrheit eben> KEINE Ausrede.>> Also lerne keine Ober-Kunststückchen, sondern solide, biedere, quasi> defensive Notation zu schreiben. Auf Dauer ist das tausendmal besser als> alle Quellcode-Husarenstücke.>> Und nochwas: C ist unverständlich, man kann es nicht verstehen, da die> meisten Regeln nicht logisch sind, sondern als eine Art Ordre de Mufti> daherkommen. Es ist ein bissel wie der "wissenschaftliche Kommunismus".> Deswegen muß man C eben lernen und sich die Bedeutung der Kringel eben> merken.>> Heutzutage ist sowas wie y=a++ überflüssiger als ein Kropf, denn jeder> aktuelle Compiler kann problemlos y=a; a=a+1; genauso gut optimieren.> Aber lernen, was a++ bedeutet und wo der Unterschied zu ++a liegt, mußt> du trotzdem.
Entschuldigung :-) weil ich gerade an der Hochschule
C-Programmieren lerne und das eine Aufgabe war.
Also Danke an alle Gruß C Code
C Code schrieb:> Entschuldigung :-) weil ich gerade an der Hochschule> C-Programmieren lerne
Autsch.
si tacuisses philosophus mansisses
Wenn du nichts gesagt hättest, hätte man dir immerhin noch einen
Bastlerstatus attestieren können, mit dem du dich aus der Affäre ziehen
hättest können.
> was macht der Operator ++ in seiner Definition?
Für einen Studenten ist so eine Frage nicht akzeptabel.
Kleiner Tip:
bei so manchen Fragen hier im Forum ist es für den Fragesteller
wesentlich besser, wenn er nicht erwähnt, dass er die Sache für sein
Studium braucht.
>Autsch.>si tacuisses philosophus mansisses>Wenn du nichts gesagt hättest, hätte man dir immerhin noch einen>Bastlerstatus attestieren können, mit dem du dich aus der Affäre ziehen>hättest können.
Allerdings gilt auch dieser Spruch:
Es gibt keine dummen Fragen, sondern nur dumme Antworten.
markus schrieb:> Allerdings gilt auch dieser Spruch:>> Es gibt keine dummen Fragen, sondern nur dumme Antworten.
Tut mir leid.
Es gibt sie nämlich, die dummen Fragen.
Dein Spruch hat seine Berechtigung bei Kindern, aber nicht bei
Studenten. An die werden etwas andere Anforderungen gestellt, als an
10-jährige.
>Dein Spruch hat seine Berechtigung bei Kindern, aber nicht bei>Studenten. An die werden etwas andere Anforderungen gestellt, als an>10-jährige.
Der Meinung bin ich nicht. Fragen hilft und vielen Leuten ist in diesem
Thread durch die angeregte Diskussion einiges klarer geworden.
Ich habe die Erfahrung gemacht, dass sich die meisten Leute vor Fragen
scheuen, um sich nicht zu blamieren. Allerdings habe ich noch keinen
getroffen, der nach 5 gezielten Fragen mit seinem Latein nicht am Ende
gewesen wäre.
markus schrieb:> Der Meinung bin ich nicht. Fragen hilft und vielen Leuten ist in diesem> Thread durch die angeregte Diskussion einiges klarer geworden.
Welche Zahnpastatube nehme ich nohmal am Abend? war es die orange oder
die blaue?
Es gibt sehr wohl dumme Fragen. Nämlich die, bei denen der Fragesteller
so überhaupt nicht durchblicken lässt, dass er sich mit der Materie
beschäftigt, sondern sich die Welt erklären lassen will. Stichwort
lmgtfy - da fühlt man sich als Befragter auch irgendwann verschaukelt.
Klar: Hier im Forum muss ja keiner Antworten, aber diese Mentalität
existiert leider auch im RealLife zur Genüge.
Angewand auf das Topic: Von Studierenden würde ich erwarten, dass
zumindest eine mögliche Quelle eines C-Buches oder C-FAQ geliefert wird.
Klassisch akademisch mit dem Thema auseinandersetzen, um auf einem
gewissen Niveau darüber zu diskutieren.
Man muss nicht alles wissen, man muss nur wissen, wo es steht, bzw. wie
man sich selbst weiterhilft.
Grüße,
Tobias
> Es gibt sie nämlich, die dummen Fragen.>> Dein Spruch hat seine Berechtigung bei Kindern, aber nicht bei> Studenten. An die werden etwas andere Anforderungen gestellt, als an> 10-jährige.
Der Fehler beim Gefragten besteht darin, hinsichtlich des Fragendens
a.) vom biologischem Alter auf das geistige Alter zu schließen und
b.) anzunehmen dessen geistiger Horizont entspräche einem perfekten
Kreis anstatt einer zerklüfteten Küste mit unzähligen Buchten
und Halbinseln.
> Stichwort> lmgtfy - da fühlt man sich als Befragter auch irgendwann verschaukelt.> Klar: Hier im Forum muss ja keiner Antworten, aber diese Mentalität> existiert leider auch im RealLife zur Genüge.
Auch das sind keine dumme Fragen. Ganz im Gegenteil, der Fragende ist
clever. Er wählt den geringsten Widerstand und lässt den Gefragten für
sich arbeiten. Dabei bemerkt der Gefragte gar nicht nicht, dass er sich
ausnutzen lässt und fühlt sich vermeintlich dem Fragenden auch noch
überlegen.
Karl Heinz schrieb:>> was macht der Operator ++ in seiner Definition?> Für einen Studenten ist so eine Frage nicht akzeptabel.
Äh ja, dann zeige mir mal die Definition vom Operator++, wo kann ich den
Quellcode vom Operator++ sehen. Was ++ macht das ist schon klar. Nur war
oder ist :-) mir nicht ganz klar, wie der Operator++ mit der übergebenen
Variablen hantiert.
Besser ausgedrückt:
int a[10]={0};
int *c=a;
(*c)++=7;
Da (*c) den Inhalt meint (Dereferenzierung) und der Operator++ den
Inhalt um eins erhöht, könnte man ja annehmen das links dann wieder das
hochgezählte (*c)=7; zurückgeben vom Operator++ steht. Und der weise ich
dann 7 zu. Oder sehe ich das falsch??? Also muss ja der Operator an der
Sache schuld sein. Wenn ich den Operator++ überladen würde (ja ich weiß
C++) dann kann ich auch einen Operator++ schreiben der (*c)++=7;
zulässt.
Ein schönes Wochenende :-)
das erklärt dan wohl auch warum Lazarus/Pascal ihre Daseinsbeerechtigung
haben..
Und warum auch heute noch viele, die Geld verdienen wollen auf Pascal
setzen auch bei Mikrocontrollern.
C ist ohne frage nicht schlecht und hat ebenfalls seine Berechtigung
aber nachdem ich immer wieder um C herumgeschlichen bin, ist meine
Entscheidung gefallen das ich bei Pascal bleibe.
Die Beispiele und einfache Grundprobleme in C zu lösen ist durchaus
machbar..wird es aber komplexer bereut man sehr oft überhaupt mit dem
Zrkus angefangen zu haben, während ich in Pascal bereits alle Software
für den Controller fertig habe und mich an die Steuersoftware für den PC
machen kann.
Ob es auch Professionelle gibt, die mit Bascom arbeiten?
Auszuschließen ist das mit SICHERHEIT nicht.
Habe aber selbst mit Bascom nur sehr kurze Versuche gemacht und k.a. wo
die Lizenz eigentlich abgeblieben ist...auch keine Ahnung was mich
damals genervt hatte..aber bei Pascal läuft bis heute alles rund.
Bascom wird sich sicher, genauso wie Pascal weiterentwickelt haben,
vermutlich hat BAScom mittlerweile auch beliebig lange Strings wie
PAscal auch.
Soll bei Bashing werden, wie gesagt...echte Freaks bekommen mit C sicher
super Resultate..aber 90% der C Schreiber scheitern sicher schnell wenn
es etwas außerhalb der Grundlagen ist.
Für einen Großteil währe daher PAscal sicher eigentlich das bessere..C
hat natürlich den riesen Vorteil eienr etwa 5x so großen Community (grob
geschätzt ) :-)
Leider benötigt man aber eben auch öfter deren Support durch die
komplexität.
Wobei ich es generell in allen Programmierforen leider sehr ruhig finde,
egal ob C oder Pascal für µC
Filosuff schrieb:> Ganz im Gegenteil, der Fragende ist> clever
das ist nicht clever, sondern faul. Und wenn man als Gefragter passend
reagiert: siehe oben.
Egal wie: solange hier jeder sein Halbwissen kundtut, führt die
Diskussion über wilde C-Konstrukte eh nicht weiter. Hier hilft nur Doku
des Compilers oder eine Version des C-Standards/Definition.
Ach ja: Wer so programmiert (mit den Konstrukten ganz oben), der frisst
auch kleine Kinder ;)
In welcher Hochschule wird sowas vermittelt?
"dass
zumindest eine mögliche Quelle eines C-Buches oder C-FAQ geliefert wird.
Klassisch akademisch mit dem Thema auseinandersetzen, um au"
Hallo???
In welchem Zeitalter bitte leben wir?
Wozu gibt es denn Communities/Foren??
Wohl um zu fragen und zu Diskutieren!!
ALLES!! kannst Du in Büchern nachlesen..tust es aber selber nicht und
Anfängerfragen sind nunmal Anfängermäßiger als von jemandem der täglich
programmiert!!
Es sind nicht nur Freaks die hier lesen/schreiben sondern auch leute die
nach der Arbeit noch an einem kleinen privaten Projekt weiterarbeiten
wollen und da fragt man bei einem Problem mal eben schnell!!
Um nicht aus einer LED Alarmblinkatrappe z.BB :-) ein Wochenlanges
Projekt werden zu lassen weil sich erst EINLESEN muss?!?!
Schade diese Mentalität hier..
Wer nicht antworten will soll es lassen, ganz einfach..
ICh finde es sowieso geil, 90% der Threats enden mit benutze die
Suchfunktion des Forum oder so ähnlich..
Davon findet man dann zu einem problem 50 solcher Antworten..weil
irgendwann mal diese Frage irgendo im Forum beantwortet wurde..schönen
dank auch, diesen Threat dann zu finden..
Wenn man schon so neunmalklug ist, kann man auch sagen "Hatten wie
schon, benutz mal die Suchfunktion, Stichwort XXYZ?
Oder hatten wir hier chonmal =>LINK
Nicht jeder liest hier ständig mit und weiß das di Frage gestern
beantwortet wurde..und manche Antworten ändern sich mit der Zeit also
bleibt die Frage aktuell..wenn vielelicht heute als Vorschalg jemand ein
µc anstelle eines NE555 vorschlagen würde..nur z.B:
Frank T. schrieb:> das erklärt dan wohl auch warum Lazarus/Pascal ihre Daseinsbeerechtigung> haben..
Niklaus Wirth würde dir sehr wahrscheinlich nicht zustimmen. Er "erfand"
Pascal als Lehrsprache. Und das war auch das letzte Mal, dass ich
damitnzu tun hatte: in der Schule. War aber sehr nett damals :)
Zum Thema C und diese ewige Spezialisten-Leier "Man muss nur wissen, was
man tut" fällt mir nur eine Antwort ein: Heartbleed. q.e.d.
Timo schrieb:> Um nicht aus einer LED Alarmblinkatrappe z.BB :-) ein Wochenlanges> Projekt werden zu lassen weil sich erst EINLESEN muss?!?!
Du kannst es auch sein lassen und an die frische Luft gehen. Zwingt dich
ja keiner.
Frank T. schrieb:> Die Beispiele und einfache Grundprobleme in C zu lösen ist durchaus> machbar..wird es aber komplexer bereut man sehr oft überhaupt mit dem> Zrkus angefangen zu haben, während ich in Pascal bereits alle Software> für den Controller fertig habe und mich an die Steuersoftware für den PC> machen kann.>
1
curr_chr_size2_ptr=&alpha_chr[chr_curr];
2
curr_chr_size2=*curr_chr_size2_ptr;
3
lvl2=((constchar*)
4
(
5
(*curr_chr_size2_ptr)
6
|
7
(
8
((unsignedint)(*(curr_chr_size2_ptr+1)))<<8)
9
)
10
);
11
curr_chr_size2=*((constchar*)(lvl2));
Mach sowas mal in PASCAL.
1
return;
2
l_addr_decode:
3
addr=*(t1+1);addr<<=8;
4
addr|=*(t1);t1=(((constchar*)(addr)));
5
if(goto_dst==0)gotol_dest0;elsegotol_dest1;
6
}
oder als Perverser, spar dir einen Funktionsaufruf, von 2
unterschiedlichen Punkten aus aufrufen, und vorher goto_dst setzen.
Ergebniss: 25 Byte weniger. Ist doch toll?
Und damit es auch noch unsauber sein soll mit Fleiss, hinter dem return
(ohne Rueckgabewert) ablegen.
Was sich ausgewiesene Laien immer so über C und dessen vermeintliche
Anwendung, Grenzen und Komplexität zusammenreimen ist schon zum
schmunzeln.
- Pascal ist besser weil es irgendein Paket gibt welches schon libs für
ein paar AVRs mitbringt.
- C ist nur für einfache Sachen oder sonst für Freaks.
- Mit Pascal und BASCOM kann man produktiv auf Controller entwickeln und
es wird auch flächendeckend gemacht um Geld zu verdienen.
Reinste Satire hier.
Lesen bildet. Nimm dir K&R "The C Programming Language". Das ist die
erste Definition von C.
C Code schrieb:> Äh ja, dann zeige mir mal die Definition vom Operator++,
Kapitel 2.8 und 7.2
> wo kann ich den> Quellcode vom Operator++ sehen.
Dir fehlen Grundlagen zum Thema Programmieren. Du verwechselst die
Definition einer Sprache und die Umsetzung für eine spezielle Maschine.
> Was ++ macht das ist schon klar.
Den Eindruck habe ich nicht.
> Nur war> oder ist :-) mir nicht ganz klar, wie der Operator++ mit der übergebenen> Variablen hantiert.
Zurück auf Start. Lesen. Es sind nur wenige Seiten.
So danke, ich habe mir jetzt die
INTERNATIONAL
STANDARD
ISO/IEC
9899
Second edition
1999-12-01
Programming languages — C
und die
INTERNATIONAL
STANDARD
ISO/IEC
14882
Second edition
2003-10-15
Programming languages — C++
Langages de programmation — C++
geladen :-)
Frag ruhig konkret, wenn etwas unklar ist. Die Normen sind schwierig zu
lesen, wenn man nicht bereits das Grundprinzip des Aufbaus und diverse
Begrifflichkeiten kennt.
Was hat das damit zu tun welche Sprache ursprünglich mal wozu entwickelt
wurde?!?!
Darauf kann doch dennoch eine neue basieren.
Das Pascal von damals hat mit Freepascal so gar nicht mehr gemein!
Es basiert lediglich auf dieser Einfachheit und ist zu allem Überfluss
sogar noch kompatibel zum alten Pascal!
Wir reden hier nicht von Pascal 7.0 oder sowas :-)
Aber wie gesagt, sollte auch kein bashing werden, wenn ich mir den
Kommentar von Cyblord ansehe, bin ich hier raus, der versteht ja nicht
mal diese einfach Auflistung ohne daraus ne nummer zu machen.
Man merkt auch sehr schön am Umgangston hier und in Pcscalforen wo der
Unterschied bei der Mentalität liegt...
Niemand dort zerreißt C, es wird größtenteils sachlich argumentiert.
Naja, viel Spaß noch
Carmen schrieb:> Man merkt auch sehr schön am Umgangston hier und in Pcscalforen wo der> Unterschied bei der Mentalität liegt...
Bei Pascal ist halt alles besser, sogar die Foren. Es wird immer
lustiger.
> Niemand dort zerreißt C, es wird größtenteils sachlich argumentiert.
Sachliche Argumentation findet ihre Grenzen, wenn jemand daher kommt und
irgendwas von "professionellem Umfeld" im Bezug auf Pascal oder gar
BASCOM faselt. Was will man da sachlich dagegen argumentieren? Das ist
humbug.
In Pascal-Foren werden hauptsächlich Hobbyisten sein. Die Oraklen dann
munter über irgendwelche Dinge von denen sie nichts verstehen. Wie hier
diverse User über C. Und alle finden das eine tolle Diskussion.
Sozusagen Spass durch Unwissenheit. Aber wenn man täglich in C
entwickelt hält man so ein grundfalsches Geblubber halt fast nicht aus.
Hat ja nicht jeder so ein dickes Fell wie der KHB.
gruß cyblord
tja, komisch das ich genug kenne die ihr Geld mit Pascal verdienen :-)
Ich selber übrigens auch ;-)
Und sicher wird es das auch im Bascom Umfeld geben.
Vielleicht solltest Du einfach mal Deine Ansichten überprüfen.
Und den Umgangston von hier zu übertreffen ist nicht sonderlich schwer,
meinst Du nicht?
Anstatt es einfach in Frage zu stellen könntest Du natürlich einfach mal
z.B. ins LAzarus Forum schaun..aber vermtulich hst Du dazu einfach gar
keine Lust...und blidest Dir weiter Deine Meinung ohne jegliche
Grundlage.
Es gibt ne menge Professioneller Systeme z.B. auch E-lab PAscal Basis
Vielelicht nutzt Du selber eine davon und weißt es nicht mal. Denk mal
drüber nach.
Ada sagt Dir dann sicher auch nichts...und warum das
existiert..achne..das ist ja Pascalähnlich, also ne Lehrsprache..oder
nein doch nicht....
sehr Interesasant ist auch das hier
http://www.dwheeler.com/steelman/steeltab.htm
Dennoch behaupte ich wie gesagt nicht, das C schelcht ist.
Ich komem damit aber halt gar nicht klar und würde mich nicht truaen,
meien Projekte darauf umzuschreiben, sicher gibt es hier genug die das
spielend könnten, aber bevor ein mittelmäßig schelchter Programmierer
wie ich ein Gerät konstruiert das völlig misst ist, schreibe ich es
lieber in Pascal und habe keinerlei Reklamationen wegen irgendwelcher
Softwarefehler.
Karl Heinz schrieb:> Für einen Studenten ist so eine Frage nicht akzeptabel.
Ach so, ein Student, der sich zum allerersten Mal mit einer Sache
beschäftigt, der muss also bereits wissen wie es richtig geht? Weil er
Student ist?
Seltsame Sichtweise, das.
> Kleiner Tip:> bei so manchen Fragen hier im Forum ist es für den Fragesteller> wesentlich besser, wenn er nicht erwähnt, dass er die Sache für sein> Studium braucht.
Kleiner Tip: Mal versuchen, sich daran zu erinnern, wieviel man selbst
als Erstsemester über das korrekte Programmieren wusste. Ich bin mir
ziemlich sicher, dass dies bei den meisten anderen nicht viel besser
aussah als beim Threadersteller.
Mark Brandis schrieb:> Ich bin mir> ziemlich sicher, dass dies bei den meisten anderen nicht viel besser> aussah als beim Threadersteller.
Nee, glaube ich nicht. Die meisten hier, die sich über Anfänger
aufregen, sind offensichtlich schon mit einem ins Hirn implantierten K&R
auf die Welt gekommen. Wozu lernen, Erfahrungen sammeln, auch andere
Leute fragen? Man weiß das eben. Und wer Fragen stellt, bevor er alles
weiß, muß damit leben, daß er niedergemacht wird... Klingt
widersprüchlich, ist aber so.
Mark Brandis schrieb:> Ach so, ein Student, der sich zum allerersten Mal mit einer Sache> beschäftigt, der muss also bereits wissen wie es richtig geht? Weil er> Student ist?
Er beschäftig sich ja nicht zum allerersten Mal damit.
C Code schrieb:> Entschuldigung :-) weil ich gerade an der Hochschule> C-Programmieren lerne und das eine Aufgabe war.
Den Übungsaufgaben geht normalerweise eine Vorlesung voran, in der das
Wissen vermittelt wird, um die Übungsaufgaben zu lösen. Es würde mich
schwer wundern, dass in der Vorlesung niemals der ++-Operator behandelt
worden wäre.
Selbst wenn der Student die Vorlesung krankheitshalber nicht besuchen
konnte, gibt es i.Allg. ein Skript, wo man das alles nachlesen kann.
Selbst wenn es kein Skript gibt, ist es einem erwachsenen Menschen mit
Hochschulreife zuzumuten, dass er sich in der Bibliothek die
entsprechende Literatur besorgt.
Selbst wenn in der Bibliothek gerade sämtliche C-Bücher verliehen sind,
gibt es immer noch Buchhandlungen, C-Tutorials im Internet usw.
Die Wirkungsweise des ++-Operators in C ist so elementar, und das Wissen
darüber so weit verbreitet, dass es einen wirklich wundern muss, warum
dafür extra eine Frage in einem Forum formuliert werden muss.
Karl Heinz hat hier auch keinen C-Anfänger dafür kritisiert, dass er
C-Anfänger ist. Etwas Verwunderung ist aber IMHO voll gerechtfertigt,
wenn sich hier ein LEBENSanfänger plötzlich als Student entpuppt :)
vcd schrieb:> Die meisten hier, die sich über Anfänger aufregen, sind offensichtlich> schon mit einem ins Hirn implantierten K&R auf die Welt gekommen.
"Selbst wenn der Student die Vorlesung krankheitshalber nicht besuchen
konnte, gibt es i.Allg. ein Skript, wo man das alles nachlesen kann."
Oder in einem Forum nachfragt....
Carmen schrieb:> Oder in einem Forum nachfragt....
Was meinst du wie überfüllt dieses Forum wäre, wenn hier alles
nachgefragt würde, was schon längst an hunderttausend anderern Stellen
beantwortet wurde? Typische Threads würden dann so aussehen:
1
Frager: Was genau tut der "+"-Operator in C?
2
3
Antworter: Er liefert die Summe von zwei Zahlen.
4
5
Frager: Hmm, das verstehe ich nicht ganz. Kannst du ein Beispiel dazu
6
geben? Was ergibt bspw. 2+3?
7
8
Antworter: 5
9
10
Frager: Ok, und was ist 4+1?
11
12
Antworter: Auch 5
13
14
Frager: Ah, ich glaube ich hab's kapiert: Es kommt immer 5 heraus?
Yalu X. schrieb:> Aber mitunter verlaufen Threads tatsächlich in dieser Richtung.
Wie du schon schreibst. Mitunter.
Kann man das deshalb auf alle Neulinge projizieren?
Manchmal muß eben nur der Knoten platzen. Und der Fragesteller hat zwar
nach dem "++" gefragt, aber aus seiner Fragestellung vorher war zu
sehen, daß er die Konstrukte meinte, die er darüber aufgelistet hatte.
Und das ist nicht nur ein simples "++". Das sieht man ja auch daran, daß
sich nicht mal die "Fachleute" darüber einig waren. Schon diese Tatsache
zeigt ja, daß die Fragestellung durchaus berechtigt war, oder?
vcd schrieb:> Das sieht man ja auch daran, daß> sich nicht mal die "Fachleute" darüber einig waren.
Doch, die waren sich einig. Nur die Neulinge haben sich gegenseitig
verwirrt, weil sie entweder ihr Wissen nicht einschätzen können, oder
halt trotz Nichtwissens mal was sagen wollten.
vcd schrieb:> zeigt ja, daß die Fragestellung durchaus berechtigt war, oder?
Im Prinzip schon. Nur falsch adressiert. Denn die explizit aufgeführte
Fragestellung
>> was macht der Operator ++ in seiner Definition?
fragt ja nun exakt nach dem, was man in einer Sprachreferenz findet.
Also wär diese die richtige Adresse gewesen.
A. K. schrieb:> vcd schrieb:>> zeigt ja, daß die Fragestellung durchaus berechtigt war, oder?>> Im Prinzip schon. Nur falsch adressiert. Denn die explizit aufgeführte> Fragestellung>>>> was macht der Operator ++ in seiner Definition?>> fragt ja nun exakt nach dem, was man in einer Sprachreferenz findet.> Also wär diese die richtige Adresse gewesen.
Das stimmt schon so, deswegen schrieb ich ja auch:
vcd schrieb:> Und der Fragesteller hat zwar nach dem "++" gefragt,> aber aus seiner Fragestellung vorher war zu> sehen, daß er die Konstrukte meinte, die er darüber aufgelistet hatte.
Manchmal sollte man deswegen vielleicht auch "zwischen den Zeilen
lesen", dann wäre ein Großteil dieses Streites vermeidbar gewesen. :-)
Carmen schrieb:>> Und?> Hast Du angst, das das Internet orgendwann voll ist? ;-)
Hatten wir nicht letztens die Fragestellung, welche Speicherkapazität
man braucht, um das Internet abzuspeichern? ;-)
Tobias K. schrieb:> Ach ja: Wer so programmiert (mit den Konstrukten ganz oben), der frisst> auch kleine Kinder ;)> In welcher Hochschule wird sowas vermittelt?
Das ist doch nur Verwirrung für die Studenten. Bei uns im ersten
Semester Kurs "Programmieren in C". Als Abschlussprogramm musste man als
Gruppenarbeit ein größeres Programm anfertigen (nur Konsole, je nach
Programmierfähigkeit so 1500-2000 Codezeilen. Nix großes, hauptsächlich
Daten aus Datei einlesen, bearbeiten mit Commandos und wieder
rausschreiben). Natürlich ist sowas als Beweis für die
Programmierfähigkeiten der Studenten nicht genug. Also haben die
Professoren am Ende vom Semester noch eine Klausur gemacht mit genau
solchen Fragen:
- Sehen sie sich folgendes Programmstück an. Was ist die Ausgabe?
...
int i=0;
for(++i = 0;i<10;i++) {
printf("%d",++i);
i++++i;
}
printf("%d");
...
Und ähnliche Codestücke. Also Brainf*** auf höchstem Niveau.
Carmen schrieb:> "Was meinst du wie überfüllt dieses Forum wäre..:">> Und?> Hast Du angst, das das Internet orgendwann voll ist? ;-)
Das nicht, aber die Qualität dieses Forums würde darunter leiden.
Das Forum ist ja prinzipiell dazu da, Fragestellungen zum Thema
Mikrocontroller und verwandten Gebieten zu diskutieren. Die Teilnehmer
haben Spaß an diesen Diskussionen, weil die jeweiligen Fragestellungen
für sie in irgendeiner Weise interessant sind.
Natürlich gibt es immer auch Fragestellungen, wo die Antwort klar und
eindeutig ist, so dass nichts diskutiert werden muss. Auch solche Themen
sind in Ordnung, wenn die Frage nicht trivial ist, zumal die Antworten
oft nicht nur für den Fragesteller, sondern auch für stille Mitleser von
Nutzen sind.
Von Trivialfragen und den zugehörigen Antworten haben aber nur
diejenigen etwas, die zu faul sind, ein Buch aufzuschlagen oder eine
Suchmaschine zu bedienen. Für den ganzen Rest (der hoffentlich die
Mehrheit darstellt) ist das aber nur Rauschen, das die interessanteren
Themen überlagert und erst einmal herausgefiltert werden muss.
Nimmt der Anteil dieser Trivialfragen zu, sinkt gleichzeitig der
Aufwand, an die interessanten Themen heranzukommen, was längerfristig
dazu führen wird, dass diejenigen, die das Forum wirklich mit "Fleisch"
füllen, die Lust verlieren und das Forum verlassen.
Die Folge ist, dass der Anteil interessanter Diskussionen weiter sinkt
und schwierige Fragen nicht mehr oder gar falsch beantwortet werden.
Dieser Prozess setzt sich so lange fort, bis das Forum völlig wertlos
ist.
Steigt oder wird die Qualität der Forum durch unser Getexte völlig
vernab des eigentlichen Thema (Was leider bei 80% der Beiträge passiert)
Ist es nicht besser, auch eifnache Fragen eifnach zu ebantworten, als
mit Lies doch, benutze google finde es selber heruas??!
ICh meine, genau DAS verlechtert das Forum weil man sich durch einen
Wust solcher völlig nutzlosen Antworten wühlen muss
Carmen schrieb:> Ist es nicht besser, auch eifnache Fragen eifnach zu ebantworten, als> mit Lies doch, benutze google finde es selber heruas??!
Nein. Die Idee des Forums ist es Hilfe zur Selbst-Hilfe zu liefern.
Hilfe zur Selbst-Hilfe heißt nicht, eine fertige Antwort zu
präsentieren, sondern einen Weg zur Antwort zur Zeigen. Und genau dieses
Zeigen ist dann als "Lies ein C-Buch" oder ähnlches formuliert. Aber die
meisten wollen einfach nur eine fertige Antwort, ohne zu verstehen wie
man da hinkommt. Entsprechend giftig fallen da immer wieder die
Antworten aus, meiner Meinung nach zu recht.
Karl Heinz schrieb:> Tut mir leid.> Es gibt sie nämlich, die dummen Fragen.
Dem Stimme ich voll und ganz zu.
In die Kategorie "dumme Frage" fallen (für mich) sachen, wie:
"Mein Programm geht nicht, warum geht das nicht?" <-- dazu gibt es keine
weiteren angaben "was" nicht geht (kann es nicht compiliert werde,
stürzt es ab, usw.) und code gibt es natürlich auch nicht, und wenn es
mal code gibt, dann ist der code falsch abgetippt, und/oder es ist ein
code-snippet der die eigentliche Fehlerursache gar nicht enthält.
Sowas ist eine dumme Frage! Oder wie würdet ihr das nennen?
"Warum geht mein PC nicht?" <-- ohne weitere angaben ein eben so gutes
Beispiel für eine dumme Frage!
Anders gesagt: Eine "dumme Frage" ist eine Frage, auf die nicht
geantwortet werden kann, aufgrund fehlender Informationen. Die Anzahl
an Möglichkeiten, warum der PC "nicht geht", geht schlicht gegen
unendlich. Angefangen vom Netzstecker der nicht eingesteckt wurde bis
hin zu irgendeinem abgerauchten Kondensator auf dem Mainboard und andere
Dingen.
> Hilfe zur Selbst-Hilfe heißt nicht, eine fertige Antwort zu> präsentieren, sondern einen Weg zur Antwort zur Zeigen. Und genau dieses> Zeigen ist dann als "Lies ein C-Buch" oder ähnlches formuliert. Aber die> meisten wollen einfach nur eine fertige Antwort, ohne zu verstehen wie> man da hinkommt.
genau so ist es, mit dem Lesen eines C-Buches wäre die Frage des TO
beantwortet gewesen. Offenbar will der TO Geld sparen.
> Also haben die> Professoren am Ende vom Semester noch eine Klausur gemacht mit genau> solchen Fragen:>> - Sehen sie sich folgendes Programmstück an. Was ist die Ausgabe?> ...> int i=0;> for(++i = 0;i<10;i++) {> printf("%d",++i);> i++++i;> }> printf("%d");> ...>> Und ähnliche Codestücke. Also Brainf*** auf höchstem Niveau.
das sind gequälte Aufgaben ohne wirklichen Sinn mit dem einzigen Ziel
Studies auszusieben - derlei Unsinn kannst Du in so ziemlich jeder
Sprache fabrizieren. Eher ein Beispiel für schlechten Programmierstil.
Mit solchen Beispielen kann man eine gute Sprache auch vollständig
ruinieren bzw. madig machen. Schönen Gruß an Deine Profs.
Sinn und Zweck einer Programmiersprache ist aber immer das Programmieren
zu vereinfachen und nicht zu verkomplizieren.
Und wer bei Pascal oder Bascom bleiben will, kann das ruhig auch machen.
Solche Konstrukte wie das Obige gibt es in der Praxis so nicht bzw. sind
einfach nicht notwendig.
Insofern sollte man sich nicht abschrecken lassen vom bösen C.
C Code schrieb:> Äh ja, dann zeige mir mal die Definition vom Operator++, wo kann ich den> Quellcode vom Operator++ sehen.
Und jetzt wirst du auch noch frech.
Ich hab dir ja schon einmal geschrieben: Wenn du C lernen willst, dann
komm uns nicht mit hanebüchenen akademischen Fragen, weil diese Fragen
keinen Sinn haben, da C quasi diktatorisch verfaßt wurde. Wenn in C
irgendetwas so ist wie es ist, dann ist es eben so wie es ist und Basta.
Es gibt keinen logischen Grund, warum ein ++ nach nem Identifier ein
Inkrementieren ist - es ist vielmehr ein Inkrementieren, weil es von K&R
eben so als Ordre de Mufti hingeschrieben worden ist.
Setze dich hin und lerne C - und zwar selbst und AUSWENDIG. Man braucht
nicht wirklich alle in dieser Sprache möglichen Ausdrucksvarianten, man
kann auch ganz braven biederen Code schreiben. Die heutigen Compiler
können sowas recht gut optimieren, es ist deshalb kein
Performance-nachteil.
Und nochwas: Es geht unsereinem massiv auf den Nerv, wenn die Selektion
zwischen brauchbaren und unbrauchbaren Absolventen erst in der Probezeit
stattfindet, weil ein immer größerer Teil der jungen Dünnbrettbohrer an
der Uni nur gelernt hat, wie man sich mit fremden Federn durchschlängelt
- und nicht, wie man irgendetwas wirklich selber lernt um es dann auch
selber zu können.
W.S.
Mark Brandis schrieb:> Kleiner Tip: Mal versuchen, sich daran zu erinnern, wieviel man selbst> als Erstsemester über das korrekte Programmieren wusste. Ich bin mir> ziemlich sicher, dass dies bei den meisten anderen nicht viel besser> aussah als beim Threadersteller.
O doch.
Bei unsereinem sah das so aus, daß man eine Vorlesung gehört hat und
sich anschließend aus eigener Kraft (jaja durch LESEN) in die Lage
versetzt hat, selbst zu programmieren und dabei auch noch richtige
Resultate zu erzielen. Da war kein Abgucken, Abschreiben usw. dabei.
Studieren heiß sich SELBST zu bemühen.
W.S.
W.S. schrieb:> Da war kein Abgucken, Abschreiben usw. dabei.> Studieren heiß sich SELBST zu bemühen.
Mangelnde Gelegenheit kann auch zur Ehre gereichen. ;-)
Das Internet-Zeitalter ändert die Sitten
W.S. schrieb:> Bei unsereinem sah das so aus, daß man eine Vorlesung gehört hat[..]
Ach wie schön ist es doch, wenn so ein Goldkind aus seinem früheren
Leben erzählt. Und er hat sich ALLES selbst beigebracht und NIE jemanden
anderen um Rat oder Hilfe gebeten. Da könnte man direkt neidisch werden,
daß es ihm so leicht fällt, etwas zu lernen. Aber daß es vielleicht auch
Leute gibt, denen diese Gabe der Leichtigkeit nicht zugefallen ist,
kommt ihm gar nicht in den Sinn.
Ergo: Beim Programmieren vielleicht eine Leuchte, aber menschlich ein
totaler Tiefflieger. Glückwunsch!
Kali T. schrieb:> "Offenbar will der TO Geld sparen."> au man...und was ist s falsch daran?!?
Grundsätzlich erstmal nichts. Man darf aber nicht am falschen Ende
sparen. Ein Studium kostet mal grob geschätzt 40k€. Und wenn man C
programmieren lernen will, ist das das Buch das sich richtig lohnt. Gibt
es auch schon gebraucht ab 15€.