Villacher Fasching is was für Leute, die das restliche Jahr zum Lachen in den Keller gehn.
Mhm, "SCNR"-User und sowas.
Villacher Fasching is was für Leute, die das restliche Jahr zum Lachen in den Keller gehn.
Mhm, "SCNR"-User und sowas.
ist ja egal wie der code aussieht, sollte nur zum testen sein ...
Je klarer der Code, umso leichter siehst du deine Fehler. Und die Leute, die du bittest, deinen Code zu debuggen, tun es lieber. Außerdem ist es einfach nur strange, grundlos die Form *(base + offset) zu verwenden.
Zitatund wo greif ich bitte auf das 3 element zu?
Im Ausdruck *(temp + 3) bzw. temp[3].
Zitatwieso sollte das ein problem sein?
Weil temp deklariert ist als vom typ char [3], deswegen sind genau die Indizes 0, 1, 2 zulässig. 3 nicht mehr, sonst hätte das Feld ja vier Elemente.
Zitatdas 3 element ist aber trotzdem bestandteil des feldes
Nein. (Diskutieren sinnlos, ich habe recht. Akzeptiers oder werde ignoriert.)
Zitatnur ist die frage wieso es sich der eine compiler erlaubt und der andere net... wobei eigentlich will ich nur wissen was den STANDARD entspricht, also ob mein compiler richtig arbeitet oder der meines kumpels.
Der Standard stellt dem Compiler explizit frei, in solchen Fällen beliebiges zu tun. (Genauer: Code zu generieren, der beliebiges tut.) Abstürze zum Beispiel sind auch erlaubt. Oder das Löschen aller deiner Daten.
ZitatAlles anzeigendenn ich hab auch noch folgendes problem:
char chf[]={'A','B','C'};
hier habe ich z.b. auch keine binäre null, d.h. es wird solange ausgegeben, bis mal zufällig im speicher ne null ist...bei meinem kumpel gehts natürlich wieder
ich muss da folgendes schreiben:
char chf[]={'A', 'B', 'C', '\0'};
welcher compiler arbeitet hier nun richtig?
Beide arbeiten wieder richtig. char chf[]={'A','B','C'} ist kein C-String, wenn du versuchst, ihn als C-String zu verwenden, machst du als Programmierer den Fehler. Der Compiler hat wiederum das Recht, zu tun, was er will.
Das könnte man hübscher, standardkonformer, idiomatischer, besser und überhaupt viel wohlriechender auch so formulieren:
#include <iostream>
using namespace std; // mag ich persönlich nicht so, aber was solls
int main()
{
char feld[] = "ABC";
char temp[3];
for (int i = 0; i < 3; i++)
temp[i] = feld[i];
for (int i2 = 0; i2 < 2; i2++)
feld[i2] = temp[i2 + 1];
feld[i2] = temp[0];
cout << feld[3] << " --- " << feld << endl;
cout << temp[3] << " --- " << temp << endl;
}
Alles anzeigen
Ohne lustige und höchst unnötige und nein, ganz bestimmt nicht "schnellere" oder "effizientere", weil nämlich ganz äquivalente, Pointerarithmetik sieht man auch gleich, daß du auf Element 3 des dreielementigen Arrays temp zuzugreifen versuchst, dessen Elemente aber 0, 1, 2 heißen. Was mit solchen illegalen Zugriffen passiert, kann sich deine Kombination aus Hardware/Betriebssystem/Compiler beliebig aussuchen. Insofern kein Wunder, daß auf einer anderen Plattform was anderes passiert.
Zitat von http://www.skype.com/help/faq/technical.htmlHow much bandwidth does Skype use while I’m in a call?
Skype automatically selects the best codec depending on the connection between yourself and the person you are calling. On average, Skype uses between 3-16 kilobytes/sec depending on bandwidth available for other party, network conditions in between, callers CPU performance, etc.
Hmm. Nehmen wir an, wir telefonieren ca. eine Stunde pro Tag, das macht 100000 Sekunden pro Monat. Im breitesten Fall kommen wir also auf 1600000 KB pro Monat, das sind ca. 1.5 GB. In der Praxis wird der Wert wohl nicht so hoch sein, und überhaupt sollten 1.5 GB heutzutage bei jedem Internetanschluss problemlos drin sein.
Du mußt nicht unbedingt mit der Sprache herumtun; wenn du nur ein paar Sätze hast, kannst du die polnischen Zeichen über Extrabefehle eingeben. Siehe z.B. http://www.terminally-incoherent.com/blog/latex-reference/ unten.
Alle Verbraucher für fünf Minuten abdrehen, um Strom zu sparen... das wird eine lustige Leistungsspitze, wenn um 20 Uhr wieder alle alles aufdrehen. Der Effekt für die Umwelt ist wohl null bis negativ.
Gut... Hmm, es gibt ein paar gute Bandnamen. Wie "Speibsackerl" zum Beispiel. Oder "The Ingeborg Bachmann Experience".
i[ot: imho sollte man aber auch in der lage sein, sich gezielter auszudrücken. ich kritisiere auch nicht jede formulierungsschwäche/rechtschreibfehler/... von dir..]
Sorry, ich wollte dir nicht auf den Schlips treten. Ich hab halt manchmal einen polemischen Stil (siehe unten). Inhaltlich ist meine Kritik aber rübergekommen, ich hoffe ohne größere Beleidigungen.
afaik war diese belehrung sehr lehrreich für mich! :ausheck:
Zitat(SCNR)
Ah, eine Abkürzung, die mich noch mehr nervt! Mal ehrlich, die stupiden Gepflogenheiten des de-Usenets können ruhig dort bleiben. Kann schon sein, daß die Piefkes zum Lachen in den Keller müssen, aber ist es in Österreich wirklich so schlimm, sich für einen kleinen Scherz nicht zu genieren, sondern dazu zu stehen, daß man ihn gemacht hat?
imho sinds bald 3.25% zinsen.
Also das ist jetzt total off-topic, aber es nervt, daß immer mehr Leute nicht verstehen, was sie selber schreiben... IMHO = in my humble opinion. Ist es deine Meinung, daß sie bald mehr Zinsen zahlen? Oder glaubst du es vielleicht eher zu wissen? Dann AFAIK = as far as I know (zum Beispiel)
Plantschkuh!, bringing you nutzlose Belehrungen since 1982
aber eine werbestrategie von mehreren unternehmen? das wäre doch sehr ungewöhnlich.........
Naja, vielleicht hat ihnen die Gewista angeboten, das mal zu probieren. Aufmerksamkeit scheints ja zu erregen, aber obs hilft... Es gibt ja die Binsenweisheit, es gäbe keine negative Werbung, aber das stimmt nicht: Seit die )§)=)%&")($% Familie Putz aufgetaucht ist, hat man mich nicht mehr in der Nähe eines Lutz gesehen.
Ich verwend http://my.opera.com/ , das tut so ziemlich die Sachen, die ich mir erwarte. Und bietet 300 MB Speicherplatz statt den 50 (oder so) von twoday.
Da Referenzen auch nur Zeiger ohne Sterndeln sind, treffen fast alle diese Punkte auch auf Referenzen zu.
ZitatFür mich persönlich ist es einfach komplett unverständlich. Ich will mich beim Programmieren nicht dauernd mit Nachdenken über den richtigen Variablenzugriff abgeben.
Fair enough, manchmal steht die elegante Formulierung der Lösung des Problems im Vordergrund; manchmal gehts um jedes letzte Stücki Performance bzw. um direkte Speicherzugriffe (wenn man Embedded Systems oder Hardwaretreiber oder Betriebssysteme schreibt), dann muß man wohl oder übel in einem konkreteren Maschinenmodell denken, inklusive Unterscheidung zwischen Stack und Heap (automatischen bzw. dynamischen Variablen).
Außerdem gibts die begründete Meinung, daß ein Programmierer (wir sind ja bitte nicht irgendwer, sondern theoretisch hochbezahlte höchstqualifizierte Denker, auch wenn sich viele für 08/15-PHP-SQL-Zeug hergeben) gefälligst wissen soll, was er tut; über Details wie Variablenzugriffe nachdenken gehört dazu. Mußt du auch in Java machen, jedesmal wenn du eine Zuweisung schreibst; kopierst du jetzt eine Referenz oder doch Daten, und ist das das, was du wirklich willst? Du könntest jetzt natürlich sagen ja, darüber muß man zwar eigentlich nachdenken, aber irgendwann hat man es im Blut und man schreibt automatisch die richtige Variante -- bingo, wenn es bei Referenzen so ist, ist es bei Zeigern auch so.
ZitatEinheitliche Referenzen immer und überall sind z.B. in Java sehr komfortabel.
Einheitliche Referenzen immer und überall sind in Smalltalk komfortabel und dementsprechend langsam; in Java sind einheitliche Referenzen nicht vorhanden. In anderen Worten: Erklär einem Anfänger, der sich zum Glück nicht mit Zeigern plagen muß, den Unterschied zwischen int und Integer.
funktinoiert auch soweit, nur dass er die seitenbreite völlig ignoriert und einfach rausschreibt, anstatt den text automatisch umzubrechen..
Statt mit 'l' links ausgerichteten Text zu verlangen, mußt du mit p{spaltenbreite} verlangen, daß Absätze (paragraph) gesetzt werden. D.h. ändere die Zeile
auf sowas wie
Mit den Breiten kannst du natürlich spielen.
(Noch ein Tip zum um-Hilfe-fragen: Es hat in diesem Fall zwar nur ein paar sehr wenige Zeilen gebraucht, dein Codefragment zu einem vollständigen kompilierbaren Latex-Dokument zu machen, aber es wäre nett gewesen, wenn du das übernommen hättest; d.h. an den Anfang ein \documentclass, \usepackages etc., damit der dir helfen wollende das Ganze kopieren und gleich testen kann, ohne selber mit sowas rumtun zu müssen. Wenn man mir Code vorsetzt, den ich zuerst umständlich kompilierbar machen muß, bin ich persönlich, und ich nehme an viele andere auch, gleich etwas weniger bereit zu helfen.)
Zitat von klausiIch gebe zu, mir fehlt da der genaue Einblick, aber wozu dazwischen unterscheiden?
"Hardwarenahe Programmierung" ist ein schwammiger Begriff, aber er kann zum Beispiel bedeuten, daß man an ganz konkrete fixe Speicheradressen zugreifen muß, inklusive Adressarithmetik (daher Pointer, siehe gleich), und daß die Befehle und Datentypen der Hochsprache irgendwie möglichst direkt auf die zugrundeliegende Maschine abgebildet werden (daher auch primitive Datentypen, die nicht über Pointer oder Referenzen referenziert werden).
Jetzt kann man in C-Syntax sowas schreiben (Skizze):
#define MEIN_MEMORY_MAPPED_INPUTREGISTER ((unsigned char *) 0x283A82FE) /* siehe Prozessor-Doku */
#define MEIN_MEMORY_MAPPED_OUTPUTREGISTER ((unsigned int *) 0x8D92A9CA)
#define MEINE_DINGSBUMSTABELLE ((unsigned int *) 0x0000ABCD)
unsigned char das_will_ich_wissen = *MEIN_MEMORY_MAPPED_INPUTREGISTER;
unsigned int *da_will_ich_hinschreiben;
*da_will_ich_hinschreiben = das_will_ich_wissen + 3;
MEINE_DINGSBUMSTABELLE[42] = 23;
Um das so relativ angenehm ausdrücken zu können, braucht man Pointer.
In Java-ähnlicher Syntax würde das dann vielleicht so aussehen:
Address input = new Address(0x283A82FE);
Address output = new Address(0x8D92A9CA);
Address tabelle = new Address(0x0000ABCD);
char sagsMir = input.readChar();
output.writeInt(sagsMir + 3);
tabelle.writeIntWithOffset(23, 42);
Ist natürlich möglich, das so zu formulieren; stellt sich die Frage, ob es Sinn hat, so eine Sprache zu konstruieren, nur damit der Programmierer mehr tippen kann als in C. Wenn Address in diesem Beispiel eine echte Klasse ist, hat man Konstruktor- und Methodenaufrufe, die das ganze um Größenordnungen langsamer machen als die C-Variante; wenn es keine echte Klasse ist, hat man eine Sprache, in der alles wie eine Klasse aussieht, einiges aber keine Klasse ist. Auch nicht wahnsinnig sauber.
Scheint mir nur ein weiterer C-Klon zu sein, ich sehe da keine großen Reformen.
Naja, was sind "große Reformen"? Schon allein Support für Klassen und für Schleifenkonstrukte mit Typinferenz für Laufvariable deuten auf alles andere als einen C-Klon hin. Erweiterung ja vielleicht, ist ja auch nicht unbedingt schlecht. Wie auch ein "Klon", der einige der nervigeren Probleme beseitigt, nicht unbedingt schlecht wäre.
ZitatIch würde mir eine hardwarenahe Sprache mit java-ähnlicher Syntax wünschen (was aber anscheinend ein Widerspruch in sich sein dürfte).
Was meinst du mit Syntax? Für "hardwarenahe" Programmierung ist z.B. die von dir blöd gefundene Unterscheidung zwischen Stack- und Heapobjekten (Zeiger/Referenzen vs. nicht-Zeiger/Referenzen) wichtig.
Probieren geht über studieren:
Oder auch "probieren geht in Richtung Sachen lernen, die bei dieser Version von diesem Compiler so sind, aber bei einem anderen Compiler oder auch nur einer anderen Version von diesem Compiler vielleicht ganz anders".
Macht er aber in dem Fall eh - durch Einbindung der Headerdateien. Nur wenn A.h resp. B.h _nicht_ eingebunden werden sollen, muss man "class X" forward deklarieren.
Die Einbindung ändert nichts daran, daß es zyklische Abhängigkeiten zwischen den Klassen gibt. Die Deklaration von B kommt vor jeglicher Deklaration von A, also gibts bei der Deklaration "A* a;" einen Fehler.
ZitatUnd die Fehlermeldung wäre auch interessant!
g++ liefert da, wie leider oft bei unbekannten Typen, nur einen syntax error ohne nähere Details.
Schon blöd, wenn das eine Multiple-Joice-Frage, die mit Punkten bewertet ist, ist.
Kann schon sein, daß das eine blöde Frage ist. Was waren die Antwortmöglichkeiten?
printf und scanf haben da unterschiedliche Formatzeichen, die darf man nicht verwechseln.
Oder meinst Du was ganz anderes und bist nur nicht fähig das Ganze in deutsche Sätze zu fassen?
Das muß es sein. Ich probiere es mit einfachen Hauptsätzen. Write-Only Memory ist ein Witz. Haha, lustig. Oh, der vorige Satz war kein Hauptsatz. Er hatte kein Verb. Write-Only Memory ist ein Witz. Write-Only Memory war schon immer ein Witz. Write-Only Memory gibt es nicht. Du verstehst das nicht. Alle halten dich für blöd. Alle lachen über dich.