Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Livre pour débuter le C ?

77 réponses
Avatar
pascal.pellizzoni
Bonjour =E0 toutes et =E0 tous,
quel livre me conseilleriez vous sur le langage C, plutot orient=E9 microco=
ntroleurs...
Je pr=E9cise que je suis technicien en =E9lectronique, et que j'ai quand me=
me des notions de programmations...
J'ai vu rapidement le langage en BTS, mais il m'a toujours rebut=E9, m=EAme=
si je reste persuad=E9 qu'il est puissant, versatile, portable, enfin bref=
bourr=E9 de qualit=E9s connues et reconnues...=20
Sinon, =E0 part =E7a, vous allez vous moquer de moi, mais j'ai commenc=E9 =
=E0 "bidouiller" en BASIC =E0 la fin des ann=E9es 80 sur le Commodore C64 d=
e mon fr=E8re... En plus le "Basic V2" du C64 n'=E9tait deja pas une r=E9f=
=E9rence !
Un peu plus tard, j'ai bidouill=E9 en Visual Basic 1.0, puis en Quick Basic=
4.5, ...
En BTS je me suis =E9clat=E9 en assembleur 68705 et 68HC11... Et pour la su=
ite, plus grand chose, =E0 mon grand regret !
J'ai d=E9ja post=E9 un message =E0 ce sujet sur fr.sci.electronique, beauco=
up m'ont conseill=E9 le K&R, ou le ANSI C.
Merci par avance de votre aide !

10 réponses

4 5 6 7 8
Avatar
Pascal06
Non, vraiment, je suis impardonnable.
Je viens de retrouver un fichier daté de Décembre 2006 sur mon PC, que
j'avais téléchargé ici:
http://uuu.enseirb.fr/~kadionik/enseirb/e2/E3%20E/langageCembarque_enseirb. pdf
Avatar
Marc Boyer
Le 29-08-2012, Pascal06 a écrit :
Non, vraiment, je suis impardonnable.
Je viens de retrouver un fichier daté de Décembre 2006 sur mon PC, que
r j'avais téléchargé ici:
http://uuu.enseirb.fr/~kadionik/enseirb/e2/E3%20E/langageCembarque_enseirb.pdf



Et dès qu'on entre dans les détails arrivent les premières erreurs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet."

Marc Boyer
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
Avatar
Pascal06
On 29 août, 13:12, Marc Boyer
wrote:
Le 29-08-2012, Pascal06 a écrit :

  Et dès qu'on entre dans les détails arrivent les premières erre urs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet. "

 Marc Boyer


Ah ouaiiiii carrément !
Punaise ça craint !
Avatar
Stephane Legras-Decussy
Le 29/08/2012 13:12, Marc Boyer a écrit :

Et dès qu'on entre dans les détails arrivent les premières erreurs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet."




aïe ...

autant être faux par omission ça passe selon moi, mais là
le détail technique inutile et faux, ça tue ...
Avatar
JKB
Le Wed, 29 Aug 2012 05:13:15 -0700 (PDT),
Pascal06 écrivait :
On 29 août, 13:12, Marc Boyer
wrote:
Le 29-08-2012, Pascal06 a écrit :



  Et dès qu'on entre dans les détails arrivent les premières erreurs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet."

 Marc Boyer


Ah ouaiiiii carrément !
Punaise ça craint !



Oui, ça craint. Là, sous la main, tout de suite, j'ai un compilo C
dont le int est sur deux octets, le short sur 1 et le char, j'ai de
la chance sur 1 (manque de bol, il est non signé). Tout ce que la
norme dit, c'est :

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) < sizeof(long long)

Quant aux char, ils sont signés ou non selon l'humeur du compilo.
Personnellement, je force toujours le compilo à utiliser des
unsigned char. D'autres utilisent toujours des signed char, mais le
tout est de savoir ce qu'on manipule pour éviter les problèmes.

Coder en C en méconnaissant cela revient à s'exposer plus ou moins
tôt à de graves déconvenues allant d'une erreur de calcul à
l'explosion d'Ariane 5 au décollage.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
espie
In article ,
JKB wrote:
Le Wed, 29 Aug 2012 05:13:15 -0700 (PDT),
Pascal06 écrivait :
On 29 août, 13:12, Marc Boyer
wrote:
Le 29-08-2012, Pascal06 a écrit :



  Et dès qu'on entre dans les détails arrivent les premières erreurs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet."

 Marc Boyer


Ah ouaiiiii carrément !
Punaise ça craint !



Oui, ça craint. Là, sous la main, tout de suite, j'ai un compilo C
dont le int est sur deux octets, le short sur 1 et le char, j'ai de
la chance sur 1 (manque de bol, il est non signé). Tout ce que la
norme dit, c'est :

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) < > sizeof(long long)

Quant aux char, ils sont signés ou non selon l'humeur du compilo.
Personnellement, je force toujours le compilo à utiliser des
unsigned char. D'autres utilisent toujours des signed char, mais le
tout est de savoir ce qu'on manipule pour éviter les problèmes.



Moui. Enfin, si tu utilises bien "octet" dans son acception moderne de
"8 bits" (tu serais bien capable de jouer sur les mots, vilain), ce
compilo n'est pas conforme.

5.2.4.2.1: Size of integer types:
SHRT_MAX +32767
ca va etre dur a rentrer dans 8 bits...
Avatar
Jean-Marc Bourguet
(Marc Espie) writes:

In article ,
JKB wrote:
Le Wed, 29 Aug 2012 05:13:15 -0700 (PDT),
Pascal06 écrivait :
On 29 août, 13:12, Marc Boyer
wrote:
Le 29-08-2012, Pascal06 a écrit  :



  Et dès qu'on entre dans les détails arrivent les prem ières erreurs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet."

 Marc Boyer


Ah ouaiiiii carrément !
Punaise ça craint !



Oui, ça craint. Là, sous la main, tout de suite, j'ai un compi lo C
dont le int est sur deux octets, le short sur 1 et le char, j'ai de
la chance sur 1 (manque de bol, il est non signé). Tout ce que la
norme dit, c'est :

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <=
sizeof(long long)

Quant aux char, ils sont signés ou non selon l'humeur du compilo.
Personnellement, je force toujours le compilo à utiliser des
unsigned char. D'autres utilisent toujours des signed char, mais le
tout est de savoir ce qu'on manipule pour éviter les problèmes.



Moui. Enfin, si tu utilises bien "octet" dans son acception moderne de
"8 bits"



Il y a une autre? (Byte oui, mais octet?)

(tu serais bien capable de jouer sur les mots, vilain), ce
compilo n'est pas conforme.

5.2.4.2.1: Size of integer types:
SHRT_MAX +32767
ca va etre dur a rentrer dans 8 bits...



Mais sur 2 octets comme affirme, ca passe tres bien :-)

A+

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
JKB
Le Wed, 29 Aug 2012 14:04:44 +0000 (UTC),
Marc Espie écrivait :
In article ,
JKB wrote:
Le Wed, 29 Aug 2012 05:13:15 -0700 (PDT),
Pascal06 écrivait :
On 29 août, 13:12, Marc Boyer
wrote:
Le 29-08-2012, Pascal06 a écrit :



  Et dès qu'on entre dans les détails arrivent les premières erreurs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet."

 Marc Boyer


Ah ouaiiiii carrément !
Punaise ça craint !



Oui, ça craint. Là, sous la main, tout de suite, j'ai un compilo C
dont le int est sur deux octets, le short sur 1 et le char, j'ai de
la chance sur 1 (manque de bol, il est non signé). Tout ce que la
norme dit, c'est :

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) < >> sizeof(long long)

Quant aux char, ils sont signés ou non selon l'humeur du compilo.
Personnellement, je force toujours le compilo à utiliser des
unsigned char. D'autres utilisent toujours des signed char, mais le
tout est de savoir ce qu'on manipule pour éviter les problèmes.



Moui. Enfin, si tu utilises bien "octet" dans son acception moderne de
"8 bits" (tu serais bien capable de jouer sur les mots, vilain), ce
compilo n'est pas conforme.



Je ne dis pas qu'il est conforme (vue la tronche du processeur, ça
m'étonnerait), je répondais simplement à une remarque ironique.

5.2.4.2.1: Size of integer types:
SHRT_MAX +32767
ca va etre dur a rentrer dans 8 bits...



D'autant que sur le compilo en question, cette valeur est fixée à
127. Mais comme personne ne l'utilise, ce n'est pas bien grave :-(

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
Marc Boyer
Le 29-08-2012, Pascal06 a écrit :
On 29 août, 13:12, Marc Boyer
wrote:
Le 29-08-2012, Pascal06 a écrit :



  Et dès qu'on entre dans les détails arrivent les premières erreurs:
p38: short utilise deux octets en mémoire
p39: "Le type char désigne un nombre entier signé codé sur 1 octet."


Ah ouaiiiii carrément !
Punaise ça craint !



J'ai du mal à évaluer si ta remarque est à prendre au premier ou au
second degrès.

Soit tu considères que ce n'est pas grave de savoir si c'est signé
ou pas, ou la taille que ça prends, tu veux juste avoir des codes
qui tombent en marche, et n'importe quel tutorial conviendra.

Soit tu veux un code qui fait ce qu'il est sensé faire même
si tu changes de compilateur, d'OS, et il vaut mieux éviter
de faire des hypothèses fausses (ou parfois vraies).

Marc Boyer
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
Avatar
Stephane Legras-Decussy
Le 29/08/2012 14:57, JKB a écrit :


sizeof(char)<= sizeof(short)<= sizeof(int)<= sizeof(long)< > sizeof(long long)





le égal est important, j'ai vu des machines où
tous les sizeof sont egaux.

en embarqué (par exemple), on peut devoir faire des manip 'octet', il
faut juste savoir que ce n'est plus de "vrai" C.
4 5 6 7 8