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 :

explication syntaxe C++


Sujet :

C++

  1. #1
    Membre �clair�
    Inscrit en
    Janvier 2005
    Messages
    460
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par d�faut explication syntaxe C++
    Bonjour,
    j'aimerai savoir la signification de la syntaxe suivante :

    = (ulTmp < 0x80000000UL) ? ulTmp : (-(~((long) ulTmp)) -1);
    le 2e cas en fait, tous ces symboles ??

    merci

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(ulTmp < 0x80000000UL)
    {
        //ne rien changer
    }
    else
    {
        long lTmp = static_cast< long >(ulTmp);//Cast de unsigned à signed
        long notTmp = ~lTmp; //complément
        long negTmp = -notTmp; //négatif (complément à 2)
        ulTmp = negTmp - 1; //Annulation du +1 dû au complément à 2
    }
    En fait pour moi, ce code � l'air de prendre le compl�ment du compl�ment (ce qui a l'air d'�tre le nombre lui-m�me, en fait). Mais le calcul a peut-�tre bien un effet de bord sur le bit de poids fort.

    Peut-�tre est-ce une extension de signe si tu as des long de 64 bits...
    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.

  3. #3
    Membre �clair�
    Inscrit en
    Janvier 2005
    Messages
    460
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par d�faut
    bah justement la 1ere fois que je fais ce calcul ca passe , et la 2e fois ca plante � cette ligne !

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    En quoi �a "plante" ??

    Et quelles sont les lignes pr�c�dente et suivante?

    ulTmp est bien une variable locale ?
    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.

  5. #5
    Membre �clair�
    Inscrit en
    Janvier 2005
    Messages
    460
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par d�faut
    unsigned long ulTmp;
    unsigned long ulTmp2;

    long posChamp=0;
    int temp1 = 0;
    int temp2 = 0;
    int temp3 = 0;
    int temp4 = 0;
    InfosFichier* psFichier = NULL;
    unsigned short usCr = OK;

    MC_TraceEcrire(TR_COM_COM,TR_MOD_TAB,TR_TYP_DEB, "usGTInitTabChp");

    /* Allocation m�moire. */
    if (usResultat == 0) {
    g_stTabChp = (t_TabChp *) MC_Allouer(ulNombre * sizeof(t_TabChp));
    if (g_stTabChp == NULL) usResultat = ERR_ALLOCATION_MEMOIRE;
    else g_ulNbTabChp = ulNombre;
    }

    MC_TraceEcrire(TR_COM_COM,TR_MOD_TAB,TR_TYP_ECR, "g_stTabChp = %p, g_ulNbTabChp = %hu", g_stTabChp, g_ulNbTabChp);

    /* Initialisation du contenu. */
    for (i = 0; i < ulNombre && usResultat == 0; i++) {
    usResultat |= MC_usLireSignedLong (usNumFichierTable, &g_stTabChp[i].bObligatoire); // suppression : usResultat |= MC_usLireSignedLong (usNumFichierTable, &g_stTabChp[i].bObligatoire); pour modification
    usResultat |= MC_usLireUnsignedShort (usNumFichierTable, &g_stTabChp[i].usLgMin);
    usResultat |= MC_usLireUnsignedShort (usNumFichierTable, &g_stTabChp[i].usLgMax);
    usResultat |= MC_usLireSignedChar (usNumFichierTable, &g_stTabChp[i].cTypeChamp);





    /* On se positionne sur le bon fichier */
    posChamp=0;
    temp1 = 0;
    temp2 = 0;
    temp3 = 0;
    temp4 = 0;
    psFichier = NULL;

    usCr = usRechercherFichier(usNumFichierTable,&psFichier);

    /* Enregistrement de la position du champs dans le fichier */
    if ( (posChamp=ftell(psFichier->pFichier)) <0)
    usCr = ERR_FICHIER_STRUCTURE;

    if (usCr == OK) {
    temp1 = fgetc(psFichier->pFichier);
    temp2 = fgetc(psFichier->pFichier);
    temp3 = fgetc(psFichier->pFichier);
    temp4 = fgetc(psFichier->pFichier);

    if (temp1==EOF || temp2==EOF || temp3==EOF || temp4==EOF)
    usCr = ERR_FICHIER_STRUCTURE;

    if (usCr == OK) {






    //int reservation_pulValeur = MultiByteToWideChar (CP_ACP, 0, buf, -1, NULL, 0) ;
    //LPWSTR pulValeur_unicode = new WCHAR[reservation_pulValeur];
    //MultiByteToWideChar (CP_ACP, 0, buf, -1, pulValeur_unicode, reservation_pulValeur) ;

    //MessageBox (NULL, pulValeur_unicode, TEXT("iPaqDev"), MB_OK);


    MessageBox (NULL, TEXT("debutPul"), TEXT("iPaqDev"), MB_OK);

    if (i==1)
    {
    ulTmp2 = (((unsigned short)temp1)<<24) +
    (((unsigned short)temp2)<<16) +
    (((unsigned short)temp3)<<8) +
    (unsigned short)temp4;
    }else
    {

    ulTmp = (((unsigned short)temp1)<<24) +
    (((unsigned short)temp2)<<16) +
    (((unsigned short)temp3)<<8) +
    (unsigned short)temp4;
    }


    MessageBox (NULL, TEXT("finPul"), TEXT("iPaqDev"), MB_OK);

    }

    }



    //TODO : usCr = MC_usLireUnsignedLong(usNumFichierBinaire,&ulTmp);

    if (usCr == OK) {

    MessageBox (NULL, TEXT("POUET 1"), TEXT("iPaqDev"), MB_OK);

    if (i!=1)
    {
    g_stTabChp[i].bOccurence = (ulTmp < 0x80000000UL) ? ulTmp : (-(~((long) ulTmp)) -1);
    }
    else
    {
    g_stTabChp[i].bOccurence = (ulTmp2 < 0x80000000UL) ? ulTmp2 : (-(~((long) ulTmp2)) -1);
    }
    MessageBox (NULL, TEXT("POUET 2"), TEXT("iPaqDev"), MB_OK);
    }
    free(psFichier);
    }

    quand i=0 ca passe, quand on passe � i=1 ca ne passe plus, m�me en essayant avec une autre variable (ulTmp2)

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    � tous les coups, le probl�me n'est pas � droite du =, mais � sa gauche:
    g_stTabChp[i] doit repr�senter une adresse invalide.
    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.

  7. #7
    Membre �clair�
    Inscrit en
    Janvier 2005
    Messages
    460
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par d�faut
    j'ai trouv� merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. explication syntaxe (facile) filereference
    Par uowis dans le forum Web
    R�ponses: 0
    Dernier message: 20/10/2008, 19h07
  2. explication syntaxe void far nom_fonction
    Par waldoun dans le forum C
    R�ponses: 2
    Dernier message: 16/05/2007, 19h05
  3. explication syntaxe HTTP_POST_VARS
    Par iag_1980 dans le forum Langage
    R�ponses: 2
    Dernier message: 20/03/2007, 11h44
  4. Explication Syntaxe , g�n�ricit� ?
    Par elitost dans le forum Langage
    R�ponses: 4
    Dernier message: 10/11/2005, 11h28
  5. explication syntaxe requete sur pgsql
    Par alain.lc dans le forum PostgreSQL
    R�ponses: 2
    Dernier message: 08/12/2004, 10h24

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