Articles of littéraux

Pourquoi C n’a-t-il pas de littéraux binarys?

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 […]

littéral d’adresse mémoire

É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: […]

Comment détecter le passage d’un littéral de chaîne à une fonction en C?

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 à […]

Comment utiliser des littéraux composés pour `fprintf ()` plusieurs nombres formatés avec des bases arbitraires?

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 […]

pourquoi sizeof (‘a’) vaut 4 en C?

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’) […]

Suffixe C littéral U, problèmes UL

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) […]

changer la valeur de l’un des pointeurs dans le cas où l’adresse de deux pointeurs est identique

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 […]

Pourquoi les littéraux composés en C sont-ils modifiables?

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 […]

En C, comment boucler pour chaque littéral énuméré où les littéraux n’ont pas de valeurs consécutives

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 […]

Où sont placées les chaînes littérales et pourquoi puis-je leur renvoyer des pointeurs?

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 […]