Deutsch   English   Français   Italiano  
<tknp1d$6v3$1@shakotay.alphanet.ch>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!feeds.phibee-telecom.net!news.mixmin.net!aioe.org!news.alphanet.ch!alphanet.ch!.POSTED!not-for-mail
From: Marc SCHAEFER <schaefer@alphanet.ch>
Newsgroups: fr.comp.os.linux.configuration,fr.comp.lang.c
Subject: Re: /etc/exports option unsecure
Supersedes: <tknout$6uj$1@shakotay.alphanet.ch>
Followup-To: fr.comp.lang.c
Date: Sat, 12 Nov 2022 09:29:17 -0000 (UTC)
Organization: Posted through news.alphanet.ch
Message-ID: <tknp1d$6v3$1@shakotay.alphanet.ch>
References: <tk5q6i$2g2ek$1@dont-email.me> <6369ff7f$0$31523$426a74cc@news.free.fr> <tkj862$j30b$1@dont-email.me> <tkjco0$r73$1@vmserveur.novazur.fr> <tkjg61$jmrn$1@dont-email.me> <tklst8$6qa$1@vmserveur.novazur.fr> <tklu00$1r51$1@gioia.aioe.org> <tkm05o$hmc$1@vmserveur.novazur.fr> <tkm2g0$tfa0$1@dont-email.me> <tkm3k1$nci$2@shakotay.alphanet.ch> <tkm4vp$tnmp$1@dont-email.me> <tkm5ne$et$1@shakotay.alphanet.ch> <tknod5$6ne$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 12 Nov 2022 09:29:17 -0000 (UTC)
Injection-Info: shakotay.alphanet.ch; posting-account="schaefer";
	logging-data="7139"; mail-complaints-to="usenet@alphanet.ch"; posting-host="634ce6c9682d817d72f6177875e2bb4f.nnrp.alphanet.ch"
User-Agent: tin/2.4.3-20181224 ("Glen Mhor") (UNIX) (Linux/4.19.0-22-amd64 (x86_64))
Cancel-Key: sha256:9sTncnuS5Kjk3i/eIFg0eadY5lPriHV//cYsEWep7iw=
Cancel-Lock: sha256:12o6zbxnk16DY+CDZTB87ar2f5N2kEAQXpIpBsS+HcQ= sha256:s7LqpN5mZ1IoBEsm8erZsAxe2FewC+K3P/6L/j+X0pc=
Bytes: 2928
Lines: 44

[ Followup-To: fr.comp.lang.c ]

Didier <db@invalid.invalid> wrote:
> C'est sans doute pas top, mais au moins c'est différent de la relation 
> de comparaison, au sens mathématique comme au sens commun.

En fait, le plus grand problème de la notation = (affectation) et ==
(comparaison) apparaît dans les langages très expressifs comme C ou
Perl.

Par exemple en C

   if (f = tcp_connect()) {
   }

Cela appelle tcp_connect, affecte la valeur à la variable f, puis teste
si c'est différent de zéro. C'est très souvent utilisé et c'est
légitime.

Mais peut-être que le codeur voulait simplement comparer f au résultat
de tcp_connect() sans affecter? Au moins, gcc fait un warning (avec
-Wall), et suggère la forme:

   if ((f = tcp_connect())) {
   }

pour lui montrer que l'intention était bien d'affecter à f puis de
tester le résultat.

Une bonne pratique si l'on veut éviter une affectation par erreur
(écriture de == remplacée par erreur par =) est la suivante:

   # risque si on oublie un =
   if (c == 42) {
   }

   # pas de risque, 42 pas affectable, l'oubli d'un = fera
   # une erreur, car la partie gauche n'est pas affectable
   if (42 == c) {
   }

-- Et pour les afficionados du langage Newton [1]
TAKE PUSH programme;

[1] https://hopl.info/showlanguage.prx?exp=965&language=Newton