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

t[i++]++

31 réponses
Avatar
candide
Bonjour


Juste une petite confirmation : si i est un entier et t est par exemple
un tableau d'entiers ou de flottants, une instruction du style

t[i++]++;


n'est pas indéterminée, n'est-ce pas ? Par exemple si i vaut
initialement 42, l'instruction ci-dessus incrémente d'une unité la
valeur de t[42] tout en passant à la case suivante du tableau t ie la
case 43. Je pose aussi la question car j'ai rarement lu ce genre
d'instruction dans du "vrai" code, peut-être n'est-ce pas considéré
comme très lisible, voire considéré comme source de trouble ou alors,
peut-être n'ai-je pas une fréquentation assez assidue du code "réel" ;)

Merci.

10 réponses

1 2 3 4
Avatar
Xavier Roche
candide a écrit :
Juste une petite confirmation : si i est un entier et t est par exemple
un tableau d'entiers ou de flottants, une instruction du style
t[i++]++;



Il n'y a aucune ambiguité, en effet.

d'instruction dans du "vrai" code, peut-être n'est-ce pas considéré
comme très lisible, voire considéré comme source de trouble ou alors,
peut-être n'ai-je pas une fréquentation assez assidue du code "réel" ;)



Cela ne me semble pas excessivement opaque comme code, même si un petit
commentaire peut être le bienvenu.
Avatar
-ed-
On 10 oct, 23:02, candide wrote:
Bonjour

Juste une petite confirmation :  si i est un entier et t est par exempl e
un tableau d'entiers ou de flottants, une instruction du style

t[i++]++;

n'est pas indéterminée, n'est-ce pas ?



Correct, mais pas très lisible. OK pour les C-geek...
Avatar
Wykaaa
candide a écrit :
Bonjour


Juste une petite confirmation : si i est un entier et t est par exemple
un tableau d'entiers ou de flottants, une instruction du style

t[i++]++;


n'est pas indéterminée, n'est-ce pas ? Par exemple si i vaut
initialement 42, l'instruction ci-dessus incrémente d'une unité la
valeur de t[42] tout en passant à la case suivante du tableau t ie la
case 43. Je pose aussi la question car j'ai rarement lu ce genre
d'instruction dans du "vrai" code, peut-être n'est-ce pas considéré
comme très lisible, voire considéré comme source de trouble ou alors,
peut-être n'ai-je pas une fréquentation assez assidue du code "réel" ;)

Merci.



Typiquement du code qui ne devrait être autorisé par aucun langage et
source de confusion.
Mais ce n'est rien à côté des horreurs qui peuvent être écrites (il faut
le faire exprès quand même !):
t[--i] += t[i++]
Avatar
espie
In article <4ad18dbe$0$993$,
Wykaaa wrote:
Typiquement du code qui ne devrait être autorisé par aucun langage et
source de confusion.



Tu exageres, c'est quand meme tres lisible quand on connait C...
Avatar
candide
Wykaaa a écrit :


t[--i] += t[i++]



Hum, ça sent quand même méchamment le comportement indéterminé ton truc,
ce qui n'était pas le cas de mon "vilain" t[i++]++.
Avatar
Wykaaa
candide a écrit :
Wykaaa a écrit :


t[--i] += t[i++]



Hum, ça sent quand même méchamment le comportement indéterminé ton truc,
ce qui n'était pas le cas de mon "vilain" t[i++]++.



Ben oui, c'est pour montrer les horreurs qu'on peut écrire en C...
Avatar
Wykaaa
Marc Espie a écrit :
In article <4ad18dbe$0$993$,
Wykaaa wrote:
Typiquement du code qui ne devrait être autorisé par aucun langage et
source de confusion.



Tu exageres, c'est quand meme tres lisible quand on connait C...



Lisible certes, mais sémantiquement parlant ?
Avatar
candide
Wykaaa a écrit :

t[--i] += t[i++]



Hum, ça sent quand même méchamment le comportement indéterminé ton truc,
ce qui n'était pas le cas de mon "vilain" t[i++]++.



Ben oui, c'est pour montrer les horreurs qu'on peut écrire en C...




"horreur" n'est pas dans la Norme ;)

Bon de toutes façons, je n'arrive pas à voir quelle est l'_intention_ du
code que tu as rapporté (je suppose que tu as lu ce genre de code
quelque part donc il correspondait à une certaine intention déterministe
chez celui qui l'a écrit).
Avatar
espie
In article <4ad1bc1a$0$964$,
Wykaaa wrote:
Marc Espie a écrit :
In article <4ad18dbe$0$993$,
Wykaaa wrote:
Typiquement du code qui ne devrait être autorisé par aucun langage et
source de confusion.



Tu exageres, c'est quand meme tres lisible quand on connait C...



Lisible certes, mais sémantiquement parlant ?



Oui. C'est juste une expression un peu longue. La comme ca, je ne vois
pas d'algo ou ca pourrait servir, mais ca ne me semble pas tres tordu.
C'est pas pire que d'ecrire une longue expression arithmetique sans la
decouper en sous-morceaux.
Avatar
Wykaaa
Marc Espie a écrit :
In article <4ad1bc1a$0$964$,
Wykaaa wrote:
Marc Espie a écrit :
In article <4ad18dbe$0$993$,
Wykaaa wrote:
Typiquement du code qui ne devrait être autorisé par aucun langage et
source de confusion.


Tu exageres, c'est quand meme tres lisible quand on connait C...


Lisible certes, mais sémantiquement parlant ?



Oui. C'est juste une expression un peu longue. La comme ca, je ne vois
pas d'algo ou ca pourrait servir, mais ca ne me semble pas tres tordu.
C'est pas pire que d'ecrire une longue expression arithmetique sans la
decouper en sous-morceaux.



La longueur d'une expression, c'est sa forme, sa syntaxe. Je te parlais
de sémantique :-(
1 2 3 4