一些c的疑问

#include"stdio.h" main() { int x; x=sizeof (scanf("")); printf("%d",x); }怎么可以通过编译?

#include"stdio.h" main() { char a[3][5]={'7','6','0','9',"9"}; printf("%s",a); }

#include"stdio.h" main() { char a[3][5]={'7','6','0','9','3',"9"}; printf("%s",a); }下面这个能够通过编译,仅仅比上面多了一个字符,而上面的不能。这是为啥呢?