>백엔드 개발 >C++ >루프나 조건문 없이 C에서 1부터 1000까지의 숫자를 어떻게 인쇄할 수 있습니까?

루프나 조건문 없이 C에서 1부터 1000까지의 숫자를 어떻게 인쇄할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-30 21:54:14431검색

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

반복이나 조건문 없이 1부터 1000까지 인쇄

프로그래밍 세계에서는 기존 루프 또는 조건부 구문. 그러한 작업 중 하나는 1부터 1000까지 일련의 숫자를 인쇄하는 것입니다.

조건부 자유 어셈블리로 컴파일

영리한 솔루션은 코드 조각을 어셈블리 지침으로 컴파일하는 것입니다. 조건문이 부족합니다. 다음 C 코드를 고려해 보세요.

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

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

이 코드는 "&&" 연산자를 활용하여 함수 포인터를 캐스팅하고 "j/1000"의 나누기 결과를 기반으로 오프셋을 계산합니다. 함수 호출을 연결함으로써 루프나 조건 없이 숫자 시퀀스를 효과적으로 인쇄합니다.

함수 포인터를 사용한 대체 접근 방식

대체 솔루션은 표준 C 및 함수 포인터 연산에 의존하지 않습니다.

#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);
}

이 코드는 함수 포인터의 정적 배열을 사용합니다. 이전 예제와 동일한 결과를 얻으려면 이러한 함수를 동적으로 선택하고 호출함으로써 조건문이나 루프의 사용을 방지합니다.

위 내용은 루프나 조건문 없이 C에서 1부터 1000까지의 숫자를 어떻게 인쇄할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.