M-a interesat să știu ce s-ar întâmpla dacă voi atribui o valoare negativă unei variabile nesemnate.

unei

Codul va arăta cam așa.

Acest lucru nu mi-a dat o eroare de compilare. Când am început programul, nVal a primit o valoare ciudată! S-ar putea să fie atribuită nVal un fel de valoare din 2 cifre ?

Pentru un răspuns oficial - Secțiunea 4.7 [conv.integral]

"Dacă tipul destinației nu este specificat, valoarea rezultată este cel mai mic întreg nesemnat comparabil cu întregul original (modulo 2 ^ n, unde n este numărul de biți folosiți pentru a reprezenta tipul nesemnat). [Notă: în expresie binară, această conversie este conceptuală și nu există nicio modificare în bitmap (dacă nu există trunchiere).

Acesta va atribui un eșantion de bit reprezentând -5 (în complementul 2) pentru int nesemnat. Ceea ce va fi o mare valoare nesemnată. Pentru 32 de biți, va fi 2 ^ 32 - 5 sau 4294967291