50 votes

Question d'entretien délicate pour un développeur C++ de niveau intermédiaire

On m'a posé cette question lors de l'interview, et je ne peux pas vraiment comprendre ce qui se passe ici. La question est "Qu'est-ce qui serait affiché dans la console ?"

 #include <iostream>

int main()
{
    unsigned long long n = 0;
    ((char*)&n)[sizeof(unsigned long long)-1] = 0xFF;

    n >>= 7*8;

    std::cout << n;
}

Que se passe-t-il ici, étape par étape ?

7voto

GaryO Points 807

Convertissez l'adresse de n en un pointeur vers chars, définissez le 7e élément (en supposant sizeof(long long)==8) char sur 0xff, puis décalez à droite le résultat (en tant que long long) de 56 morceaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X