Frage

Warum bietet Java keine Unterstützung für vorzeichenlose Ganzzahlen?

Das scheint mir ein merkwürdiges Versäumnis zu sein, wenn man bedenkt, dass man damit Code schreiben kann, der bei unerwartet großen Eingaben weniger wahrscheinlich zu Überläufen führt.

Darüber hinaus kann die Verwendung vorzeichenloser Ganzzahlen eine Form der Selbstdokumentation sein, da sie darauf hinweisen, dass der Wert, den das vorzeichenlose int enthalten sollte, niemals negativ sein sollte.

Schließlich können in manchen Fällen vorzeichenlose Ganzzahlen für bestimmte Operationen, beispielsweise Divisionen, effizienter sein.

Was ist der Nachteil daran, diese einzubeziehen?

War es hilfreich?

Lösung

Dies ist von einem Interview mit Gosling und andere , um Einfachheit:

  

Gosling: Für mich als Sprach Designer, die ich wirklich nicht, mich wie in diesen Tagen zählen, was „einfache“ wirklich endete Bedeutung war, konnte ich erwarten J. Zufall Entwickler die Spezifikation in seinem Kopf zu halten. Diese Definition besagt, dass zum Beispiel Java ist nicht - und in der Tat viele dieser Sprachen mit viel Eckfällen enden, Dinge, die niemand wirklich versteht. Quiz jeden C-Entwickler über nicht unterzeichnet, und schon bald entdecken Sie, dass so gut wie keine C-Entwickler tatsächlich verstehen, was mit unsigned weitergeht, was unsigned-Arithmetik ist. Dinge wie die C-Komplex hergestellt. Die Sprache Teil von Java ist, glaube ich, ziemlich einfach. Die Bibliotheken, die Sie haben zu suchen.

Andere Tipps

Beim Lesen zwischen den Zeilen, ich glaube, die Logik so etwas wie dies:

  • Regel wollten die Java-Designer das Repertoire von Datentypen zur Verfügung
  • vereinfachen
  • für den täglichen Gebrauch, fühlte sie, dass die häufigste Bedarf an signierten Datentypen war
  • für die Umsetzung bestimmter Algorithmen ist unsigned Arithmetik manchmal benötigt, aber die Art von Programmierern, die solche Algorithmen auch das Wissen unsigned-Arithmetik zu „arbeiten rund“ zu tun hätte umsetzen würde mit signierten Datentypen

Meistens ich würde sagen, es eine vernünftige Entscheidung ist. Möglicherweise hätte ich:

  • gemacht Byte ohne Vorzeichen, oder hat zumindest eine mit / ohne Vorzeichen Alternativen zur Verfügung gestellt, möglicherweise mit unterschiedlichen Namen, für diesen einen Datentyp (so dass es für die Konsistenz gut unterzeichnet, aber wenn Sie brauchen immer einen Byte mit Vorzeichen?)
  • weggemacht 'kurz' (Wann haben Sie zuletzt Verwendung 16-Bit-Arithmetik unterzeichnet?)

Doch mit ein wenig kludging, Operationen auf Werte ohne Vorzeichen bis zu 32 Bits sind nicht schlecht tooo, und die meisten Menschen brauchen keine unsigned 64-Bit-Division oder Vergleich.

Dies ist eine ältere Frage und pat hat kurz erwähnen char, ich dachte nur, sollte ich für andere auf diese erweitern, die sich dieses auf der Straße schauen. Schauen wir uns die Java Urtyp einen genaueren Blick:

byte - 8-Bit-Ganzzahl mit Vorzeichen

short - 16-Bit-Ganzzahl mit Vorzeichen

int - 32-Bit-Ganzzahl mit Vorzeichen

long - 64-Bit-Ganzzahl mit Vorzeichen

char - 16-Bit-Zeichen (unsigned integer)

Obwohl char nicht unsigned Arithmetik nicht unterstützt, kann es im wesentlichen als unsigned ganze Zahl behandelt werden. Sie würden ausdrücklich arithmetische Operationen zurück in char werfen müssen, aber es Ihnen eine Möglichkeit bereitstellt unsigned Zahlen angeben.

char a = 0;
char b = 6;
a += 1;
a = (char) (a * b);
a = (char) (a + b);
a = (char) (a - 16);
b = (char) (b % 3);
b = (char) (b / a);
//a = -1; // Generates complier error, must be cast to char
System.out.println(a); // Prints ? 
System.out.println((int) a); // Prints 65532
System.out.println((short) a); // Prints -4
short c = -4;
System.out.println((int) c); // Prints -4, notice the difference with char
a *= 2;
a -= 6;
a /= 3;
a %= 7;
a++;
a--;

Ja, es gibt keine direkte Unterstützung für ganze Zahlen ohne Vorzeichen (natürlich, ich würde nicht die meisten meiner Operationen in char müssen zurückgeworfen, wenn es eine direkte Unterstützung war). Es besteht jedoch sicherlich ein nicht signierten primitiven Datentypen. Ich hätte gern einen Byte ohne Vorzeichen als auch gesehen zu haben, aber ich denke, die Speicherkosten zu verdoppeln und stattdessen char ist ein gangbarer Weg.


Bearbeiten

Mit JDK8 gibt es neue APIs für Long und Integer die Hilfsmethoden zur Verfügung stellen, wenn Behandlung long und int Werte als Werte ohne Vorzeichen.

  • compareUnsigned
  • divideUnsigned
  • parseUnsignedInt
  • parseUnsignedLong
  • remainderUnsigned
  • toUnsignedLong
  • toUnsignedString

Zusätzlich Guava bietet eine Reihe von Hilfsmethoden für an den Integer-Typen, ähnliche Dinge zu tun was dazu beiträgt, die Lücke durch den Mangel an native Unterstützung für unsigned ganze Zahlen links zu schließen.

Java tut unsigned-Typen haben, oder zumindest ein: char ist ein unsigned short. Also, was Entschuldigung Gosling wirft es ist wirklich nur seine Unkenntnis, warum es keine andere unsigned-Typen sind.

Auch Short-Typen: Shorts die ganze Zeit für Multimedia verwendet. Der Grund dafür ist, dass Sie zwei Proben in einer einzigen 32-Bit unsigned long und vectorize viele Operationen passen. Das Gleiche gilt für 8-Bit-Daten und Byte ohne Vorzeichen. Sie können passen 4 oder 8 Proben in einem Register für Vektorisierung.

Sobald mit und ohne Vorzeichen ints werden in einem Ausdruck vermischt Dinge beginnen, chaotisch zu bekommen und Sie wahrscheinlich verlieren Informationen. Einschränken des Java unterzeichnet Ints löscht nur wirklich Dinge. Ich bin froh, ich habe nicht über das gesamte / ohne Vorzeichen Geschäft zu kümmern, obwohl ich manchmal das achte Bit in einem Byte verpassen.

http://skeletoncoder.blogspot.com/ 2006/09 / java-Tutorials-warum-no-unsigned.html

Dieser Typ sagt, weil der C-Standard Operationen, die nicht signiert und signiert Ints definiert als unsigned behandelt werden. Dies könnte negativ unterzeichnet ganze Zahlen dazu führen, dass in einem groß unsigned int rollen, was möglicherweise Fehler verursachen.

Ich denke, Java ist in Ordnung, wie es ist, ohne Vorzeichen Hinzufügen es ohne viel Gewinn erschweren würde. Auch mit dem vereinfachten Integer-Modell, die meist Java-Programmierer nicht wissen, wie die grundlegenden numerischen Typen verhalten sich - gerade das Buch lesen Java Puzzlers zu sehen, welche Missverständnisse Sie könnten halten.

Wie für praktische Ratschläge:

  • Wenn Sie Ihre Werte etwas willkürlich Größe und passen nicht in int, Verwendung long. Wenn sie passen nicht in long Verwendung BigInteger.

  • Mit den kleineren Typen nur für Arrays, wenn Sie brauchen Platz zu sparen.

  • Wenn Sie genau 64/32/16/8 Bits, Verwendung long / int / short / byte und sich Gedanken über das Vorzeichenbit stoppen, außer für die Division, Vergleich, Rechtsverschiebung und Gießen.

Siehe auch diese beantworten über „Portierung ein Zufallszahlengenerator von C nach Java“.

Mit JDK8 es für sie tut etwas Unterstützung haben.

Wir können noch die volle Unterstützung von unsigned Typen in Java trotz Gosling Bedenken sehen.

Ich weiß, dass dieser Beitrag zu alt ist; jedoch für Ihr Interesse, in Java 8 und höher, können Sie den int Datentyp verwenden, um einen nicht signiertes 32-Bit-Integer darstellen, der einen Minimalwert von 0 und einen maximalen Wert von 2 32 -1 . Verwenden Sie die Integer Klasse int Datentyp als unsigned integer und statische Methoden wie compareUnsigned() zu verwenden, divideUnsigned() usw. wurde die Integer Klasse hinzugefügt, um die arithmetischen Operationen für ganze Zahlen ohne Vorzeichen zu unterstützen.

Ich habe Geschichten gehört, dass sie nahe der Orignal Java-Release enthalten sein. Oak war der Vorläufer zu Java und in einigen spec Dokumenten gibt es erwähnt usigned Werte. Leider machte diese nie in die Java-Sprache. Soweit man sie haben, um herauszufinden, konnte einfach nicht umgesetzt bekommen, wahrscheinlich aufgrund einer Zeitbeschränkung.

Ich habe einmal ein C ++ Kurs mit jemandem auf dem C ++ Standards Committee, die implizierten, dass Java die richtige Entscheidung ganze Zahlen ohne Vorzeichen zu vermeiden gemacht, weil (1) die meisten Programme, die ganzen Zahlen ohne Vorzeichen verwenden kann, mit signierten Zahlen genauso gut tun, und das ist natürlichere in Bezug darauf, wie Menschen denken, und (2) unter Verwendung von unsignierten ganzen Zahlen ergeben viele einfache, aber schwer zu debuggen Problemen wie integer-Arithmetik-Überlauf und Bits zu verlieren zu schaffen, wenn zwischen mit und ohne Vorzeichen Typen konvertiert werden. Wenn Sie subtrahieren fälschlicherweise 1 von 0 unterzeichnet ganze Zahlen mit mehr es oft schnell bewirkt, dass Ihr Programm zum Absturz zu bringen und macht es leichter, den Fehler zu finden, als wenn es sich um Packungen zu 2 ^ 32-1 und Compiler und statische Analyse-Tools und Laufzeitprüfungen müssen vorausgesetzt, dass Sie wissen, was Sie tun, da Sie nicht signierte Arithmetik verwenden gewählt haben. Auch negative Zahlen wie -1 oft etwas Nützliches, wie ein Feld darstellen werden ignoriert / notleidenden / ungesetzt während, wenn Sie ohne Vorzeichen wurden unter Verwendung würden Sie einen besonderen Wert wie 2 ^ 32 reservieren müssen -. 1 oder etwas ähnliches

Vor langer Zeit, wenn der Speicher begrenzt war und Prozessoren automatisch nicht auf 64 Bit auf einmal arbeiten, gezählt jedes Bit viel mehr, so vs unsigned Bytes oder Shorts tatsächlich viel unterzeichnet hat öfter importierten und war offensichtlich die richtige Design-Entscheidung . Heute mit nur ein signiertes int ist mehr als ausreichend, in fast allen regulären Programmierung Fällen und wenn Ihr Programm wirklich braucht Werte zu verwenden, größer als 2 ^ 31-1, Sie wollen oft nur eine lange sowieso. Sobald Sie in das Gebiet der Verwendung von Long-Positionen sind, ist es noch schwieriger, einen Grund zu kommen, warum Sie wirklich nicht mit 2 ^ 63 erhalten, indem können - 1 positive ganze Zahlen sind. Jedes Mal, wenn wir zu 128-Bit-Prozessoren gehen werde es noch weniger ein Problem sein.

Ihre Frage lautet: "Warum nicht die Java-Unterstützung unsigned ints"?

Und meine Antwort auf Ihre Frage ist, dass Java will, dass alle seine primitive Typen: Byte , char , kurz , int und lang Byte behandelt werden soll, Wort , dword und qword ist, wie genau in der Montage und die Java-Operatoren unterzeichnet Operationen auf all seinen primitive Typen mit Ausnahme von char , sondern nur auf char sind sie nur 16-Bit ohne Vorzeichen.

So statische Methoden nehmen an, die unsigned Operationen auch für beide 32 und 64 Bit sein.

Sie müssen letzte Klasse, des statischen Methoden kann für die unsigned aufgerufen werden Operationen.

Sie können diese letzte Klasse erstellen, es nennen, wie Name, den Sie wollen und implementieren es statische Methoden.

Wenn Sie keine Ahnung, wie die statischen Methoden implementieren dann diese Link rel="nofollow kann Ihnen helfen.

Meiner Meinung nach, ist Java nicht ähnlich wie C ++ bei allen , wenn es weder Unterstützung unsigned Typen noch Überladen von Operatoren, also denke ich, dass Java sollte sowohl von C ++ und C.

als völlig anderer Sprache behandelt werden

Es ist auch völlig anders im Namen der Sprachen, die von der Art und Weise.

Also ich nicht in Java empfehlen Code ähnlich C zu geben und ich empfehle nicht, Code wie C ++ überhaupt zu geben, weil dann in Java werden Sie nicht in der Lage sein, zu tun, was Sie als nächstes tun wollen in C ++, dh den Code wird wie die C ++ wie überhaupt und das ist für mich schlecht zu codieren sein, um den Stil in der Mitte zu ändern.

nicht fortgesetzt werden

Ich empfehle für die signierten Operationen auch zu schreiben und statische Methoden zu verwenden, so dass Sie in der Code Mischung von Operatoren und statischer Methoden für beide mit und ohne Vorzeichen Operationen nicht sehen, es sei denn, Sie nur signierte Operationen im Code benötigen, und es ist in Ordnung nur die Operatoren zu verwenden.

Auch empfehle ich zu vermeiden, mit kurz , int und lang primitiven Typen, und verwenden Sie Wort , < strong> dword und qword jeweils statt und Sie sind rufen über die statischen Methoden für unsigned Operationen und / oder Operationen anstelle von Betreibern unterzeichnet.

Wenn Sie sind nur signierte Operationen zu tun, und die Betreiber nur im Code verwendet, dann ist dies in Ordnung ist, diese primitiven Typen kurz zu verwenden , int und lang .

Eigentlich Wort , dword und qword tun nicht gibt es in der Sprache, aber Sie können erstellen neue Klasse für jeden und die Durchführung jeder sollte sehr einfach sein:

Die Klasse Wort hält den primitiven Typ kurz nur die Klasse dword hält den Urtyp int nur und die Klasse qword hält den Urtyp lang nur. Nun sind alle ohne Vorzeichen und die signierten Methoden als statische oder nicht, wie Sie Ihre Wahl, können Sie in jeder Klasse implementieren, dh alle 16-Bit-Operationen sowohl ohne Vorzeichen und signiert von Bedeutung Namen geben auf der Seite Wort Klasse, die alle die 32-Bit-Operationen sowohl ohne Vorzeichen und signiert von Bedeutung Namen geben auf der Seite dword Klasse und alle 64-Bit-Operationen sowohl ohne Vorzeichen und durch Sinngebung Namen auf der qword Klasse unterzeichnet.

Wenn Sie nicht wie zu viele verschiedene Namen geben für jede Methode, können Sie immer in Java verwenden Überlastung, gut zu lesen, dass Java hat nicht entfernen, dass auch!

Wenn Sie Methoden wollen, anstatt Betreiber für 8-Bit unterzeichnet oArbeitsvorgänge und Methoden für die 8-Bit unsigned Operationen, die keine Operatoren überhaupt haben, dann können Sie die Byte Klasse (beachten Sie, dass der erste Buchstabe ‚B‘ Kapital ist, schaffen so ist dies nicht der primitive Typ Byte ) und die Methoden in dieser Klasse implementieren.

Über wert vorbei und vorbei Referenz:

Wenn ich nicht falsch bin, wie in C #, sind primitive Objekte natürlich von Wert übergeben, sondern Klassenobjekte werden durch Bezugnahme natürlich übergeben, so dass bedeutet, dass Objekte vom Typ Byte , Wort , dword und qword wird unter Bezugnahme und nicht nach Wert standardmäßig übergeben werden. Ich wünsche Java hatte struct Objekte wie C # hat, so alle Byte , Wort , dword und qword implementiert werden könnte, um seine struct anstelle von Klasse , so standardmäßig sie von Wert übergeben wurden und nicht durch Verweis standardmäßig wie jede Struktur Objekt in C #, wie die primitiven Typen werden nach Wert und nicht standardmäßig als Verweis übergeben, aber denn das Java schlechter als C # und wir müssen damit umgehen, dann gibt es nur Klassen und Schnittstellen, die durch Verweis und nicht nach Wert standardmäßig übergeben werden. Also, wenn Sie wollen passieren Byte , Wort , dword und qword Objekte von Wert und nicht nach, wie anderes Klassenobjekt in Java und auch in C #, werden Sie einfach haben, um den copy-Konstruktor zu verwenden und das ist es.

Das ist die einzige Lösung, die ich darüber nachdenken kann. Ich wünschte nur, dass ich konnte nur typedef die primitiven Typen zu Wort, dword und qword, aber Java weder Unterstützung typedef noch überhaupt verwendet wird, im Gegensatz zu C #, die unterstützt mit , die an die C des typedef entsprechen.

Über Ausgabe:

Für die gleiche Folge von Bits , können Sie sie auf viele Arten drucken: Wie binär, als Dezimalzahl (wie die Bedeutung von% u in C printf), als Oktal (wie die Bedeutung von% o in printf C), als hexadezimale (wie die Bedeutung von x% in C printf) und als ganze Zahl (wie die Bedeutung der in% d C printf).

Beachten Sie, dass C printf kennt nicht die Art der Variablen als Parameter an die Funktion übergeben werden, so printf den Typ jeder Variable nur aus dem char * Objekt weiß auf den ersten Parameter der Funktion übergeben.

So in jeder der Klassen: Byte , Wort , dword und qword können Sie Druck implementieren Verfahren und die Funktionalität von printf erhalten, auch wenn der Urtyp der Klasse unterzeichnet ist, können Sie immer noch durch folgende einige Algorithmus die logische und Verschiebeoperationen als unsigned zu drucken, um die Ziffern zu bekommen, um die Ausgabe zu drucken.

Leider ist der Link Ich habe Ihnen nicht doch, wie diese Druckverfahren zu implementieren, aber ich bin sicher, dass Sie für die Algorithmen Google können Sie diese Druckverfahren implementieren müssen.

Das ist alles, was ich kann Ihre Frage beantworten und schlagen Sie vor.

Da unsigned Typ ist das pure Böse.

Die Tatsache, dass in C unsigned - int unsigned produziert noch mehr Übel.

Hier ist eine Momentaufnahme des Problems, das ich verbrannt mehr als einmal:

// We have odd positive number of rays, 
// consecutive ones at angle delta from each other.
assert( rays.size() > 0 && rays.size() % 2 == 1 );

// Get a set of ray at delta angle between them.
for( size_t n = 0; n < rays.size(); ++n )
{
    // Compute the angle between nth ray and the middle one.
    // The index of the middle one is (rays.size() - 1) / 2,
    // the rays are evenly spaced at angle delta, therefore
    // the magnitude of the angle between nth ray and the 
    // middle one is: 
    double angle = delta * fabs( n - (rays.size() - 1) / 2 ); 

    // Do something else ...
}

Haben Sie die Wanze schon bemerkt? Ich bekenne, ich sah es nur nach Rücksprache mit dem Debugger tritt in.

Da n von Typ ohne Vorzeichen ist size_t der gesamte Ausdruck n - (rays.size() - 1) / 2 als unsigned auswertet. Dieser Ausdruck soll ein unterzeichnet Position des nth Strahl von der Mitte sein: 1. Strahl von der Mitte auf der linken Seite hätte Position -1, würde der erste auf der rechten Seite haben Position 1 usw. nach abs Wert zu nehmen und durch den delta Winkel multipliziert ich den Winkel zwischen nth ray und dem mittleren bekommen würde.

Leider ist für mich der obige Ausdruck enthielt das Böse nicht signierten und stattdessen zu der Bewertung, sagen wir, -1, ausgewertet zu 2 ^ 32-1. Die anschließende Umwandlung der Fehler versiegelt double.

Nach einem Fehler oder zwei, die durch den Missbrauch von unsigned Arithmetik hat man fragen zu beginnen, ob das zusätzliche Bit bekommt man wert ist die zusätzliche Mühe. Ich versuche, so viel wie möglich, jegliche Verwendung von unsigned Typen in der Arithmetik zu vermeiden, obwohl es immer noch verwende für Nicht-Rechenoperationen wie binäre Masken.

Es gibt ein paar Juwelen in der „C“-Spezifikation, die Java aus pragmatischen Gründen weggelassen hat, die aber mit der Nachfrage der Entwickler (Schließungen usw.) langsam zurückkommen.

Ich erwähne einen ersten, weil er mit dieser Diskussion zusammenhängt;die Einhaltung von Zeigerwerten zur vorzeichenlosen Ganzzahlarithmetik.Und in Bezug auf dieses Thread-Thema die Schwierigkeit, die vorzeichenlose Semantik in der signierten Welt von Java beizubehalten.

Ich schätze, wenn man ein Dennis Ritchie-Alter Ego beauftragt hätte, Goslings Designteam zu beraten, hätte es vorgeschlagen, Signed eine „Null im Unendlichen“ zu geben, sodass alle Adressen-Offset-Anfragen zuerst ihre ALGEBRAISCHE RINGGRÖSSE addieren würden, um negative Werte zu vermeiden.

Auf diese Weise kann ein auf das Array geworfener Offset niemals einen SEGFAULT erzeugen.Zum Beispiel in einer gekapselten Klasse, die ich RingArray of Doubles nenne, die vorzeichenloses Verhalten benötigt – im Kontext „selbstrotierende Schleife“:

// ...
// Housekeeping state variable
long entrycount;     // A sequence number
int cycle;           // Number of loops cycled
int size;            // Active size of the array because size<modulus during cycle 0
int modulus;         // Maximal size of the array

// Ring state variables
private int head;   // The 'head' of the Ring
private int tail;   // The ring iterator 'cursor'
// tail may get the current cursor position
// and head gets the old tail value
// there are other semantic variations possible

// The Array state variable
double [] darray;    // The array of doubles

// somewhere in constructor
public RingArray(int modulus) {
    super();
    this.modulus = modulus;
    tail =  head =  cycle = 0;
    darray = new double[modulus];
// ...
}
// ...
double getElementAt(int offset){
    return darray[(tail+modulus+offset%modulus)%modulus];
}
//  remember, the above is treating steady-state where size==modulus
// ...

Das obige RingArray würde niemals von einem negativen Index „kommen“, selbst wenn ein böswilliger Anforderer dies versuchen würde.Denken Sie daran, dass es auch viele legitime Anfragen gibt, nach früheren (negativen) Indexwerten zu fragen.

Hinweis:Der äußere %modulus dereferenziert legitime Anfragen, während der innere %modulus offensichtliche Böswilligkeit von Negativen maskiert, die negativer sind als -modulus.Wenn dies jemals in einem Java +.. +9 || erscheinen würde 8+ ..+ spec, dann würde das Problem wirklich zu einem "Programmierer" werden, der "Fehler" nicht selbst drehen kann.

Ich bin sicher, dass der sogenannte Java-Unsigned-Int-Mangel mit dem oben genannten Einzeiler ausgeglichen werden kann.

PS:Um der obigen RingArray-Verwaltung einen Kontext zu geben, finden Sie hier eine mögliche „Set“-Operation, die mit der obigen „Get“-Elementoperation übereinstimmt:

void addElement(long entrycount,double value){ // to be called only by the keeper of entrycount
    this.entrycount= entrycount;
    cycle = (int)entrycount/modulus;
    if(cycle==0){                       // start-up is when the ring is being populated the first time around
        size = (int)entrycount;         // during start-up, size is less than modulus so use modulo size arithmetic
        tail = (int)entrycount%size;    //  during start-up
    }
    else {
        size = modulus;
        head = tail;
        tail = (int)entrycount%modulus; //  after start-up
    }
    darray[head] = value;               //  always overwrite old tail
}

kann ich denke an eine unglückliche Nebenwirkung. In Java Embedded-Datenbanken, ist die Anzahl der IDs, die Sie mit einem 32-Bit-ID-Feld haben können 2 ^ 31, nicht mehr als 2 ^ 32 (~ 2billion, nicht ~ 4 Milliarden).

Der Grund IMHO ist, weil sie sind / zu faul waren, diesen Fehler zu implementieren / korrigieren. dass C / C ++ Programmierer darauf hindeutet, versteht nicht, ohne Vorzeichen, Struktur, Vereinigung, Bitmarkierung ... Ist nur grotesk.

Ether Sie sprechen mit einem grundlegenden / bash / Java-Programmierer am Rande des Beginns ein la C programmieren, ohne wirklichen Kenntnisse, um diese Sprache oder Sie sprechen nur aus deinem eigenen Kopf. ;)

, wenn Sie jeden Tag auf Format umgehen entweder aus einer Datei oder Hardware, die Sie zu fragen beginnen, was zum Teufel sie dachten.

Ein gutes Beispiel wäre hier versuchen, ein Byte ohne Vorzeichen als selbstdrehende Schleife zu verwenden. Für diejenigen von Ihnen, die nicht den letzten Satz verstehen, wie auf der Erde Sie sich nennen ein Programmierer.

DC

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top