• [^] # Re: Oula plein de chose dans le poste

    Posté par . En réponse au message L'opérateur unaire * me laisse perplexe (pointeurs sur fonctions principalement). Évalué à 1.

    Donc, le cast sert juste à supprimer un avertissement du compilo ?
    Le cast sur la valeur du malloc oui, un avertissement est à prendre quand même au sérieux car t'indique un problème potentielle.
    Exemple tu fais ton prog et tu le teste sur un x86 (donc 32 bits), puis ton PC change et tu le recompile sur 64 bits et la paf, plus rien ne marche à cause d'un cast inconsidéré/aux effetr mal évalué à l'époque, tu peut passer beaucoup de temps à trouver l'origine du pb...il faut absolument réfléchir avant de faire un cast sur les archi possible du programme.

    c'est comme mettre entre parenthèse une affectation en guise de test ?
    Ca c'est pas un test puisque c'est toujours vrai (de faire une affectation).

    vu que toute les valeurs affectées sont converties dans le type de la variable qui la reçoit.
    Normalement tu dois avoir un warning a faire des conversion implicites en cas de perte de bits significatif (exemple tu mets le résultat d'une opération 64bit dans un char qui fais 8 bits (sur beaucoup d'arch) tu perd au passage de l'information ), mais comme sur x86 presque tous les type de variable C sont codé vers du 32bits par les compilos...

    La différence entre "cc -S" et objdump c'est que objdump te montre tout le code de ton appli (incluant ctr0 et crt1 les fichier de préambule des programme réalisant les initialisation des variables et des piles avant démarrage du main) ainsi que les libs static lié à ton programme, "cc -S" ne montre que ton fichier compilé avant linkage (donc les variables/fonctions externe ne sont pas référencées)

    « movl 0,ドル %eax »
    return 0;

    J'ai encore du boulot ^^
    Surtout il ne faut pas croire que tout ce que fais le compilo est conforme à ce que tu veux et ne compter que sur lui pour indiquer les erreurs. C'est ton job de programmeur ca. ;-)