Tellement intuitif et logique.
Je me demande bien comment font les langages tel que Python et Lua pour rester dans l'interpreter avec typage dynamique.
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Simple : ça plante quand ce n’est pas faisable.
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Tu veux dire plutot que ca te gueule dessus
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Tu as raison, défends les choix idiots du javascript
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Ben comme tout choix, c'est défendable à un certain point de vue...
Ça revient à accepter de faire quelque chose qui n'a aucun sens et donc certainement pas désiré par le développeur plutôt que de lui faire remarquer.
C'est le bon plan pour avoir des bugs qui traînent pendant des années…
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
c'est loin d'être faux,
mais d'un coté ce n'est pas parse-que le langage est interprété qu'il doit maintenir un état de l'intégralité des types contenus dans le tableau en vue d'un éventuel sort,
si sort parse au préalable tout le tableau pour checker les types ça ne m'irais pas non plus, et checker chaque type à chaque comparaison ouvre des soucis éventuels de sécurité en plus de la perte de temps cpu ..
mais sort est un cas à part, ici le tableau est composé d'entier donc on s'attend à un tri numérique car on regarde le cas avec nos yeux d'humain mais ce n'est pas si simple et il n'y a pas de solution générique passe partout
en php il y à un flag pour spécifier le type de comparaison, qsort du C oblige à fournir une fonction de comparaison .. après chaque api à fait un choix par défaut, pertinent ou non ..
c'est au dev de faire gaffe un minimum sans présumer même si la chose parait pourtant triviale et évidente comme ici
et la le mec il le pécho par le bras et il lui dit '
quand lua voit un nombre il le garde nombre, il essaye pas d'en faire une string
aussi, lua n'a pas de librairie kilométrique, les tableaux n'existent pas vraiment, ce sont des dictionnaires, donc une fonction sort() devrait avoir une spec beaucoup plus précise qu'en js.
squalyl: je sais l'idée c'est que d'autre langages sans typage explicite y arrivent.
Javascript est plein de trucs bizzare du meme genre, et la c'est quand meme enormel.
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
oui, c'est vraiment trèstrèsnorme, je suis d'accord.
Zeph Le 15/05/2021 à 23:27 C'est voisin du property-based testing non ?
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
En pratique, oui, mais je n'ai pas l'impression que ça soit vraiment théorisé.
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
En tout cas, en pratique c'est dur à utiliser réellement (autrement que des cas simplistes).
Par contre, c'est facile à utiliser sans réellement vérifier de propriété, simplement pour voir si ça crashe ou pas.
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Une question tres interessante et au resultat ... hmm.. surprenant:
Essayez de répondre avant de tester/regarder ce qui se passe. Le résultat pourrais vous surprendre!
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Uther Le 30/05/2021 à 06:22 Théoriquement, tout ce que le compilateur veux bien te sortir vu que qu'il y a un underflow ce qui est undefined behavior . Ensuite on compare des types de taille différente, Il y a fort a parier que ça peux varier en fonction des compilateurs et des architectures.
C'est ce que j'aime bien dans le Rust, on a pas ce genre de surprise. Le compilateur va juste refuser de te compiler ça.
Et non. Vu comment ce comporte chacun des compilateur c’est clairement défini par le language.
Le C n’est pas un langage ésotérique où chacun fait sa popote et croise les doigts pour que ça marche. Il y a une norme derrière, imparfaite oué, mais beaucoup plus que ce que certains peuvent penser y est défini et en l’occurrence le comportement ici est de ce que je peux en lire clairement défini. Pas intuitif peut être au premier abords, mais défini.
Dépendre de l’architecture n’est pas quelque chose d’indéfini.
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Uther Le 30/05/2021 à 12:02 Il y a en effet une norme avec des cas explicitement non defini que tu es censé éviter ou le compilateur est libre de faire ce qu'il veut et un underflow en fait partie.
Mais en effet ce n'est pas ce point là qui est surprenant. Je suppose que le soucis pour toi est que le literal est traité comme un int et que du coup la valeur du complément après les casting automatique est différente suivant la taille du type. Et la taille des type n'étant pas totalement fixée par la norme, il y a moyen que les résultats varient en fonction des archi/compilateur.
Ce n'est pas de l'underflow, et le cas présent est clairement défini, il n'y a aucun lieu d’interprétation dans le cas courant.
Vince: je ne connais pas la norme par cœur loin de la, mais je sais chercher quand j'ai besoin d'infos.
En l’occurrence ce cas en partit répondu par la norme C89 A2.5.1 (je n'ai pas le paragraphe pour la norme C99 faute d'en avoir une copie)
Une plateforme 64bit (et 32bit aussi) va afficher cde. Une plateforme 16bit si elle support le long long affichera bcde, et 8bit abcde.
Tout est lié a A2.5.1, une valeur constante est par défaut signé et de la taille qui permet de faire tenir la valeur, donc dans le cas courant, ça va dépendre du test qui est fait, et sans valeur prédéfinie tel que la, le signe serait étendu a la taille du nombre qui a la plus grande taille, par contre, on ne reduit pas la taile d'un entier.
Par ce qu'on compare avec un nombre signé.
Si on change ~0 par ~0U pour un nombre non signé, le résultat change.
char a = -1; unsigned char _a = a;
Dans les deux cas, a et _a contient 0xFF.
if (_a == ~0)
Le compilateur cherche a faire rentrer ~0 dans la valeur minimum qui permet de le contenir en suivant la norme:
C89: int, long, unsigned long
C99: int, long, long long
On est ici avec du C99
Donc ~0 rentre dans un int, qui pour la majorité des plateformes 32/64bit est un entier de 32bit, donc 0xFFFFFF
0xFF != 0xFFFFFFFF donc "a" ne s'affiche pas
Idem pour B on a 0xFFFF vs 0xFFFFFFFF
Pour C, on a 0xFFFFFFFF dans _c et tester avec 0xFFFFFFFF est correct, donc on affiche c.
Pour D, sous windows on a 0xFFFFFFFF donc ca reste la meme chose. Pour linux long fait 64bit, donc cf pour E qui utilise long long
Pour E, on est sur du 64bit, _d = 0xFFFFFFFFFFFFFFFF. On peux se dire "oui mais 0xFFFFFFFFFFFFFFFF != 0xFFFFFFFF" alors pourquoi ca affiche E ?
Parce que ~0 est signé (et ici comme c'est un nombre négatif) de 32bit on fait l’extension de signe en faisant la conversion vers 64bit.
Et pourquoi c'est cette explication? Simple. si on fait
if (_e == ~0U) { printf("e"); }
E ne s'affichera pas, parce que ~0U == 0xFFFFFFFF aka un nombre sur 32bit, mais non signé, donc on ne fait pas d'extension de signe pour la comparaison.
Ce n'est pas indéfini, ce n'est pas un cas borderline, c'est complétement explicable avec la norme et il n'y a pas d’ambigüité.
La seule variance suivant plateforme/compilateur est la taille (en bits) des types de base.
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Pas vraiment.
Un est mathématiquement correct, l'autre.. comment dire.
Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.