Tuesday, 19 September 2017

C Print Int As Binary Optionen


Kranke gerade einige Sachen betreffend gute Praxis ansprechen. Dies kann wahrscheinlich ganz allgemein vereinfacht werden, aber ich werde nicht versuchen, auf das besonders zu konzentrieren. Ich sehe nicht die Notwendigkeit für, wenn (Zahl 0). Insbesondere in parsen (). Sind Sie nur überspringen weitere Berechnung, wenn die Rückkehr 0 ist. Wenn Sie dies tun, werden die Ausgaben am Ende nicht gedruckt, obwohl 0 eine gültige Zahl ist. Sie müssen nicht std :: endl in main () verwenden. Das spült auch den Puffer, der hier unnötig ist, und du machst es mehrfach. Verwenden Sie einfach n innerhalb einer print-Anweisung. Sie können es über main () definieren. So dass Sie die Funktion Prototyp zu entfernen. Es braucht nicht die Befehlszeilenparameter nur main (). Seine Steuerwege und Rückkehr bilden nicht sinnvoll zu mir. Wenn die if-Anweisung ausgeführt wird, zeigt sie eine Meldung an und gibt 0 zurück. Wenn die else-Anweisung ausgeführt wird, gibt sie eine konvertierte Ganzzahl zurück. Stattdessen sollte die Funktion nur aufgerufen werden, wenn sie etwas analysiert, was deren Hauptaufgabe ist. Funktionen sollten sich auf nur eine Sache konzentrieren. Lassen Sie den aufrufenden Code entscheiden, ob es aufgerufen werden soll. Theres keine Notwendigkeit für geschützt, wenn youre nicht Vererbung (ich glaube sogar Bjarne Stroustrup selbst hat das Hinzufügen dieses Schlüsselwort bereut). Entweder ändern Sie es zu privat. Oder entfernen Sie einfach das Keyword, da Klassen standardmäßig privat sind. Wenn Sie kein oder mehrere Datenelemente verwalten, muss dieses Programm unter Umständen keine Klassen verwenden. Dieser enthält nur Funktionen, aber Klassenfunktionen sollen den Zustand eines oder mehrerer Datenelemente verändern. Stattdessen können diese Funktionen nur freie Funktionen (Nicht-Mitglied) und die Klasse vollständig entfernt werden. Kann nur in eine Single-Ternary-Anweisung gemacht werden: Besser noch, da std :: string unterstützt. Verwenden Sie stattdessen: Die lokalen Variablen in inttobin () müssen nicht statisch sein. Sie brauchen nicht Ihre eigene Reverse-Funktion verwenden Sie einfach std :: reverse (). Wie rachet freak in den Kommentaren erwähnt hat, können Sie einfach std :: hex verwenden, um die I O zu manipulieren, wenn dieser Wert angezeigt wird. Darüber hinaus können Sie dies mit allen drei Zahlen-Systeme. Ich suche eine Funktion, um mir zu ermöglichen, die binäre Darstellung eines int drucken. Was ich bisher habe, ist Aber wenn ich anrufe bekomme ich Ausgabe wie 0000000000000000000000000000000000xtpYy (Und eine Menge unbekannter Zeichen. Ist es ein Fehler in der Funktion oder bin ich das Drucken der Adresse der Zeichen-Array oder etwas Sorry, ich kann nicht sehen, wo Im NB Der Code ist von hier aus EDIT: Es ist nicht die Hausaufgabe FYI, Im versuchen, jemand Elses Bild Manipulation Routinen in einer unbekannten Sprache zu debuggen. Wenn aber seine als Hausaufgaben, weil seine ein elementares Konzept dann fair play gefragt worden Um 17:42 Ihre Zeichenfolge ist nicht null-terminiert. Stellen Sie sicher, fügen Sie ein 0-Zeichen am Ende der Zeichenfolge, oder Sie könnten es mit calloc statt malloc zuzuordnen, die den Speicher, der Ihnen zurückgegeben wird Null wird , Gibt es andere Probleme mit diesem Code: Wie verwendet, es reserviert Speicher, wenn Sie es aufrufen, so dass der Anrufer verantwortlich für free () ing die zugeordnete string. Youll Leckspeicher, wenn Sie es nur in einem printf-Aufruf. Es macht zwei Durchläufe Über die Zahl, die unnötig ist. Sie können alles in einer Schleife tun. Heres eine alternative Implementierung, die Sie verwenden konnten. Der zweite Parameter ist ein Zeiger auf einen Puffer, in dem die Ergebniszeichenfolge gespeichert werden soll. Wenn Sie keinen Puffer haben, können Sie NULL übergeben und int2bin schreibt an einen statischen Puffer und gibt diesen an Sie zurück. Der Vorteil dieser über die ursprüngliche Implementierung ist, dass der Aufrufer nicht über freie () die Zeichenfolge, die zurückgegeben wird Sorgen zu machen. Ein Nachteil ist, dass Theres nur einen statischen Puffer, so dass nachfolgende Anrufe werden die Ergebnisse aus früheren Anrufe überschreiben. Sie konnten die Ergebnisse nicht mehrerer Aufrufe zur späteren Verwendung speichern. Auch ist es nicht threadsicher, was bedeutet, wenn Sie die Funktion auf diese Weise aus verschiedenen Threads können sie clobber anderen Strings aufrufen. Wenn das ist eine Möglichkeit youll müssen in Ihrem eigenen Puffer anstelle von NULL übergeben. Wie so: beantwortet Jun 21 09 at 17:45

No comments:

Post a Comment