Bonjour
Voici un petit programme dont le résultat me paraît bizarre (Code::Blocks 13.12, Windows 7)
Résultat : ffffffff, 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <iostream> #include <fstream> using namespace std; int main() { unsigned n = 32 ; printf("%x, %x", 0xFFFFFFFF>>n, 0xFFFFFFFF>>32); return 0; }
Si on essaye d'autres valeurs, tout se passe comme si n était calculé modulo 32 avant de faire le décalage.
32 = width of type : il y a d'ailleurs un warning à ce sujet.
Bien sur (!), le problème disparaît si on remplace la ligne 9 par const unsigned n = 32 ;
Une idée de ce qui se passe vraiment ?
Merci d'avance
Partager