Articles of casting

Transformation de «int» en «unsigned short» après l’application de l’opérateur binary «~»

L’outil d’parsing statique que j’utilise génère un avertissement pour ce code: uint16 var1 = 1U; uint16 var2 = ~var1; Je vérifie les règles MISRA C 2004 et trouve la règle 10.5: Si les opérateurs binarys ~ et << sont appliqués à un opérande od du type sous-jacent unsigned char ou unsigned court , le résultat […]

Une conversion que la conversion de style C peut gérer, mais pas les conversions C ++

On dit que le transtypage de style C essaie simplement d’appliquer différentes combinaisons de transtypages C ++ et que la première combinaison autorisée est utilisée. Cependant, j’ai le sentiment d’avoir entendu dire qu’il existe des situations que seul le transtypage de style C peut gérer, alors qu’aucune combinaison de transtypages C ++ n’est autorisée. Ai-je […]

Que se passe-t-il réellement lorsqu’un pointeur sur un entier est converti en un pointeur sur un caractère?

int i=40; char *p; p=(char *)&i;//What actually happens here? printf(“%d”,*p); Quelle sera la sortie? S’il vous plaît aider!

Est-il possible de lancer struct à un autre?

Quelqu’un pourrait-il décrire comment (struct sockaddr *)&server fonctionne ici? Est-il possible de transformer une structure plus grande en une structure plus petite? Voir ces structs: // IPv4 AF_INET sockets: struct sockaddr_in { short sin_family; // eg AF_INET, AF_INET6 unsigned short sin_port; // eg htons(3490) struct in_addr sin_addr; // see struct in_addr, below char sin_zero[8]; // […]

Wrapping / Casting Cstr dans la classe Cython to Python

Je commence tout juste à me familiariser avec Cython, en essayant d’envelopper des structures d’une bibliothèque C dans des méthodes et des classes Python. Ce que je ne comprends pas vraiment, c’est comment devrait fonctionner le transtypage de structures C (initialisées) vers la classe Python correspondante. Qu’est-ce que j’oublie ici: Un extrait du fichier d’en-tête […]

Typecasting int à char dans printf () en C

int *int_pointer = malloc(10); *int_pointer = 53200; printf(“The integer at byte #0 is set to: %d \n”, (char) *int_pointer); RÉSULTAT: -48 J’essayais donc de voir ce qui allait se passer et j’ai eu ce résultat vraiment inattendu. Pourquoi -48? Comment s’est-il même transformé en négatif?

Que se passe-t-il si je lance un pointeur de fonction en modifiant le nombre de parameters?

Je commence tout juste à comprendre les indicateurs de fonction en C. Pour comprendre le fonctionnement du casting des indicateurs de fonction, j’ai écrit le programme suivant. Il crée en principe un pointeur de fonction sur une fonction qui prend un paramètre, le convertit en un pointeur de fonction avec trois parameters et appelle la […]

En C, si je fais fondre et déréférencer un pointeur, est-ce que celui que je fais en premier importe?

En C, vous pouvez transtyper des types de données simples tels que int , float et des pointeurs sur ceux-ci. Maintenant, j’aurais supposé que si vous voulez convertir un pointeur en un type en valeur d’un autre type (par exemple de *float en int ), l’ordre de diffusion et de déréférencement n’a pas d’importance. C’est-à-dire […]

Le transtypage entre int et signé ne permet-il pas de conserver le modèle de bits exact de la variable en mémoire?

Je veux passer un entier signé 32 bits x travers un socket. Pour que le destinataire sache quel ordre d’octet il faut attendre, htonl(x) avant l’envoi. htonl attend cependant un uint32_t et je veux être sûr de ce qui se passe lorsque je lance mon int32_t en uint32_t . int32_t x = something; uint32_t u […]

Pourquoi tapez un pointeur vide?

Étant nouveau pour le C, la seule utilisation pratique que je tire des pointeurs vides concerne les fonctions polyvalentes pouvant stocker différents types de données dans un pointeur donné. Par conséquent, je n’ai pas transtypé mon pointeur lors de l’allocation de mémoire. J’ai vu des exemples de code qui utilisent parfois des pointeurs vides, mais […]