Un petit "i" qui me pertube...

Bonjour,


 


Voilà  dans mon code j'ai trouvé un "i" que j'ai dû taper sans le vouloir et qui ne correspond à  aucune variable.



int a = 0i;

C'est ce que j'ai écrit.


Je n'ai aucune erreur et mon application se compile.


 


Alors, y a-t-il une explication que j'ignore?


 


En soit, cela n'a rien de grave. Je suis juste curieux. (On en apprend tous les jours!)


 


Merci :)


Réponses

  • HerveHerve Membre
    août 2015 modifié #2

    Effectivement. Si on clique droit sur iO, il ne renvoie à  aucune variable prédéfinie. Je crois qu'en C, on peut écrire des choses comme :


     


    int i = p = r = g = 10;


     


    Tu instancies et donnes une valeur à  plusieurs int en même temps. Ce doit être ça???


  • Joanna CarterJoanna Carter Membre, Modérateur

    T'es sûr que c'est un "i" et pas un "l" (pour long) ?


  • @Herve


    Je ne pense pas instancier plusieurs variables. Le "i" ne correspond à  rien dans la suite du code.


     


    @Joanna Carter


    Oui je suis sûr. :)


     


    Après un petit test, lorsque je tape:



    int a = 5i; //par exemple
    NSLog(@valeur de a: %d ,a);

    La console me retourne "valeur de a: 0".


     


    Etrange non?

  • AliGatorAliGator Membre, Modérateur
    En C, on peut mettre des suffixes aux valeurs numériques libérales pour indiquer leur type.

    Ainsi, plutôt que d'écrire "5.0" (qui est une valeur littérale de type "double"), si on écrit "5.0f" avec le suffixe "f", cela indique que c'est un "float" et non un "double".

    De même on peut écrire des suffixes comme "ll" pour indiquer qu'un entier est un "long long int" et pas juste un "int". Ainsi "5" est un int mais "5ll" est un long long int.

    J'ai jamais vu le suffixe "i", mais je pense que c'est un suffixe valide pour indiquer explicitement que le nombre est un entier "int".
  • @AliGator


     


    C'est ce qui me semblait le plus probable en effet. 


    Mais je ne l'avais jamais vu et le résultat me surprend. (int a = 5i; NSLog(@%d,a);    retourne "0" dans la console)


     


    Après ce n'est pas un problème que je veux résoudre. Je suis un peu troublé voilà  tout. :)


  • AliGatorAliGator Membre, Modérateur
    Ah ou alors t'as importé Complex.h ?

    (Mais je doute que ce soit ça car la constante de mémoire s'appelle "I" en majuscule et faudrait que tu mettes un signe "*" explicite pour la multiplication)
  • Non je ne l'ai pas importé.


    C'est l'absence du "*" qui laisse à  penser que tu as surement raison (sur le fait que ça puisse être un suffixes).


     


    Mystère...


  • C'est sympa de mettre un i dans un truc. Avec un peu de chance, ça pourrait devenir tendance ..

  • "i" je l'utilisais à  mes débuts pour afficher un entier dans la console (avant de me rendre compte que d était plus approprié) comme on utilise "f" pour afficher un float. Je ne sais pas si il y un lien mais ça mérite de faire une recherche dessus !


Connectez-vous ou Inscrivez-vous pour répondre.