Article View: fr.comp.lang.c
Article #15271Re: rot13 [Was : Re: conjugaison et autres ...]
From: Antoine Leca
Date: Tue, 04 Oct 2005 09:49
Date: Tue, 04 Oct 2005 09:49
95 lines
5929 bytes
5929 bytes
En <news:43411501$0$27446$8fcfb975@news.wanadoo.fr>, Harpo va escriure: > D'abord, qui c'est �ui l� encore le 'basic execution character set' ? Les caract�res juste suffisant pour programmer en C. En gros, � l'alphabet � ASCII, dont on exclut '$' '@' et '`' des caract�res graphiques, et dont on garde seulement '\0' (qui ne veut plus dire NUL), '\a' (BEL), '\t' (HT), '\f' (FF), '\v' (VT) et '\r' (CR) dans les caract�res de contr�le, et auquel on ajoute enfin '\n'. > Je croyais na�vement qu'un char �tait un integer comme un autre, un > peu petit pour son �ge, c'est tout. 129 ( 0x81 ) a le 'bit de gauche' > � 1, je pensais qu'il �tait n�gatif. En 16 bits, (unsigned)32769 aussi a le 'bit de gauche' � 1, il n'est pas n�gatif pour autant. La subtilit�, c'est que char peut �tre soit sign�, soit non sign�, suivant l'architecture sous-jacente. Sur le PDP-11 (qui avait pas mal d'instructions pour manipuler des entiers 8 bits sign�s), c'est signed. Sur la grande majorit� des autres machines de l'�poque), c'est unsigned, soit pour assurer la compatibilit� EBCDIC, soit parce qu c'est plus r�gulier au niveau du jeu d'instructions. Ensuite, sur le Vax c'est rest� signed, et de l� cela c'est propag� jusque dans la norme. Les compilateurs pour des architectures CISC (qui sont assez insensibles aux d�tails du jeu d'instructions) ont en g�n�ral une option permettant de choisir si char est sign� ou pas. > Pour m'�claircir les id�es, j'ai fait ce petit programme en C. > Le r�sultat a �t� conforme � mes attentes : > 129 = -127 C> a 129 = 129 C> gcc -v Reading specs from bin/../lib/gcc/mingw32/3.4.2/specs [...] Thread model: win32 gcc version 3.4.2 (mingw-special) Et je n'ai pas compil� crois� pour l'AS/400, ni m�me avec une version sp�ciale de libc. Seulement C> gcc --unsigned-char -W -Wall uchar.c > Maintenant, veux-tu dire que si j'avais compil� sur un bon vieil IBM > pour qui ASCII est un mot de 5 lettres, j'aurais obtenu ce r�sultat > aberrant : > 129 = 129 > ? > Parce que son 'basic execution character set' serait diff�rent ? D�pend de quel c�t� tu te places. Du point de vue du C, non, il n'est pas diff�rent, il se constitue aussi de '\0', '\n', '!', 'a' etc. �videmment, 'a' vaut 0x61 sur une machine et 0x81 sur l'autre. Mais si tu r�fl�chis un peu, ce n'est pas beaucoup plus diff�rent que la situation de '�', qui vaut 0xA4 ici, 0x20AC l�, 0x80 l� bas ou 0xD5 chez IBM. Enfin, chez IBM on trouve aussi 0x9F, et aussi 0X5A chez les Scandinaves. > Qui a pondu cette norme qui m'�nerve les nerfs ? C'est une atteinte > d�lib�r�e � la portabilit� ! C'est une atteinte � TA vision de la portabilit� (qui doit ressembler � � cela marche chez moi et cela doit marcher partout �). Comme la libert� des uns s'arr�tent o� commencent celles des autres, la r�alit� est un _peu_ plus complexe. > Sans vouloir refaire le C ni m�me le reste du monde, je pense que tout > aurait �t� plus simple si tout avait �t� unsigned par d�faut. Non. Le prix � payer �tait trop important sur un PDP-11 (l'anc�tre duquel tout d�pend). Et c'est comme dans les histoires de machines � remonter le temps : si tu changes l'anc�tre, il n'y a plus de langage C. Du tout. En fait, c'est parce que Dennis Ritchie devait tergiverser avec les contraintes d'extensions de signe du PDP-11, et que par ailleurs sur EBCDIC (l'autre machine sur laquelle il d�veloppait) les char �tait n�cessairement non sign�s, que le C a pu � facilement � accomoder n'importe lequel des encodages qui sont venus par la suite (et simultan�ment), y compris les encodages multibytes (il n'y a gu�re que Unicode avec l'utilisation des octets � 0 qui pose r�ellement probl�me). > uchar est-il dans la norme ? Non, c'est un identificateur r�serv� au programmeur, et c'est tellement utilis� que ce n'est pas pr�t de changer ;-) Antoine
Technical Details
Message-ID:
<dhtj72$9kd$1@shakotay.alphanet.ch>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news2.volia.net!zen.net.uk!dedekind.zen.co.uk!news.imp.ch!news.imp.ch!80.83.46.147.MISMATCH!news.alphanet.ch!alphanet.ch!not-for-mailReferences:
<1126342327.583568.21420@g43g2000cwa.googlegroups.com> <4329e5d4$0$7846$8fcfb975@news.wanadoo.fr> <dge4b6$fqa$1@reader1.imaginet.fr> <432ab809$0$1734$8fcfb975@news.wanadoo.fr> <mn.84b07d59016a857b.31483@laposte.net> <433f16ac$0$27406$8fcfb975@news.wanadoo.fr> <mn.10907d5a55119e84.15512@YOURBRAnoos.fr> <433f9cb1$0$7821$8fcfb975@news.wanadoo.fr> <mn.128c7d5aa5238de0.15512@YOURBRAnoos.fr> <43403203$0$5388$8fcfb975@news.wanadoo.fr> <43403d27$0$306$7a628cd7@news.club-internet.fr> <dhq3bs$dbc$1@reader1.imaginet.fr> <4340d2c9$0$27410$8fcfb975@news.wanadoo.fr> <4340ec30$0$303$7a628cd7@news.club-internet.fr> <43411501$0$27446$8fcfb975@news.wanadoo.fr>Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,b21b26167a936e28 X-Google-Attributes: gidf9822,public X-Google-Language: FRENCH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news2.volia.net!zen.net.uk!dedekind.zen.co.uk!news.imp.ch!news.imp.ch!80.83.46.147.MISMATCH!news.alphanet.ch!alphanet.ch!not-for-mail From: "Antoine Leca" <root@localhost.invalid> Newsgroups: fr.comp.lang.c Subject: Re: rot13 [Was : Re: conjugaison et autres ...] Date: Tue, 4 Oct 2005 11:49:18 +0200 Organization: Posted through ALPHANET (http://www.alphanet.ch/) Lines: 96 Sender: antoinel@143.red-217-127-250.staticip.rima-tde.net Message-ID: <dhtj72$9kd$1@shakotay.alphanet.ch> References: <1126342327.583568.21420@g43g2000cwa.googlegroups.com> <4329e5d4$0$7846$8fcfb975@news.wanadoo.fr> <dge4b6$fqa$1@reader1.imaginet.fr> <432ab809$0$1734$8fcfb975@news.wanadoo.fr> <mn.84b07d59016a857b.31483@laposte.net> <433f16ac$0$27406$8fcfb975@news.wanadoo.fr> <mn.10907d5a55119e84.15512@YOURBRAnoos.fr> <433f9cb1$0$7821$8fcfb975@news.wanadoo.fr> <mn.128c7d5aa5238de0.15512@YOURBRAnoos.fr> <43403203$0$5388$8fcfb975@news.wanadoo.fr> <43403d27$0$306$7a628cd7@news.club-internet.fr> <dhq3bs$dbc$1@reader1.imaginet.fr> <4340d2c9$0$27410$8fcfb975@news.wanadoo.fr> <4340ec30$0$303$7a628cd7@news.club-internet.fr> <43411501$0$27446$8fcfb975@news.wanadoo.fr> NNTP-Posting-Host: 143.red-217-127-250.staticip.rima-tde.net Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 8bit X-Trace: shakotay.alphanet.ch 1128419367 9869 217.127.250.143 (4 Oct 2005 09:49:27 GMT) X-Complaints-To: usenet@alphanet.ch NNTP-Posting-Date: Tue, 4 Oct 2005 09:49:27 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1506 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506