Questions marquées «c»

C est un langage de programmation à usage général utilisé pour la programmation système (OS et embarqué), les bibliothèques, les jeux et les plateformes multiples. Cette balise doit être utilisée avec des questions générales concernant le langage C, tel que défini dans la norme ISO 9899 (la dernière version, 9899: 2018, sauf indication contraire - également balise les demandes spécifiques à la version avec c89, c99, c11, etc.). C est distinct de C ++ et il ne doit pas être combiné avec la balise C ++ en l'absence d'une raison rationnelle.

4
GDB: break si variable égale valeur
J'aime faire en sorte que GDB définisse un point de rupture lorsqu'une variable est égale à une valeur que j'ai définie, j'ai essayé cet exemple: #include <stdio.h> main() { int i = 0; for(i=0;i<7;++i) printf("%d\n", i); return 0; } Sortie de GDB: (gdb) break if ((int)i == 5) No default …
89 c  gdb 

9
Comment utiliser nan et inf en C?
J'ai une méthode numérique qui pourrait retourner nan ou inf s'il y avait une erreur, et pour les tests intentionnels, j'aimerais la forcer temporairement à retourner nan ou inf pour m'assurer que la situation est gérée correctement. Existe-t-il un moyen fiable et indépendant du compilateur de créer des valeurs de …
89 c  math 

2
Que sont vdso et vsyscall?
J'ai fait sudo cat /proc/1/maps -vv J'essaie de donner un sens à la sortie.Je peux voir beaucoup de bibliothèques partagées mappées au segment de mappage de mémoire comme prévu. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 …
89 c  linux  linux-kernel  kernel  vdso 

3
Threadsafe vs réentrant
Récemment, j'ai posé une question, dont le titre était "Le fil malloc est-il sûr?" , et à l'intérieur, j'ai demandé: "Malloc est-il réentrant?" J'avais l'impression que tous les rentrants sont thread-safe. Cette hypothèse est-elle fausse?

7
Conversion d'un pointeur de fonction vers un autre type
Disons que j'ai une fonction qui accepte un void (*)(void*)pointeur de fonction à utiliser comme rappel: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Maintenant, si j'ai une fonction comme celle-ci: void my_callback_function(struct my_struct* arg); Puis-je faire cela en toute sécurité? do_stuff((void (*)(void*)) &my_callback_function, NULL); J'ai regardé cette question et j'ai examiné certaines …


14
La pile grandit-elle vers le haut ou vers le bas?
J'ai ce morceau de code en c: int q = 10; int s = 5; int a[3]; printf("Address of a: %d\n", (int)a); printf("Address of a[1]: %d\n", (int)&a[1]); printf("Address of a[2]: %d\n", (int)&a[2]); printf("Address of q: %d\n", (int)&q); printf("Address of s: %d\n", (int)&s); La sortie est: Address of a: 2293584 Address …
89 c  memory  stack 


10
Différence entre const et const volatile
Si nous déclarons une variable comme à volatilechaque fois que la nouvelle valeur est mise à jour Si nous déclarons une variable comme, constla valeur de cette variable ne sera pas modifiée Alors, const volatile int temp; quelle est l'utilité de déclarer la variable tempcomme ci-dessus? Que se passe-t-il si …
89 c  embedded 



9
Pourquoi a +++++ b ne fonctionne-t-il pas?
int main () { int a = 5,b = 2; printf("%d",a+++++b); return 0; } Ce code donne l'erreur suivante: erreur: lvalue requise comme opérande d'incrément Mais si je mets des espaces partout a++ +et ++b, alors cela fonctionne bien. int main () { int a = 5,b = 2; printf("%d",a++ …
88 c  lvalue 

13
Comment fonctionne ce programme?
#include <stdio.h> int main() { float a = 1234.5f; printf("%d\n", a); return 0; } Il affiche un 0!! Comment est-ce possible? Quel est le raisonnement? J'ai délibérément mis un %ddans la printfdéclaration pour étudier le comportement de printf.
88 c++  c  memory  printf  endianness 

7
Comment le noyau Linux peut-il se compiler?
Je ne comprends pas très bien le processus de compilation du noyau Linux lorsque j'installe un système Linux sur ma machine. Voici quelques éléments qui m'ont dérouté: Le noyau est écrit en C, mais comment le noyau a-t-il été compilé sans un compilateur installé? Si le compilateur C est installé …

8
Moyen efficace de rechercher un élément
Récemment, j'ai eu une interview, où ils m'ont posé une question de « recherche ». La question était: Supposons qu'il existe un tableau d'entiers (positifs), dont chaque élément est l'un +1ou l' autre ou -1comparé à ses éléments adjacents. Exemple: array = [4,5,6,5,4,3,2,3,4,5,6,7,8]; Recherchez maintenant 7et restaurez sa position. J'ai …

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.