J'essayais d'élever un entier à une puissance en utilisant l'opérateur caret (^
), mais j'obtiens des résultats surprenants, par exemple:
assert_eq!(2^10, 8);
Les recherches sur DuckDuckGo et Google n'ont rien révélé à ce sujet.
Comment puis-je effectuer une exponentiation dans Rust?
L'opérateur caret ^
n'est pas utilisé pour l'exponentiation, c'est au niveau du bit XOR .
Rust fournit l'exponentiation via les méthodes pow
et checked_pow
qui protège contre les débordements.
Ainsi, pour élever 2 à la puissance de 10, faites:
let base: i32 = 2; // an explicit type is required
assert_eq!(base.pow(10), 1024);