🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #713

Re: fscanff i sekwencja formatujaca

#713
From: Michal Kaczmarczyk
Date: Mon, 26 Jan 1998 03:55
59 lines
3615 bytes
On Sat, 24 Jan 1998, Marek Kotowski wrote:

> Michal Kaczmarczyk wrote:
> > 
> > To raczej w tym momencie standard jest mało spójny, bo czasami "&" cos
> > oznacza (wzięcie adresu) a czasem nic (jak w cytowanym przypadku)...
> 
>   Najpierw Ritchie wymyslil C, a 16 lat potem wprowadzono
> standard.
>   Oczywiscie, jest to pewna niekonsekwencja. Ale moze Pan
> znalezc takich niekonsekwencji w C wiecej. Zaleznie od
> kontekstu * znaczy branie zawartosci adresu lub mnozenie
> dwoch argumentow. Przecinek w jednym kontekscie jest punktem
> sekwencji, w innym nie. while jest raz samodzielna petla,
> a kiedy indziej koncem petli do-while. Operator &, o ktorym
> tyle bylo mowy, raz oznacza branie adresu, a kiedy indziej
> jest operatorem bitowym.  

...a kiedy indziej oznacza "no operation"... :-) 

Nie przekonuje mnie to. We wszystkich innych sytuacjach sprawa się
rozstrzyga po uwzględnieniu lokalnego kontekstu. A żeby sprawdzić czy
jednoargumentowy "&" ma zadziałać czy nie, to trzeba sprawdzić typ
argumentu stojącego po nim. A typ ten może być zdefiniowany kilka tysięcy
linii wczesniej, albo np. w pliku nagłówkowym... Poza tym konstrukcja ta
może prowadzić do nieporozumień (patrz przykład na końcu postu).

>   Moze Pan to wszystko wyciagnac przeciwko C. Rzecz w tym, 
> ze takie bylo zalozenie. Ritchie chcial uzyskac jezyk maly
> i zwarty i szereg spraw uzaleznil od kontekstu.

1. Udało mu się uzyskać język mały i zwarty co do kodu zródłowego, a nie
kompilatora. Ale i tak bije go na głowę kod maszynowy (pod obydwoma
względami)...

2. <P COMMENT="fikcja próbująca wyjaśnić zaistniałą sytuację">
 Richtie tego myku z "&" nie wymyslił. Pojawiło się to z początku w
niektórych implementacjach C, które były zrobione przez gości niezbyt
rozumiejących intencję autora. A potem przyszedł Standard (Panowie! czapki
z głów!), który stwierdził: "...ponieważ w wielu implementacjach języka C
taka konstrukcja jest dopuszczona, więc - żeby zachować z nimi zgodnosć
(jakże szczytny cel!) - damy taką możliwosć w standardzie..." </P>

3. Kiepskie założenie (co do "&"). Oto do czego ono prowadzi: 

#include<stdlib.h>
#include<stdio.h>
main(){	
 char *a = (char *)malloc(100);
 int b;
 scanf("%d %10s", &b, &a);
 printf("%d %s\n", &b, &a);
}

Jeśli ktoś dalej nie wie na czym ów myk polega radzę ten program
skompilować, uruchomić i sprawdzić, czy działa zgodnie z "założeniami". 

_______________________________________________________________________________
Michał Kaczmarczyk  mailto:mik@iname.com http://student.uci.agh.edu.pl/~kaczmar
Technical Details
Message-ID: <Pine.LNX.3.96.980126045053.11038A-100000@fox>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!cyfronet!fox.ds14.agh.edu.pl!fox!mik
References: <Pine.LNX.3.96.980120181552.552J-100000@qrnik.knm.org.pl> <6a5fji$rc9$1@sunsite.icm.edu.pl> <34C714AC.3E9F@imm.org.pl> <Pine.LNX.3.96.980122183925.525E-100000@qrnik.knm.org.pl> <34C88B74.7CA5@imm.org.pl> <Pine.LNX.3.96.980124134625.10675B-100000@fox> <34CA02E5.5963@imm.org.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!cyfronet!fox.ds14.agh.edu.pl!fox!mik
From: Michal Kaczmarczyk <mik@iname.com>
Newsgroups: pl.comp.lang.c
Subject: Re: fscanff i sekwencja formatujaca
Date: Mon, 26 Jan 1998 04:55:40 +0100
Organization: DS14 Kapitol, AGH, Kraków.
Lines: 62
Message-ID: <Pine.LNX.3.96.980126045053.11038A-100000@fox>
References: <Pine.LNX.3.96.980120181552.552J-100000@qrnik.knm.org.pl> <6a5fji$rc9$1@sunsite.icm.edu.pl> <34C714AC.3E9F@imm.org.pl> <Pine.LNX.3.96.980122183925.525E-100000@qrnik.knm.org.pl> <34C88B74.7CA5@imm.org.pl> <Pine.LNX.3.96.980124134625.10675B-100000@fox> <34CA02E5.5963@imm.org.pl>
Reply-To: Michal Kaczmarczyk <mik@iname.com>
NNTP-Posting-Host: fox.ds14.agh.edu.pl
Mime-Version: 1.0
X-Sender: mik@fox
In-Reply-To: <34CA02E5.5963@imm.org.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit