IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Syntaxe declaration tableau


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2023
    Messages : 16
    Par défaut Syntaxe declaration tableau
    Bonjour à tous.
    Après recherche, je n'arrive pas à trouver la réponse sur le net.
    Pouvez-vous me dire quel est la signification du | dans une declaration de tableau.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int volume[] = {100|10,100|10000};
    Merci d'avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par simooon Voir le message
    Pouvez-vous me dire quel est la signification du | dans une declaration de tableau.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int volume[] = {100|10,100|10000};
    Ce n'est pas spécifque aux tableaux, c'est un opérateur "ou" bit à bit. 100|10 donne 110.
    Ceci dit, je vois mal la raison qui a amené à écrire cette expression.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2023
    Messages : 16
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Ce n'est pas spécifque aux tableaux, c'est un opérateur "ou" bit à bit. 100|10 donne 110.
    Ceci dit, je vois mal la raison qui a amené à écrire cette expression.
    Merci bien !
    C'est un codage qui apparait dans certain programmes pour cpu avr.
    Votre réponse va m'aider à comprendre pourquoi ils utilisent cette expression.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 145
    Billets dans le blog
    4
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 581
    Par défaut
    Bonjour Sve,

    Citation Envoyé par Sve@r Voir le message
    ...Ce n'est pas spécifique aux tableaux, c'est un opérateur "ou" bit à bit. 100|10 donne 110...
    C'est de plus assez dangereux car cela laisse penser que 100 et 10 sont en binaire. Ici nous avons la chance qu'il n'y ait pas de bit commun entre 100 (0x64) et 10 (0x0A). et donc le résultat est similaire entre base 10 et base 2.

    Mais cela ne marche plus dans le cas de 1000 (0x3E8) et 100 (0x64) qui donne 1004 (0x3EC) car E couvre tous les bits de 6 (E | 6 = E).

    Cela ressemble à un piège d'enseignant. C'est peut être le but.

    Salut

  6. #6
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2023
    Messages : 16
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour Sve,



    C'est de plus assez dangereux car cela laisse penser que 100 et 10 sont en binaire. Ici nous avons la chance qu'il n'y ait pas de bit commun entre 100 (0x64) et 10 (0x0A). et donc le résultat est similaire entre base 10 et base 2.

    Mais cela ne marche plus dans le cas de 1000 (0x3E8) et 100 (0x64) qui donne 1004 (0x3EC) car E couvre tous les bits de 6 (E | 6 = 6).

    Cela ressemble à un piège d'enseignant. C'est peut être le but.

    Salut
    Merci pour cette remarque. Je me suis fait directement avoir effectivement en raisonnant directement en binaire, oubliant que écrit comme cela, on est en décimal...
    A ce propos, si je ne me trompe pas, la déclaration de variables initialisé directement en binaire n'est pas standard en C.
    Si mes infos sont vrais, je trouve ça dommage, bien desfois ou j'aurai préféré ecrire du par exemple

  7. #7
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 581
    Par défaut
    Bonjour simooon,

    Citation Envoyé par simooon Voir le message
    A ce propos, si je ne me trompe pas, la déclaration de variables initialisé directement en binaire n'est pas standard en C.
    Non ce n'est pas standard. Il existe parfois des notations B01010011, mais en fait ce sont justes des constantes de type byte B00001010 = 10; souvent définies dans une énumération. Pour éviter d'en avoir trop, elles ne couvrent que les bytes ce qui en limite l'intérêt.

    Une autre chose serait utile, me semble-t-il, serait l'existence d'un séparateur comme "_" qui existe dans d'autres langages. A l'heure où on manipule des nombres de plus en plus grands, pouvoir écrire 12_978_852_456 serait plus lisible que 12978852456 de même que 0xFA_09_AC_F1_55_71_5E_01 ou 0xFA09_ACF1_5571_5E01 au lieu de 0xFA09ACF155715E01.

    On peut toujours rêver, mais il faut bien des sources d'erreurs

    Salut

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par simooon Voir le message
    A ce propos, si je ne me trompe pas, la déclaration de variables initialisé directement en binaire n'est pas standard en C.
    Si mes infos sont vrais, je trouve ça dommage, bien desfois ou j'aurai préféré ecrire du par exemple
    Tu n'as pas de binaire non mais tu as de l'hexadécimal qui y est directement associé. Parce 2^4=16 il suffit de convertir le binaire en prenant les digits 4 par 4 pour avoir l'hexa correspondant.
    Exemple ton 0b0101 donne directement 0x5 (que j'écrirais alors plutôt 0x05 pour bien montrer que je veux occuper 8 bits).
    Et même avec plus compliqué comme 0b00101100101101 là encore il suffit de découper 4 par 4 (en partant de la fin) ce qui donne 00 1011 0010 1101 et on traduit ça (presque) instantanément en 0x0b2d.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Citation Envoyé par simooon Voir le message
    A ce propos, si je ne me trompe pas, la déclaration de variables initialisé directement en binaire n'est pas standard en C.
    Si mes infos sont vrais, je trouve ça dommage, bien desfois ou j'aurai préféré ecrire du par exemple
    Ce n'est effectivement pas du C standard, mais certains compilateur comprennent cette notation.

    C'est le cas de gcc :

    https://gcc.gnu.org/onlinedocs/gcc/B...constants.html

    c'est une extension au langage C proposée par gcc.

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    Même dans C++, à ma connaissance c'est un ajout récent genre C++17 (ou "récent" genre C++11).
    Edit: Il s'avère que c'est C++14 qui l'a ajouté.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Declarer tableau de structure en extern
    Par PoZZyX dans le forum C
    Réponses: 2
    Dernier message: 06/04/2010, 14h08
  2. fonction de declaration (tableau)
    Par Inh[Star]Noz dans le forum Débuter
    Réponses: 9
    Dernier message: 09/11/2008, 21h50
  3. [HTML] Syntaxe pour tableau html
    Par torp44 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/09/2008, 21h35
  4. Declaration tableau C++ CLI
    Par abbd dans le forum C++/CLI
    Réponses: 1
    Dernier message: 26/07/2007, 10h53
  5. Declaration tableau sous Access 2000
    Par Tsatogua dans le forum Access
    Réponses: 13
    Dernier message: 24/02/2006, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo