2014-06-27 1 views
-3

L'instruction renvoie-t-elle un seul bit ou une concaténation de bits.clarification de int & int dans une instruction if en C++

if(mask[i] & groupbit) { 
    //... 
} 

avec:

  • i = un nombre entier
  • mask[i] = un élément de pointeur entier
  • groupbit = nombre entier
+1

Quel est le votre 'mask' type de données exactes ** **? – YePhIcK

+0

Une instruction ne renvoie rien. Une déclaration est juste une déclaration. –

+0

De même, les pointeurs d'entier n'ont pas d'éléments. –

Répondre

2

Il se traduira par un nombre entier entier. Lorsque vous utilisez le bitwise et, chaque bit des deux valeurs est et 'ensemble, et chaque bit dans le résultat est défini en conséquence. Le résultat sera le même nombre de bits que les valeurs étant et 'ensemble.

Cela suppose que vous utilisez deux variables entières.

+0

Je le pensais aussi, mais que signifie évaluer un entier dans une instruction if? Je pensais que si la déclaration n'évaluait que vrai/faux. – slin6174

+2

Tout entier non nul sera évalué comme vrai. Qu'est-ce que cela signifie dans le contexte de votre code est la suivante: si les deux valeurs que vous comparez ont un ou plusieurs bits dans le même jeu de position, alors il évaluera à vrai. –

0

Si l'on suppose mask est un pointeur sur un type entier, le compilateur, procédez comme suit:

  1. Accéder i -ième élément du « tableau » mask comme un entier
  2. assurez-vous que les deux opérandes sont des la même taille (cela peut impliquer peu d'expansion ou troncature)
  3. faire un peu sage AND
  4. s'il y avait un seul bit situé dans le résultat de la précédente AND op ration la valeur sera traitée comme true, sinon comme false (si chaque bit du résultat est 0)