Je fais du codage de types X11, je ne connais pas C mais j'ai besoin d'aide pour le comprendre.
Dans le code C ci-dessous (peut être C++, je ne suis pas sûr), nous voyons (~0L)
Qu'est-ce que ça veut dire? En Javascript et Python ~0
veux dire -1
.
812 int result = GetProperty(window, property_name,
813 (~0L), // (all of them)
814 &type, &format, &num_items, &properties);
Merci
0L
est une valeur entière long
avec tous les bits mis à zéro - c'est généralement la définition de 0
. Le ~
signifie inverser tous les bits, ce qui vous laisse un long
entier avec tous les bits mis à un.
Dans l'arithmétique du complément à deux (qui est presque universel) une valeur signée avec tous les bits mis à un est -1
.
La raison d'utiliser ~0L
au lieu de -1L
doit être plus clair quant à l'intention - il ne doit pas du tout être utilisé comme un nombre, mais plutôt comme une collection de bits.
Complément binaire de zéro de type long.