Shammer's Philosophy

My private adversaria

出鱈目な引数の型を指定しても・・・

環境変数取得方法 - Shammerismで、main 関数の引数は、int 型、char*型、char*型という順序になるということがわかった。これを一歩進めて、この型を滅茶苦茶にしたらどうなるかやってみた。Java だとエラーになってくれる。

#include <stdio.h>

int main(char argc, char* args[]){
    printf("出鱈目な引数\n");
    printf("%d\n", argc);
    return 0;
}

最初は、int 型が想定されているが、それをあえて char にしてみた。型の不一致でエラーになってくれるかと思いきや、そのまま実行できてしまった。

$ ./a.out
出鱈目な引数
1
$ ./a.out a a
出鱈目な引数
3

うーん、、、引数で型を指定していてもそれを厳密にチェックしているわけでもないようだ。一体なんのために型を指定しているのか。。。