sam, 10/03/2012 - 22:10 — Ekleog
> Mais 262144 quoi ? Octets, bits, éléments ?
D'après toi ?
Tu as cité :
- octet : non défini par le standard, impossible.
- éléments : heuuu… éléments ? Sous-objet tu veux dire ?
- bits : ça aurait pu, mais ça aurait été stupide (c.f. contraintes d'alignements)
La réponse : 262144 bytes. Un byte n'étant pas forcément un octet, si vous voulez écrire un compilateur C++ qui
considère un byte comme 42 bits, c'est standard, il faudra alors que les types char, signed char et unsigned char aient
une taille de 42 bits (1 byte).
sam, 10/03/2012 - 22:10 — Ekleog
> (c.à.d. int tab[262144] valide ?)
Il est impossible de répondre à cette question, c'est implementation defined. En effet il est possible que
sizeof(int)==sizeof(char), dans quel cas, si le compilateur suis les conseils du standard, oui, ce sera valide. Par
contre si sizeof(int)==42424242 * sizeof(char), il y a peu de chance que ça fonctionne en pratique. Par ailleurs, c'est
juste conseillé par le standard (ça ne change pas la conformité du compilateur).