Question sur la virgule

yoannyoann Membre
J'ai une petite question sur une syntaxe que je vois de temps en temps :

[ivar release], ivar = nil;

Au niveau comportement, est-ce que la virgule change quelque chose par rapport au point virgule ?

Réponses

  • zoczoc Membre
    17:11 modifié #2
    Dans l'exemple que tu donnes, le comportement est identique.


    Par contre, dans le cas d'une affectation, ça change tout :


    Dans le cas de "foo = [bar release]; bar = nil;", foo contient le résultat de l'appel de la méthode release. Dans le cas de "foo = [bar release], bar= nil;", foo contient la valeur de bar (comme si tu avais fait foo = bar = nil), donc nil.

  • mpergandmpergand Membre
    mars 2010 modifié #3
    Avec des virgules, la valeur de l'expression est celle la plus à  droite:

    int i,j;
    printf("%d\n",(i=3,j=2));

    la valeur de l'expression est 2;

    Utile pour les expressions conditionnelles:

    if(i=2,j<10)

    ici c'est j<10 qui est évalué.


    Les expressions sont évaluées de gauche à  droite;
  • yoannyoann Membre
    17:11 modifié #4
    Oki, et du coup quel intérêt dans ce genre de situation ? Je le vois écris dans plein de code, c'est pas juste pour faire joli quand même ? :-p
  • ThibautThibaut Membre
    17:11 modifié #5
    Personnellement je l'utilise simplement pour tout mettre sur une seule ligne et gagner en visibilité. Tu me diras que ça fonctionne aussi bien avec un point-virgule, mais ça me perturbe d'en voir en milieu de ligne.
  • mpergandmpergand Membre
    17:11 modifié #6
    Généralement, en C, on écrit une instruction par ligne. L'emploi de la virgule est un moyen détourné de respecter ce principe.

    Dans l'exemple que tu cites, la virgule n'a qu'un seul but: gagner une ligne de code.  :D
  • yoannyoann Membre
    17:11 modifié #7
    dans 1268482902:

    Généralement, en C, on écrit une instruction par ligne. L'emploi de la virgule est un moyen détourné de respecter ce principe.

    Dans l'exemple que tu cites, la virgule n'a qu'un seul but: gagner une ligne de code.  :D


    Ok c'est ce qu'il me semblait ^^
Connectez-vous ou Inscrivez-vous pour répondre.