#include <stdio.h>
//#define tinyvar(var) (var&=0xF)
int suntypes (char tamanho,char flag) {
int n;
if (!flag) n = (tamanho <= 2 ? (tamanho*8)-tamanho : (tamanho*8)-tamanho+1);
else n = tamanho*8-(tamanho>>1);
return (tamanho<<n)-1;
}
int main() {
int i = sizeof(int);
printf("Valor maximo signed: %d, unsigned: %u\n",suntypes(i,0),suntypes(i,1));
system("pause");
return 0;
} Como podem ver, essa função retorna o máximo que um tipo de variável suporta, exceto double e float.