LoginSignup
5
0

More than 5 years have passed since last update.

人間はwhile();の幅があれば生きていけるか?

Last updated at Posted at 2016-12-10

(注:しょーもない小ネタです)
K&Rで有名な、このコードスタイル。

while(*dst++ = *src++);

コレのように、while();()内の制御式だけでプログラムを書くことは可能か?

言い換えれば・・・人間はwhile();の幅があれば生きていけるのだろうか?(←これが言いたかった)

Hello_world!
#include <stdio.h>
while(!printf("Hello world!\n"));
//Hello world!
「ピザ」って10回言ってみて
int i=0;
while(printf(++i<n?"ピザ,":"ピザ\n"),i-n);
//ピザ,ピザ,ピザ,ピザ,ピザ,ピザ,ピザ,ピザ,ピザ,ピザ
nの階乗
#include <stdio.h>

int i=0,n=10;
while(n<=1?!(n=1):(i||(i=n-1),(n*=i,--i)));
// n==3628800
FizzBuzz
#include <stdio.h>

int i=0,n=15;
while(++i,printf(i%15?(i%3?(i%5?"%d":"Buzz"):"Fizz"):"FizzBuzz",i),printf(i<n?" ":"\n"),i-n);
// 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
nを2進数で出力
#include <stdio.h>
#include <limits.h>

int i=0,n=255;
while(i--||(i=sizeof n*CHAR_BIT-1),printf(i?"%d":"%d\n",!!(n&1<<i)),i);
//n=255         -> 00...011111111
//n=2147483647  -> 01...1
//n=-1          -> 11...1
//n=-2147483648 -> 10...0

結論

(ヘッダのインクルードと変数宣言定義を見なかったことにすれば)
生きていける。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0