snprintf()の返り値は?

snprintf()の返り値は、入った文字列の数でなく、入れようとした文字列の数を返します。
例えば、

char str[5];
int ret = snprintf(str, sizeof(str)), "hogegegege");

の場合、retは5でなくて、10。
うーん、紛らわしい…。