2010-09-23 4 views
-3

Dans le segment de code suivant ce qui sera le résultat de la fonction, la valeur de x, la valeur de yC/C++, opérateur négation frustration

{ 

    unsigned int x=-1; 
    int y; 
    y = ~0; 
    if(x == y) 
    printf("same"); 
    else 
    printf("not same"); 

} 

S'il vous plaît expliquer comment cela fonctionne. De mon côté, sa réponse sera "pas pareil" mais sa réponse actuelle est "pareil".

+13

-1 pour un titre terrible, très général. –

+1

http://en.wikipedia.org/wiki/Two's_complement & http://en.wikipedia.org/wiki/Bitwise_operation – kevingessner

+5

-1: il suffit de spammer les forums avec ses devoirs..stop répondant à eux. –

Répondre

2

Pour comprendre ce qui se passe, vous devez comprendre comment la valeur de (-1) est stockée en mémoire.

1

Je vais vous donner des indices pour que vous puissiez trouver l'explication pour vous-même.

  1. Remarque, x est un entier non signé où y est signé int.

  2. Avez-vous entendu parler des opérateurs bit-wise?

  3. modifier votre programme en incluant ce qui suit à la fin et de voir par vous-même:

    printf ("x =% d, y =% d", x, y);

EDIT: Changé la printf à:

printf("x = %d, x = %u, y = %d, y = %u, ", x, x, y, y);