Isso não acontece.
O terminador de cadeia é um byte contendo todos os 0 bits.
O unsigned int tem dois ou quatro bytes (dependendo do seu ambiente), cada um contendo todos os 0 bits.
Os dois itens são armazenados em endereços diferentes. Seu código compilado executa operações adequadas para seqüências de caracteres no local anterior e operações adequadas para números binários não assinados no último. (A menos que você tenha um bug no seu código ou algum código perigosamente inteligente!)
Mas todos esses bytes parecem os mesmos para a CPU. Dados na memória (na maioria das arquiteturas de conjunto de instruções atualmente comuns) não possuem nenhum tipo associado a ela. Essa é uma abstração que existe apenas no código-fonte e significa algo apenas para o compilador.
Edit-added: Como exemplo: É perfeitamente possível, até mesmo comum, realizar aritmética nos bytes que compõem uma string. Se você tiver uma cadeia de caracteres ASCII de 8 bits, poderá converter as letras na cadeia entre maiúsculas e minúsculas, adicionando ou subtraindo 32 (decimal). Ou, se você estiver traduzindo para outro código de caractere, poderá usar seus valores como índices em um array cujos elementos fornecem o código de bit equivalente no outro código.
Para a CPU, os caracteres são realmente números inteiros extra-curtos. (oito bits cada, em vez de 16, 32 ou 64). Para nós, humanos, seus valores estão associados a caracteres legíveis, mas a CPU não tem idéia disso. Ele também não sabe nada sobre a convenção "C" de "null byte ends a string", (e como muitos notaram em outras respostas e comentários, há ambientes de programação nos quais essa convenção não é usada) .
Para ter certeza, existem algumas instruções em x86 / x64 que tendem a ser muito usadas com strings - o prefixo REP, por exemplo - mas você também pode usá-las em uma matriz de números inteiros, se eles atingirem o resultado desejado.