Maison > développement back-end > C++ > Comment imprimer les nombres de 1 à 1000 en C sans boucles ni instructions conditionnelles ?

Comment imprimer les nombres de 1 à 1000 en C sans boucles ni instructions conditionnelles ?

Susan Sarandon
Libérer: 2024-11-30 21:54:14
original
416 Les gens l'ont consulté

How Can You Print Numbers 1 to 1000 in C Without Loops or Conditional Statements?

Impression de 1 à 1000 sans boucle ni instructions conditionnelles

Dans le monde de la programmation, il peut être difficile d'accomplir des tâches apparemment simples sans utiliser boucle conventionnelle ou syntaxe conditionnelle. L'une de ces tâches consiste à imprimer une série de nombres de 1 à 1 000.

Compilation en assemblage sans condition

Une solution intelligente consiste à compiler un extrait de code dans des instructions d'assemblage qui manque de conditions. Considérez le code C suivant :

#include <stdio.h>
#include <stdlib.h>

void main(int j) {
  printf("%d\n", j);
  (&&main + (&&exit - &&main)*(j/1000))(j+1);
}
Copier après la connexion

Ce code utilise les opérateurs "&&" pour convertir des pointeurs de fonction et calculer un décalage basé sur le résultat de division de "j/1000". En enchaînant les appels de fonction, il imprime efficacement la séquence de nombres sans boucles ni conditions.

Une approche alternative avec des pointeurs de fonction

Une solution alternative adhère à la norme C et ne repose pas sur l'arithmétique des pointeurs de fonction :

#include <stdio.h>
#include <stdlib.h>

void f(int j)
{
    static void (*const ft[2])(int) = { f, exit };

    printf("%d\n", j);
    ft[j/1000](j + 1);
}

int main(int argc, char *argv[])
{
    f(1);
}
Copier après la connexion

Ce code utilise un tableau statique de pointeurs de fonction pour obtenir le même résultat que le exemple précédent. En sélectionnant et en appelant dynamiquement ces fonctions, cela évite l'utilisation de conditions ou de boucles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal