カメヲラボ

主にプログラミングとお勉強全般について書いてます

使えるかな・・・

sizeof演算子は何か面白いことに使えるんだと思うけど、なかなか思いつかない。たとえばstrlen関数が必要な場面で、代わりにsizeof演算子を使ってコードが短縮できることはないだろうか。

  • コード
char a[]="abcde";
main()
{
  puts(a);
  printf("%d\n",sizeof(a));
  printf("%d\n",strlen(a));
}
  • 出力
abcde
6
5

追記:
shinhさんの指摘で気付いたけど、結局sizeofを使用できる場面は文字列の長さが確定している場面だけで、それなら事前にその値を調べて埋め込んでおけばもっと短くなるわけで、マクロのときと同じ屁理屈議論になりそうだ。関数と違って

sizeof(a)

ではなくて

sizeof a

と書けるとして、aの長さが9桁以上になるような文字列あるいはマクロは現実的には考えられないし、大きな値が欲しければ文字定数やアドレスを使うのがショートコーディングの鉄則だとすれば、やっぱりsizeof演算子の使い道はないのか。

なんか革新的なテクニックはないものか・・・。