Das tut es nicht.
Der Zeichenkettenabschluss ist ein Byte, das alle 0 Bits enthält.
Das vorzeichenlose int besteht aus zwei oder vier Bytes (abhängig von Ihrer Umgebung), die jeweils alle 0 Bits enthalten.
Die beiden Elemente werden an verschiedenen Adressen gespeichert. Ihr kompilierter Code führt Operationen aus, die für Zeichenfolgen an der ersten Position und für nicht vorzeichenbehaftete Binärzahlen an der zweiten Position geeignet sind. (Es sei denn, Sie haben einen Fehler in Ihrem Code oder einen gefährlich cleveren Code!)
Aber alle diese Bytes sehen für die CPU gleich aus. Daten im Speicher (in den meisten derzeit üblichen Befehlssatzarchitekturen) sind keinem Typ zugeordnet. Das ist eine Abstraktion, die nur im Quellcode existiert und nur dem Compiler etwas bedeutet.
Bearbeiten hinzugefügt: Als Beispiel: Es ist durchaus möglich, auch häufig, Arithmetik mit den Bytes durchzuführen, aus denen eine Zeichenfolge besteht. Wenn Sie eine Zeichenfolge mit 8-Bit-ASCII-Zeichen haben, können Sie die Buchstaben in der Zeichenfolge zwischen Groß- und Kleinschreibung umwandeln, indem Sie 32 (dezimal) addieren oder subtrahieren. Wenn Sie in einen anderen Zeichencode übersetzen, können Sie deren Werte als Indizes in einem Array verwenden, dessen Elemente die entsprechende Bitcodierung im anderen Code bereitstellen.
Für die CPU sind die Zeichen wirklich sehr kurze ganze Zahlen. (jeweils acht Bits anstelle von 16, 32 oder 64.) Für uns Menschen sind ihre Werte zufällig mit lesbaren Zeichen verknüpft, aber die CPU hat keine Ahnung davon. Es weiß auch nichts über die "C" -Konvention von "null Byte endet eine Zeichenkette" (und wie viele in anderen Antworten und Kommentaren angemerkt haben, gibt es Programmierumgebungen, in denen diese Konvention überhaupt nicht verwendet wird). .
Natürlich gibt es in x86 / x64 einige Anweisungen, die häufig für Zeichenfolgen verwendet werden - beispielsweise das REP-Präfix -, aber Sie können sie auch für ein Array von Ganzzahlen verwenden, wenn sie das gewünschte Ergebnis erzielen.