Je suis hésitant à poster mon code parce que c'est pour une tâche d'école, mais fondamentalement je dois itérer par un uint64_t
qui peut être très grand. Par conséquent, j'ai une valeur qui peut être de 10 caractères environ. Il était à l'origine un int
, et le code fonctionne partiellement (mais ne finit pas de créer la sortie à laquelle il est supposé), mais j'obtiendrais l'erreur "warning: integer constant is so large that it is unsigned"
.Exception de virgule flottante ET avertissement de constante trop important?
Je changerais alors cela int
en uint64_t
(il est multiplié par 10), et il me donnerait une exception de virgule flottante.
Un aperçu sans le code?
EDIT: Ajout de petits morceaux de code ...
uint64_t number = 1U;
...
for (int x = 0; x < y; x++) {
number *= 10;
}
^cela me donne l'exception à virgule flottante.
Vous ne savez pas si cela est suffisant pour être utile.
nous montrent code pour nous aider à trouver le vrai problème :-) – MYMNeo
. Voyez-vous une erreur de compilation (à quoi ressemble-t-elle) ou une erreur d'exécution? En tant qu'erreur de compilation, il est impossible d'obtenir une erreur 'number too big' parmi les '1U', '0' ou' 10'. Donc, vous devez avoir mal identifié la ligne, ou mal cité la ligne. Comme une erreur d'exécution, ce que vous voyez est le plus improbable - je ne devrais probablement même pas évoquer la possibilité. Donc, vous devez regarder d'autres lignes de code que celles que vous avez montrées jusqu'ici. Sur un système 32 bits, votre constante devrait être supérieure à 2147483647 pour obtenir le 'si grand qu'il est non signé' (plus de 32767 sur un système avec 16 bits 'int'). –