IPB

Bienvenue invité ( Connexion | Inscription )

> Quelques bizzareries en C, Où le code ne fait pas ce qu'il suggère
Options
Jaypee
posté 19 Mar 2022, 19:58
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Hello toutes et tous les codeurs en C,

J'ai vu passer un tweet provocateur sur le C, qui avait relaxé son typage à la manière de JavaScript.

Code
jaypee@MacMini2018JP LangageC % alias bat        
bat='gcc -w'
jaypee@MacMini2018JP LangageC % cat ./typesRelaches.c
#include <stdio.h>

int main() {
  puts("-0.5" + 1);
}

jaypee@MacMini2018JP LangageC % bat -o typesRelaches typesRelaches.c
jaypee@MacMini2018JP LangageC % ./typesRelaches                    
0.5


Puis il a eu dans le même relâchement des règles, l'adoption par C de l'exponentiation de Fortran, **:
Code
jaypee@MacMini2018JP LangageC % cat exposant.c
#include <stdio.h>
int main() {
  printf("%d\n", 50 **"2");
}
jaypee@MacMini2018JP LangageC % bat -o exposant exposant.c
jaypee@MacMini2018JP LangageC % ./exposant
2500


Enfin, on peut annoncer toujours dans cette même réforme du langage, un nouvel opérateur "tend vers" --> :
Code
jaypee@MacMini2018JP LangageC % cat tendVers.c    
#include <stdio.h>
int main() {
  int x = 5;
  while (x --> 0) {
    printf("%d ", x);
  }
  printf("\n");
}
jaypee@MacMini2018JP LangageC % bat -o tendVers tendVers.c
jaypee@MacMini2018JP LangageC % ./tendVers        
4 3 2 1 0


Mais, tout ça n'est en fait que fake news, Il y a une entourloupe, bien sûr ! Sauriez-vous rétablir la vérité ?

Crédits: la Twitteuse @lunasorcery

Ce message a été modifié par Jaypee - 19 Mar 2022, 20:01.
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
schlum
posté 19 Mar 2022, 23:33
Message #2


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Le premier affiche la chaine "-0.5" à partir du 2e caractère (addition à un pointeur)
Le deuxième déréférence la chaîne char* "2" (*"2" = '2' = 0x32 = 50)
La troisième c'est juste l'opérateur de décrément post-fixé (x-- = x-1)

^^


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 17th June 2025 - 04:46