Como criar loops infinitos em C Programming

Cuidado com o loop infinito! Quando um programa C entra em um loop infinito, ou ele vomita saída de mais e mais, sem fim ou ele fica lá apertado e não faz nada. Bem, ele está fazendo o que você pediu para fazer, que é sentar-se e girar para sempre.

Às vezes, essa configuração é feito de propósito, mas a maioria acontece por causa de erro do programador. E com a forma como as alças são criados em C, é fácil involuntariamente circuito ao infinito.

Uma maneira comum de fazer um loop infinito ilustra um loop infinito comum, que é um erro de programação, não é um erro de sintaxe.

Uma maneira comum de FAÇA um loop infinito

# include int main () {int x-for (x = 0 X = 10-x = x + 1) {puts ( "O que você está olhando?") -} return (0) -}

O problema com o código de uma forma comum para fazer um loop infinito é que a condição de saída de para de afirmação é sempre verdade: x = 10. Lê-lo novamente se você não pegá-lo pela primeira vez, ou apenas fazer o exercício 9-18.

Exercício 1: Digite o código-fonte de uma maneira comum de fazer um loop infinito. Salvar, construir e executar.

O compilador pode avisá-lo sobre a condição verdadeira constante na instrução for. Code :: Blocks deve fazer isso, e qualquer outro compilador, se intensificaram a sua verificação de erros. Caso contrário, o programa compila e executa - infinitamente.

  • Para sair de um loop infinito, pressione Ctrl + C no teclado. Este truque só funciona para programas de console, e pode nem sempre funciona. Se isso não acontecer, você precisa matar o processo correr solto.

  • ciclos infinitos também são referidos como loops infinitos.

Como repetir indefinidamente, mas de propósito

Ocasionalmente, um programa precisa de um loop infinito. Por exemplo, um microcontrolador pode carregar um programa que é executado enquanto o dispositivo está ligado. Quando você configura um loop de propósito, a C, uma das duas afirmações é usado:

para(--)

Leia esta declaração como # 147-para sempre # 148- sem itens entre parênteses, mas ainda com os necessários dois ponto e vírgula, o loop se repete eternamente -. Mesmo depois que a vaca tussa. Aqui está o loop while equivalente:

enquanto (1)

O valor entre parênteses não precisa necessariamente ser 1- quaisquer trabalhos valor verdadeiro ou não nulos. Quando o laço é interminável de propósito, no entanto, a maioria dos programadores definir o valor para 1 simplesmente para auto-documento que eles sabem o que está acontecendo.

Como sair de um loop

Qualquer circuito pode ser rescindido imediatamente - incluindo loops infinitos - usando uma instrução break dentro do grupo de repetição do ciclo de declarações. Quando break seja encontrada, looping paradas e execução do programa pega com a próxima instrução após colchete final da loop. Tire-me daqui! demonstra o processo.

Tire-me daqui!

#include int main () {int count-count = 0-while (1) {printf ( "% d", contam) -count = count + 1-if (count> 50) break-} putchar ( ' n ') -Retornar (0) -}

O loop while na linha 8 está configurado para durar para sempre, mas o caso de teste na linha 12 pode pará-lo: Quando o valor de contagem é maior do que 50, a instrução break (consulte a Linha 13) é executado e pára de loop.

exercício 2: Criar e executar um novo projeto usando o código-fonte de tira-me daqui!

exercício 3: Reescrever o código fonte a partir da tira-me daqui! de modo que um interminável ciclo for é usado em vez de uma infinita enquanto loop.

Você não precisa construir um loop infinito de usar a instrução break. Você pode sair de qualquer loop. Quando o fizer, a execução continua com a primeira declaração após colchete final da loop.

Como você pode estragar um laço com C

Há duas maneiras comuns para atrapalhar um loop. Esses pontos de conflito surgir para iniciantes e profissionais. A única maneira de evitar essas manchas é manter um olho afiado para que você pode manchar 'em rápido.

O primeiro goof-up está especificando uma condição que nunca pode ser Met por exemplo:

para (x = 1-x == 10-x = x + 1)

Na linha anterior, a condição de saída é falso antes do loop gira uma vez, para que o loop nunca é executado. Este erro é quase tão insidiosa como a utilização de um operador de atribuição (um único sinal de igual) em vez do # 147 é igual a # 148- operador (como já visto).

Outro erro comum é colocar mal o ponto e vírgula, como em

for (x = 1-xlt; 14 x = x + 1) - {puts (# 147-Sore cirurgia no ombro # 148 -) -}

Porque a primeira linha, a instrução for, termina em um ponto e vírgula, o compilador acredita que a linha é todo o loop. O código vazia repete 13 vezes, que é o que a instrução for dita. A declaração puts () é então executada uma vez.

Esses semicolons desonestos pode ser frustrante!

O problema é pior com while porque a estrutura do-while requer um ponto e vírgula após a final, enquanto comunicado. Na verdade, esquecendo que ponto e vírgula em particular é também uma fonte de aflição. Para um loop while tradicional, você não fazer isso:

while (XLT; 14) - {puts (# 147-Sore cirurgia no ombro # 148 -) -}

A coisa severamente estúpido sobre esses erros ponto e vírgula é que o compilador não pegá-los. Ele acredita que a sua intenção é ter um laço sem declarações. Tal coisa é possível.

UMA PARA LOOP SEM CORPO

#include int main () {int x-for (x = 0-xlt; 10 x = x + 1, printf ( "% d n", x)) - retorno (0) -}

No exemplo mostrado em A fou Loop com Nenhum corpo, o ponto e vírgula é colocada na linha após a instrução for (consulte a linha 8 em A fou Loop com Nenhum corpo). Isso mostra intenção deliberada.

Você pode ver que dois itens são colocados no para parênteses da declaração, ambos separados por uma vírgula. Isso é perfeitamente legal, e ele funciona, embora não seja completamente legível.

exercício 4: Digite o código-fonte do A fou Loop com Nenhum corpo em seu editor. Construir e executar.

Embora você pode carregar itens em um de parênteses da declaração, é raro e, definitivamente, não é recomendado, pelo amor de legibilidade.

menu