Pour donner un exemple plus concret :
int f(int n)
{
return n/4;
}
Pour cette fonction le compilateur me génère le code assembleur suivant :
mov eax,dword ptr [ebp+8]
cdq
and edx,3
add eax,edx
sar eax,2
Alors que si je change le "int n" en "unsigned int n", j'obtiens le code assembleur suivant :
mov eax,dword ptr [ebp+8]
shr eax,2
Avec unsigned le compilateur se contente d'un simple décalage.