Pourquoi tant d'étonnement ?
En tout cas je rassure tout le monde - tout va bien - pas de bug ici
Ici le nombre est interprété par le compilateur comme étant un Quad.
Si le nombre avait été beaucoup plus petit, le nombre aurait été interprété comme un Long (.l)
Les Quads (.q) et Doubles (.d) étant sur 64bits on peut donc atteindre des nombres colossaux d'où leur intéret mais au détriment (très relative) lenteur.
Ici on force le compilateur a dire met dans 'i' (Long par défaut si on ne met pas le type .l) le nombre 8900800700600500432. Or 8900800700600500432 est beaucoup trop grand pour un Long. Donc le compilateur se plaint et il aurait tort de se priver.
Ici, pas de variable, que des nombres. Le compilateur purebasic est suffisamment 'intelligent' pour faire en sorte que le type du résultat s'adapte au calcul effectué. Même composé de Long, le résultat pour être correct nécessite d'être un converti en Quad. On observe le meme comportement avec Long/Float/Double etc...
Il faut toujours se méfier du type de données qu'on manipule et qu'on génère dans un programme.