これでshortのoverflowを検出できないのって仕様通りなんですか?

$ cat a.c
#include <stdio.h>
int
main()
{
int count;
unsigned short num;

char string[] = "111111";
count = sscanf(string, "%hu", &num);
printf("%d %d\n", count, num);
return 0;
}

$ gcc -o a a.c && ./a.
1 45575