Je souhaite souvent pouvoir faire quelque chose comme ça en c: val1 &= 0b00001111; //clear high nibble val2 |= 0b01000000; //set bit 7 val3 &= ~0b00010000; //clear bit 5 Avoir cette syntaxe semble être un ajout incroyablement utile à C, sans aucun inconvénient auquel je puisse penser, et cela semble être une chose naturelle pour […]
Étant donné une adresse mémoire littérale au format hexadécimal, comment puis-je créer un pointeur en C qui adresse cet emplacement mémoire? Les adresses mémoire sur ma plate-forme (IBM iSeries) sont de 128 bits. Le type C long long est également 128bits. Imaginez que j’ai une adresse mémoire pour une chaîne (tableau de caractères) qui est: […]
J’essaie d’implémenter une version eqivilent de la fonction chomp() de perl en C et je suis tombé sur un cas où un littéral de chaîne passé en argument provoquerait une erreur de segmentation (à juste titre). Exemple chomp(“some literal ssortingng\n”); Existe-t-il un moyen défini dans C99 de détecter si une fonction a été transmise à […]
J’aimerais convertir plusieurs nombres en une représentation, puis utiliser les indicateurs, la largeur et la précision des *printf() . La préférence serait d’éviter static tampons globaux ou static . Le problème clé semble être: comment fournir un caractère char[] pour chacun des nombres convertis? fprintf(ostream, “some_format”, foo(int_a, base_x), foo(int_b, base_y), …); Comment utiliser les littéraux […]
Dupliquer possible: Pourquoi les littéraux de caractères C sont-ils au lieu de caractères? #include int main(void) { char b = ‘c’; printf(“here size is %zu\n”,sizeof(‘a’)); printf(“here size is %zu”,sizeof(b)); } ici la sortie est (Voir la démo en direct ici .) here size is 4 here size is 1 Je ne comprends pas pourquoi sizeof(‘a’) […]
Quelqu’un pourrait-il m’expliquer ce qui peut arriver si j’oublie le suffixe (postfix) des constantes (littéraux) dans ANSI C? Par exemple, j’ai vu pour les opérations de décalage de bits telles définit: #define AAR_INTENSET_NOTRESOLVED_Pos (2UL) /*!< Position of NOTRESOLVED field. */ #define AAR_INTENSET_NOTRESOLVED_Msk (0x1UL << AAR_INTENSET_NOTRESOLVED_Pos) /*!< Bit mask of NOTRESOLVED field. */ #define AAR_INTENSET_NOTRESOLVED_Disabled (0UL) […]
J’ai un problème, j’ai vu que l’adresse de deux pointeurs est la même que celle dont il est question ici (les adresses de deux pointeurs sont identiques ), également répondue par blue moon. Ce qui me conduit à d’autres doutes. Étant donné que les deux pointeurs ont la même adresse, j’ai pensé modifier la valeur […]
On associe généralement «non modifiable» au terme littéral char* str = “Hello World!”; *str = ‘B’; // Bus Error! Cependant, en utilisant des littéraux composés, j’ai rapidement découvert qu’ils étaient complètement modifiables (et en se verrouillant sur le code machine généré, vous voyez qu’ils sont poussés sur la stack): char* str = (char[]){“Hello World”}; *str […]
Supposons que j’ai le littéral énuméré suivant enum { valueA = 5, valueB = 7, valueC = 9, valueD = 14, valueE = 15 }myEnumType; et je veux faire une boucle à travers chaque littéral par exemple for (enumType myValEnum = valueA; myValEnum <= valueE; myValEnum++) { MyFunction(mValEnum); } cela fonctionnera-t-il ou vais-je finir par […]
Je suis tombé sur cette fonction dans une réponse à cette question : /* Note: I’ve formatted the code for readability. */ const char * getSsortingng() { const char *x = “abcssortingng”; return x; } J’ai été surpris de découvrir que le fait de retourner un pointeur sur la chaîne littérale fonctionnait, et que la […]