Pourquoi ou pourquoi ne pas utiliser 'UL' pour spécifier non signé longtemps?
ulong foo = 0;
ulong bar = 0UL;//this seems redundant and unnecessary. but I see it a lot.
Je le vois aussi dans le référencement le premier élément de tableaux d'une bonne quantité
blah = arr[0UL];//this seems silly since I don't expect the compiler to magically
//turn '0' into a signed value
Quelqu'un peut-il donner un aperçu de pourquoi j'ai besoin de " UL " tout au long de spécifier plus précisément que c'est un unsigned long?
source d'informationauteur BuckFilledPlatypus
Vous devez vous connecter pour publier un commentaire.
C'est juste un autre outil en C++, si vous n'avez pas besoin il ne l'utilisez pas!
Dans les exemples que vous fournissez il n'est pas nécessaire. Mais les suffixes sont souvent utilisés dans les expressions à éviter la perte de précision. Par exemple:
Vous pouvez obtenir une réponse différente si vous l'avez laissé l'UL suffixe, dire si votre système a 16 bits entiers 32 bits et longs.
Voici un autre exemple inspiré par Richard Corden commentaires:
Encore une fois, vous obtiendrez une réponse différente si vous aviez 16 ou 32 bits par exemple, si vous avez quitté le suffixe off.
Le même type de problème s'applique à 32 vs 64 bits entiers et le mélange de long et long long dans les expressions.
Certains compilateur peut émettre une alerte, je suppose.
L'auteur pourrait faire cela à assurez-vous que le code n'a pas d'avertissements?
Désolé, je réalise que c'est une assez vieille question, mais je l'utilise beaucoup dans c++11 code...
ul
d
f
sont tous utiles pour initialisation deauto
variables à votre type, par exempleLa caisse du rpc de référence sur les littéraux numériques: http://www.cplusplus.com/doc/tutorial/constants/
Vous n'avez normalement pas besoin de ça, et tout tolérable de l'éditeur aura suffisamment d'aide à garder les choses en ordre. Cependantles endroits où je l'utiliser en C# (et vous verrez ces en C++):
unsigned long
type. Cela arrive assez souvent, y compris celui-ci récemment:Tuple<ulong, ulong> = Tuple.Create(someUlongVariable, 0UL);
où sans l'
UL
il retourneTuple<ulong, int>
et ne compile pas.var
mot-clé dans le C# ou leauto
mot-clé à C++. C'est moins fréquent pour moi, car je n'utilisevar
de raccourcir très longues déclarations, etulong
est à l'opposé.Lorsque vous vous sentez obligé d'écrire le type de la constante (même lorsqu'il n'est pas absolument nécessaire), assurez-vous que:
aussi, plusieurs de développement de logiciels standards tels que MISRA vous obliger à mentionner le type de la constante n'importe quoi (au moins écrire " U " si non signé)
en d'autres termes, il est considéré par certains comme une bonne pratique pour écrire le type de la constante car au pire des cas, vous ignorez la et au meilleur de vous éviter des bugs, d'éviter une chance différents compilateurs adresse de votre code différemment et d'améliorer la lisibilité du code