Öyle değil.
String terminator, 0 bitin tümünü içeren bir bayttır.
İmzasız int, her biri 0 bit içeren (ortamınıza bağlı olarak) iki veya dört bayttır.
İki öğe farklı adreslerde saklanır. Derlenmiş kodunuz, eski konumdaki dizgilere uygun işlemleri ve ikincisindeki işaretsiz ikili sayılar için uygun işlemleri gerçekleştirir. (Kodunuzda bir hata veya tehlikeli bir şekilde akıllıca bir kod yoksa!)
Ancak bu baytların tümü CPU ile aynı görünüyor. Bellekteki veriler (şu anda yaygın olan komut kümesi mimarilerinde), onunla ilişkili hiçbir tür içermiyor. Bu sadece kaynak kodunda var olan ve sadece derleyici için bir anlam ifade eden bir soyutlamadır.
Düzenleme eklendi: Örnek olarak: Bir dizgiyi oluşturan baytlarda aritmetik işlem yapmak, yaygın olarak bile mümkündür. 8 bitlik ASCII karakterlerinden oluşan bir dizginiz varsa, 32 (ondalık) ekleyerek veya çıkararak dizedeki harfleri büyük ve küçük harf arasında dönüştürebilirsiniz. Veya başka bir karakter koduna çeviri yapıyorsanız, değerlerini diğer kodda eşdeğer bit kodlaması sağlayan bir diziye indeks olarak kullanabilirsiniz.
CPU için karakterler gerçekten çok kısa tamsayılardır. (her biri 16, 32 veya 64 yerine sekiz bit.) Bizim için değerlerinin, okunabilir karakterlerle ilişkili olduğu ortaya çıkıyor, ancak CPU'nun bu konuda hiçbir fikri yok. Aynı zamanda, "boş bayt" dizgesinin sona ermesiyle "" C "konvansiyonu hakkında hiçbir şey bilmiyor (ya da diğer cevaplarda ve yorumlarda belirtildiği gibi, bu sözleşmenin hiç kullanılmadığı programlama ortamları var) .
Emin olmak gerekirse, x86 / x64'te, örneğin REP öneki - dizeleriyle çokça kullanma eğilimi olan bazı talimatlar vardır, ancak istenen sonucu elde ederlerse, bunları bir tam sayı dizisinde de kullanabilirsiniz.