2017-01-17 1 views
1

J'utilise quelque chose comme ce qui suit dans mon code C99:conversion entier Implicite dans C99 vs vérificateur de code statique

uint64_t x = 1000ULL * (5U * 1000U); 

Je suppose U signifie toujours unsigned int.

Mon vérificateur de code statique se plaint maintenant de la conversion de type implicite ici, ce qui est correct. Cependant, il ne se plaint pas de unsigned long long vs unsigned int. Il se plaint à propos de unsigned char vs unsigned short à la place. Donc mes questions sont: Est-ce que ces littéraux peuvent être interprétés comme quelque chose d'autre (surtout plus petit) que unsigned long long et unsigned int dans C99?

Répondre

0

Non, pas dans C99 ou toute autre version des constantes standard C avec un suffixe e U sont toujours non signé et le nombre de L vous donne le rang int, long ou long long.