HIRASE CONNECTION WK

programming collection

目次

Blog 利用状況

ニュース

書庫

日記カテゴリ

Link Collection

[C] 1から10までの総和をマクロでエレファントに解く。

うすたー:1+2+…+10

うすたー:[C++] 1から10まで足す

#include <stdio.h>

#define SIGMA(X) SIGMA_##X
#define SIGMA_10 (10 + SIGMA_9)
#define SIGMA_9  ( 9 + SIGMA_8)
#define SIGMA_8  ( 8 + SIGMA_7)
#define SIGMA_7  ( 7 + SIGMA_6)
#define SIGMA_6  ( 6 + SIGMA_5)
#define SIGMA_5  ( 5 + SIGMA_4)
#define SIGMA_4  ( 4 + SIGMA_3)
#define SIGMA_3  ( 3 + SIGMA_2)
#define SIGMA_2  ( 2 + SIGMA_1)
#define SIGMA_1  ( 1          )

int main(void)
{
  printf("%d\n", SIGMA(10));
  return 0;
}

もう素直に数字並べて足し算した方がマシなレベル。

投稿日時 : 2009年9月30日 22:30

コメントを追加

# re: [C] 1から10までの総和をマクロでエレファントに解く。 2009/10/02 7:32 bleis-tift

プリプロセッサで解くなら、Boost.Preprocessor 使った

http://d.hatena.ne.jp/RiSK/20090930/1254307989
http://d.hatena.ne.jp/DigitalGhost/20090930/1254321038

こんなのもあります。

# re: [C] 1から10までの総和をマクロでエレファントに解く。 2009/10/02 8:06 T.Hirase

>Boost.Preprocessor
あぁ、それは考えてなかったです。
なるほど。

>(リンク先)(1+10) * (10/2)
わぁ。ガウス先生天才。

タイトル  
名前  
URL
コメント