× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 Equivalent de "isset" (php) en C ?
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
xenacaco
  Posté le 04/10/2006 @ 17:13 
Aller en bas de la page 
Petite astucienne
Bonjour, j'aimerais savoir si il existe une fonction en C pour tester l'existence d'une variable, comme isset() en php. Merci d'avance
Publicité
AlexPrince
 Posté le 04/10/2006 à 17:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Non, parce que si tu avais une telle fonction en C, tu aurais besoin d'avoir la variable pour tester... donc elle existerait. isset() n'a absolument aucune utilité en C alors elle n'existe pas.
duncan25
 Posté le 04/10/2006 à 17:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
c'est bien ce que je pensais mais j'avais pas osé le dire [rougir]
xenacaco
 Posté le 04/10/2006 à 18:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
ca m'arrange pas ca loool [triste] merci quand meme
koala01
 Posté le 04/10/2006 à 19:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, L'instruction isset($nom_variable) en php n'a qu'un seul but, savoir si le système connait la variable dont on donne le nom en argument… Cette astuce est utilisée parce que les variables php sont "faiblement typées" (tu peux passer sans problème d'une variable de type numérique à une variable de type entier [clindoeil], et le simple fait d'utiliser un nom de variable fait qu'elle est connue du système [clindoeil]) Le C, par contre est tres fortement typé: une fois qu'une variable est d'un type donné, elle le reste, et il faut vraiment savoir ce que l'on fait quand on essaie de passer d'un type à l'autre. C'est la raison pour laquelle toutes les variables doivent etre déclarée, avec le type qui leur convient, avant toute utilisation… Les normes précédentes (car je ne suis pas sur que ce soit le cas avec la dernière) précisaient meme qu'on ne pouvait déclarer une variable dans une fonction que tant que l'on n'avait pas encore introduit d'instruction… Comme, de toutes manières, le compilateur te diras d'office que tu essaye d'utiliser une variable qu'il ne connait pas (sous forme d'erreur, et non de simple avertissement, ce qui fait que la compilation échoue) tu n'as effectivement pas besoin d'une fonction proche de isset() [clindoeil] En effet, isset() ne fait que vérifier que la variable est connue du système, et ne vérifie nullement que la variable vaut bel et bien quelque chose (ca vérifie que la variable a été déclarée, et non le fait qu'une valeur lui aie été donnée [clindoeil]) Isset() doit donc, logiquement, etre suivi par un test sur la valeur de la variable, si l'on souhaite s'assurer que la valeur est dans une fourchette donnée [clindoeil] En C, comme les variables déclarées sont connues du sytème, on passe directement au test de la valeur [clindoeil]

Modifié par koala01 le 04/10/2006 19:07
don diego
 Posté le 05/10/2006 à 17:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Salut, Tu n'as qu'à donner la valeur NULL à une variable pour simuler le fait que la variable "n'existe pas" (Même si elle existe car tu la initialisés par NULL). Si la valeur est différente de NULL, alors elle "existe".
AlexPrince
 Posté le 06/10/2006 à 05:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Faux. Archi-faux. NULL est défini comme ceci, selon mon IDE:[code]#define NULL 0[/code]Suivant ta logique, si on avait un int ayant pour valeur 0, on pourrait donc en conclure que la variable n'existe pas. C'est absurde. En C / C++, la variable existe et on peut la modifier ou elle n'existe pas et on ne peut rien faire.
koala01
 Posté le 06/10/2006 à 12:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
don diego a écrit :
Salut, Tu n'as qu'à donner la valeur NULL à une variable pour simuler le fait que la variable "n'existe pas" (Même si elle existe car tu la initialisés par NULL). Si la valeur est différente de NULL, alors elle "existe".
En fait, NULL, comme l'a si bien dit alexprince, n'est qu'un alias… Dans pas mal d'implémentation il est défini en tant que [code]#define NULL 0[/code] mais d'en d'autres, il est aussi défini en tant que [code]#define NULL ((void*) 0)[/code] C'est à dire en un cast vers un pointeur de type void de la valeur 0, ou, si tu préfères, en l'addresse 0000000000(hexa), ce qui tend à le limiter aux pointeurs… Du moment que la variable a été déclarée, elle existera donc… Ce que l'on peut faire, et ce que l'on fait d'ailleurs généralement, c'est de lui donner, lors de la déclaration, une valeur qui nous signale qu'elle n'a pas encore été définie (qu'on ne lui a pas encore donné de valeur précise)… Il va de soi que cette valeur doit etre en dehors des bornes de valeurs admises (0 si on commence à conter à 1, par exemple, mais cela pourrait etre 0xFFFFFFFFFF pour un double (en estimant ici que le double soit codé sur 80 bits, ce qui est à vérifier quand meme), une chaine vide dans un tableau de caractères, ou, en gros, n'importe quoi qui ne sera pas utilisé comme valeurs correcte [clindoeil]) C'est cette valeur que l'on considère comme étant le signe que la variable n'a pas encore été définie que l'on utilisera pour tester… si la variable a été définie ou non dans un test [clindoeil]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
100,99 €Ecran 24 pouces Samsung S24F354 (Full HD, PLS, 4 ms, FreeSync) à 100,99 €
Valable jusqu'au 07 Juillet

Amazon propose actuellement l'écran 24 pouces Samsung S24F354 à 100,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 120 €. Cet écran dispose d'une dalle PLS Full HD (1920x1080) et offre un temps de réponse de 4 ms. Il possède des entrées VGA et HDMI. Il possède des fonctions d'anti scintillement et anti lumière bleue. 


> Voir l'offre
79,99 €Ventilateur Rowenta Turbo Silence Extrême+ à 79,99 €
Valable jusqu'au 04 Juillet

Amazon fait une promotion sur le ventilateur Rowenta Turbo Silence Extrême+ qui passe à 79,99 € livré gratuitement au lieu de 118 €. Ce ventilateur sur pied offre un rafraîchissement extrême de 80 m3/min (mode turbo boost). A vitesse minimale (mode nuit), il est ultra silencieux avec un niveau sonore de 45 db. Oscillation automatique (angle de 120°) et orientation réglable pour une large diffusion de l'air dans toute la pièce


> Voir l'offre
-20%-20% sur le coin des affaires chez LDLC avec le code COTIER
Valable jusqu'au 05 Juillet

LDLC propose actuellement 20% de réduction sur son coin des affaires qui regroupe des produits neufs en fin de série ou des produits reconditionnés. N'hésitez à parcourir les différentes rubriques, il y a vraiment des choses intéressantes. Saisissez le code COTIER dans votre panier pour profiter de l'offre.


> Voir l'offre

Sujets relatifs
Equivalent du XCHG en C
 > Tous les forums > Forum Autres langages