Articles of constantes

Constante hexadécimale non signée en C?

Est-ce que C traite les constantes hexadécimales (par exemple 0x23FE) et les entêtes avec ou sans signature?

Déclarer une variable globale `extern const int` dans l’en-tête mais uniquement` int` dans le fichier source

J’expérimentais avec GCC et ai découvert que vous pouvez déclarer des variables externes const dans les fichiers d’en-tête, mais les garder mutables dans les fichiers d’implémentation. EDIT : Cela ne fonctionne pas réellement. La seule raison pour laquelle j’ai compilé mon code de test, c’est parce que je n’ai pas inclus “header.h” dans “header.c”. header.h: […]

Quel est le suffixe utilisé pour les constantes longues longues

Si je veux utiliser quelque chose comme ci-dessous dans un code C: if(num < 0x100000000LL) Je veux que la comparaison se produise sur une longue constante, mais le suffixe LL ne fonctionne pas dans MSVC6.0, mais dans MS Visual Studio 2005. Comment puis-je le faire fonctionner dans MSVC 6.0? -Ajit

Quelle est la différence entre les constantes de macro et les variables constantes en C?

Dupliquer possible: «Const statique» vs «#define» en C J’ai commencé à apprendre le C et je ne comprenais pas bien les différences entre les macros et les variables constantes. Qu’est-ce qui change quand j’écris, #define A 8 et const int A = 8 ?

quelle est la raison de déclarer explicitement L ou UL pour des valeurs longues

À partir d’un exemple unsigned long x = 12345678UL Nous avons toujours appris que le compilateur n’a besoin que de voir “long” dans l’exemple ci-dessus pour définir 4 octets (en 32 bits) de mémoire. La question qui se pose est de savoir pourquoi devrions-nous utiliser L / UL dans les constantes longues même après avoir […]

Pourquoi est-ce que je peux changer une variable const locale via des conversions de pointeurs mais pas une variable globale en C?

Je voulais changer la valeur d’une constante en utilisant des pointeurs. Considérons le code suivant int main() { const int const_val = 10; int *ptr_to_const = &const_val; printf(“Value of constant is %d”,const_val); *ptr_to_const = 20; printf(“Value of constant is %d”,const_val); return 0; } Comme prévu, la valeur de constante est modifiée. mais quand j’ai essayé […]

Existe-t-il un moyen de protéger une variable en vue de sa modification lors de l’exécution en C?

Je me demandais s’il y avait un moyen de protéger une variable pour la modifier une fois initialisée (quelque chose comme “constantize” une variable à l’exécution) Par exemple: #include #include int main(void) { int v, op; scanf( “%d”, &op ); if( op == 0 ) v = 1; else v = 2; // here transform […]

Initialisation de la structure constante contenant le pointeur sur son propre type

Je vais avoir une structure comme ceci: typedef struct tree_s{ struct tree_s *a; int b; }tree_t; Ce que, pour le moment, j’initialise de cette manière: tree_t branch_n = { .a = NULL, .b = 2 }; tree_t root = { .a = (tree_t*) &branch_n, .b = 1 }; Maintenant, cela me gêne de devoir initialiser […]

ISO C et constantes littérales signées

Je viens tout juste de commencer à lire la norme ISO C 2011, la dernière version publique [1] , et je me suis rendue compte que, dans le C Lexical Grammer [1] [458ff.], Toutes les constantes numériques (littérales) ne sont pas signées. Cela signifie-t-il que le compilateur interprète une constante numérique signée (telle que -5.1E10 […]

Virgule flottante hexadécimale, arrondie

J’essaie l’exemple suivant: printf(“%9.1a”,4488.09); //Only one digits has to be printed after digital point La représentation binary de 4488.09 == 1 0001 1000 1000.000101011100001010001111010111000010100011110101 devrait devenir 0x1.1p + 12 ou 0x1.2p + 12? Je ne peux pas comprendre si l’opération round (en cours d’impression) doit être effectuée pour la représentation binary ou pour la représentation […]