CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

a == type(int) en C ?

Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 17:01:43

Bonjour.
En python je sais qu'on peut faire : a == type(int) en C
Mais en C, comment on peut faire ça ?

Merci d'avance :)

Runnymede
Runnymede
Niveau 10
22 septembre 2016 à 17:18:05

Salut, tout le monde ne connais pas les mêmes langages. Au lieu de dire "faire ça en python", explique en quoi consiste la manipulation que tu souhaites faire précisément.

Si je devine bien ce que ça fait, tu vérifies le type d'une variable.

Ça n'est pas possible nativement en C. Ce que tu peux faire éventuellement ça serai quelque chose comem ça : sizeof(int) == sizeof(a). Ça va déterminer si ta variable et le type int peut stocker les mêmes tailles de données mais ça ne va pas garantir systématiquement qu'elle est bien de ce type, donc fais très attention.

Message édité le 22 septembre 2016 à 17:22:09 par Runnymede
Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 17:19:50

C'est pour une condition :
Si la variable a est un entier, on affiche un texte.

a == entier

Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 17:38:40

A part cette méthode qui ne garantit pas toujours si c'est bien un entier, il n'y a rien d'autre ?

Par exemple pour un résolveur d'équation, afficher seulement les solutions entières

LEpigeon-888
LEpigeon-888
Niveau 12
22 septembre 2016 à 17:43:59

J'comprends pas trop ton problème, pour savoir si a est un entier t'as juste besoin de regarder la déclaration de a, enfin ça dépend de ce que t'as écris quoi, si t'as écris que a serait un entier ou pas.

Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 17:50:19

Résoudre une équation et affiché la solution seulement si c'est un entier

Runnymede
Runnymede
Niveau 10
22 septembre 2016 à 17:53:02

Le 22 septembre 2016 à 17:38:40 Jean-Scapin a écrit :
A part cette méthode qui ne garantit pas toujours si c'est bien un entier, il n'y a rien d'autre ?

Par exemple pour un résolveur d'équation, afficher seulement les solutions entières

Non. Le C est un langage à typage statique, pas comme le python qui est à typage dynamique. Il n'y a pas d'information de type dans une zone de mémoire. De ce fait, il n'y a aucun moyen de savoir le type d'un élément lors de l'éxecution.

LEpigeon-888
LEpigeon-888
Niveau 12
22 septembre 2016 à 17:54:53

C'est pas un vrai problème ça.

Ton problème ça serait pas plutôt « Savoir si un nombre flottant est aussi un entier » (savoir s'il y a pas de chiffres après la virgule quoi) ?

Si oui http://stackoverflow.com/questions/5796983/checking-if-float-is-an-integer/25274904#25274904 .

Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 17:57:50

Non enfaite ca marche pas, autant pour moi:)

Le truc c'est : soit a et b deux entiers, on affiche le résultat seulement si b/a = entier, sinon on affiche rien (pas d'arrondi)

LEpigeon-888
LEpigeon-888
Niveau 12
22 septembre 2016 à 18:00:03

Le 22 septembre 2016 à 17:57:50 Jean-Scapin a écrit :
Non enfaite ca marche pas, autant pour moi:)

Le truc c'est : soit a et b deux entiers, on affiche le résultat seulement si b/a = entier, sinon on affiche rien (pas d'arrondi)

L'opération b/a retournera TOUJOURS un entier, tu dois caster b ou a en un nombre flottant si tu veux que le résultatt soit un flottant, et après t'analyse le flottant comme l'explique le lien que j'ai donné plus haut.

Message édité le 22 septembre 2016 à 18:00:35 par LEpigeon-888
Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 18:02:47

Oui mais après le résultats sera un flottant et après mon programme n'affichera jamais de résultat [[sticker:p/1kki]]

LEpigeon-888
LEpigeon-888
Niveau 12
22 septembre 2016 à 18:06:17

Le 22 septembre 2016 à 18:02:47 Jean-Scapin a écrit :
Oui mais après le résultats sera un flottant et après mon programme n'affichera jamais de résultat [[sticker:p/1kki]]

Non, t'as pas l'air de comprendre ton problème j'ai l'impression, ce qui compte c'est pas le type de la variable, mais son contenu.

Si tu utilise un type de variable entier, la réponse à ta question sera toujours vraie, car un type entier ne peux pas contenir de chiffres après la virgule, t'es obligé d'utiliser un type flottant pour savoir s'il y a oui ou non des chiffres après la virgule.

Message édité le 22 septembre 2016 à 18:08:49 par LEpigeon-888
Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 18:08:39

Ah d'accord.
Mais c'est pas un peu "trop poussé" comme méthode pour un exercice pour débutant ?

LEpigeon-888
LEpigeon-888
Niveau 12
22 septembre 2016 à 18:12:31

Oui, parce que t'as pas assez détaillé ton problème, du coup j'ai répondu au mauvais problème.

Ton vrai problème c'est pas de savoir si un nombre contenu dans une variable flottante est en entier, ton vrai problème c'est « Est ce que le résultat de b divisé par a est un entier ? (je parle au niveau mathématique, pas informatique) » et là la réponse est beaucoup plus simple : tu regarde le reste de la division, s'il est nul c'est que la division entière donne le bon résultat.

Message édité le 22 septembre 2016 à 18:14:37 par LEpigeon-888
Jean-Scapin
Jean-Scapin
Niveau 6
22 septembre 2016 à 18:14:08

Ah d'accord.

Merci beaucoup pour la réponse et excuse moi pour avoir mal expliqué :)

Sinon petite question : peut on multiplier des caractères ? Si on fait 5*"n", ca affiche 5 n ?

LEpigeon-888
LEpigeon-888
Niveau 12
22 septembre 2016 à 18:17:30

"n" c'est pas un caractère mais une chaine de caractère (avec le caractère '\0' ajouté implicitement à la fin), j'ai aucune idée de ce qui se passe si tu fais 5*"n", dans le doute je dirais que ça produit une erreur.

Par contre si tu utilise 'n' (soit le caractère « n », et non la chaine de caractère contenant « n ») ça va prendre la valeur de « n » (son code ASCII) et le multiplier par 5.

romtrep
romtrep
Niveau 8
23 septembre 2016 à 09:49:33

Tu ne peux pas faire 5*"n" puisque la multiplication entre un entier et une chaine de caractères n'est pas définie en C.
Par exempla, tu peux faire 5 * 'n' , soit la multiplication d'un entier et du code d'un caractère qui est aussi un entier, mais de différente taille. Dépendamment des compilateurs, le cast peut se faire automatiquement ou si non tu aura à caster le caractère en int: 5 * (int)'n' .

Par contre, ça n'affichera pas 5 n.
Si tu veux afficher 5 n, tu dois manipuler une chaîne de caractères de façon a y mettre le nombre de 'n' souhaité pour pouvoir l’afficher d'une traite.

Message édité le 23 septembre 2016 à 09:51:00 par romtrep
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment