gccってインクルードしなくてもいいの?

学校でc言語を教える都合上細かいソースファイルを書くことが多い。
先日string.hが必要な関数類の動作サンプルを作ってたんだけど、思わずstring.hをインクルードし忘れた。
そのままコンパイルしたらそのまま通っちゃったよ
ついでにstdio.hをインクルードしないでコンパイルしても普通に動きました。何で?

int main(void){
printf("hello world");
return 0;
}
↑コレが何のエラーもなくコンパイルが通って普通に動く_| ̄|○