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

Petites explications en C.

Liquilds-tabs
Liquilds-tabs
Niveau 5
06 novembre 2004 à 22:09:13

:salut:
Voila j´ai copier un programme très simple de mon livre.#include < stdio.h>
main()
{
int j;
printf("Veuillez saisir un chiffre divisible par 2 et par 3\n");
for(j=1; ( j%2!=0)||(j%3!=0);)
j=getchar()-48;
printf("Le résultat est %d\n", j);
return 0;
}

Et je ne comprend pas une chose qui n´est pas expliqué dans mon livre. Pourquoi doit ton soustraire à getchar 48. ( J´ai essayer sans soustraire 48 a getchar et le résultat était 64 au lieu de 6).
Pouvez vous me répondre s´il vous plait
:merci:

MathieuN7
MathieuN7
Niveau 10
06 novembre 2004 à 22:10:40

bon, je te dis tout de suite, je ne comprends pas ton prog :lol:

Mais sache que 48 est la valeur ASCII de 0, à partir de là... :)

Matb0x
Matb0x
Niveau 3
06 novembre 2004 à 22:14:23

C´est toujours moi avec un autre pseudo.
J´ai poster mon code source sur ce site sa sera peut etre un peu plus lisbile. http://wall.cours-info.net/?id=299

Matb0x
Matb0x
Niveau 3
06 novembre 2004 à 22:16:38

Si 48 vaut 0 en ascii je ne trouve pas pourqui faudrait soustraire par 0 un nombre c´est inutile ( ps: c´est peut etre bète ce que je dis mais bon je débute).+

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
06 novembre 2004 à 22:17:32

Je suis pas sur de ça :
j=getchar()-48;
sert a convertir en caracteres il me semble

Matb0x
Matb0x
Niveau 3
06 novembre 2004 à 22:19:50

Je sais pas parce que ce que renvoie getchar n´est pourtant pas un caractère.

Chaos_Clad
Chaos_Clad
Niveau 10
06 novembre 2004 à 22:21:37

Je ne pense pas car le formateur %d sert à sortir des int.

Chaos_Clad
Chaos_Clad
Niveau 10
06 novembre 2004 à 22:22:50

Peut-être qu´il le transtype alors.

MathieuN7
MathieuN7
Niveau 10
06 novembre 2004 à 22:26:06

en fait getchar() te renvoit un caractère; même si l´utilisateur tape un chiffre, un chiffre est bien un caractère.
sachant que j est un int, que getchar() renvoi un char, il va y avoir un cast automatique de char à int;
or:
char caractere = " a";
printf("%c", caractere); / /affichera a
printf("%d", caractere); / /affichera la valeur ASCII de a, soit 97

revenons à ton exemple, le fait de faire j = getchar(); donnera à j le code ASCII du caractère entré, soit 54 pour 6 ( d´après http://asciitable.com ) . Si l´on affiche %c - j, ça affichera bien 6, mais sachant que j est un int, autant l´afficher en tant que tel, et donc afficher %d - j; ce qui aura pour action d´afficher la valeur ascii de 6, soit 54; pour y remédier, on enlève 48 à j, afin que j contienne bien 6, et non sa valeur ascii...
J´espère avoir été clair :doute:

Liquilds-tabs
Liquilds-tabs
Niveau 5
06 novembre 2004 à 22:29:08

ok merci mathieuN7 j´ai compris :ok:

MathieuN7
MathieuN7
Niveau 10
06 novembre 2004 à 22:30:21

si si %d c´est pour un int, pour un signed plus précisément :)

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
06 novembre 2004 à 22:30:48

j´ai vu ça dans le K& pourtant il me semble

MathieuN7
MathieuN7
Niveau 10
06 novembre 2004 à 22:30:50

ah super! :-d
de rien :)

Chaos_Clad
Chaos_Clad
Niveau 10
06 novembre 2004 à 22:34:18

C´est pas plutôt le K2R ?

:dehors:

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