>>100
C/従来のC++ なら 0 でいい、C++ では 0 を使うことが多い(というか多かったというべきか)。

ただし >>100 の例えば int *p = 0; では、0 がヌルポインタであることを左辺から知る形で、0 自体に型情報はない。
0 という表記自体に型情報を追加する必要のある場面がC/C++両者にあり、その場合は (void *)0 とする。

C: 可変長引数を持つ関数を呼び出す場合など。execv*() で (char *)0 と書かれていたことを記憶している。
C++は誰かお願い(オーバーロード?)、C++11(最新仕様)では nullptr が追加された。