1

Quand je declare une variable dans une fonction, le prog la declare à chaque fois que la fonction est executée
ou seulement la premiere fois?
(sinon ca dois ralentir le prog!)
[edit]Edité par Pegasus le 10-03-2002 à 15:54:59[/edit]
ATARI ruuullllleeeezzzzz!!!!!!

2

je sais po si ça la redéclare à chaque fois (je pense pas) mais c pas ça qui risque de ralentir un prog, t'inquiète psa rotfl
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

3

Si la variable est locale "normale", elle sera allouée sur la pile à chaque fois (sauf si GCC la place dans un registre). Si elle est locale statique, elle sera placée directement dans le programme comme une variable globale.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4


Et que tu ais 1 variable locale ou 1000, il n'y aura absolument aucune différence de vitesse, contrairement à ce qu'on peut lire parfois dans des tutoriels écrits par des gens peu renseignés.
Cette remarque est aussi valable pour les variables locales à l'intérieurs de blocs. Il est faux de croire que cette variable ralentira l'exécution à l'entrée du bloc. Pour illustrer :
if (i >= 16)
{
  int Prout;
  
  Prout= rand(256);
  i*= Prout;
}
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

5

Ca depend. Certains compilos pourrait reaalouer en faisant un link a6,#-FFFE.
Meme si je doute que beaucoup de compilos le fassent.

6

Et qu'en est-il de tigcc?
ATARI ruuullllleeeezzzzz!!!!!!

7

Il ne le fait pas.

8

Ok. G un autre truc qui me preoccuppe : quand je fais ca : void _main(void)
{
clrscr();
unsigned short test=0; //NON SIGNE
test=100;
printf("%dn",test);
test-=200;
printf("%dn",test);
ngetchx();
return;
}

j'obtient à la fin que test=-100, alors que cette variable est cessée etre non signée!!!
=> ??? quand y a un overflow, le prog se fait quand meme chier à le mettre en negatif?
Et comment il le code puique c non signé en principe?
ATARI ruuullllleeeezzzzz!!!!!!

9

tu fais 100-200 => ça donne -100, c'est logique, non ?
le compilo ne sait pas que 100-200 => -100
à l'exécution, ça revient au même... les signed et unsoigned : 2 octets
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

10

Oups, j'ai trouve d'ou ca vient : G fait une erreur de flag dans le printf : il faut %u au lieu de %d embarrassed
>squale92 : je vois mal comment faire tenir une amplitude + grande que 65536 sur 2 octets, justement...

Y a un moyen de détecter le overflow? (je sais qu'en asm, il y a un flag, mais en C...)
ATARI ruuullllleeeezzzzz!!!!!!

11

ben...
La TI utilises le complément à deux pr les entiers négatifs...
=> 127+1 = -128 il me semble
(pour des chars)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

>Pegasus: Y a un moyen de détecter le overflow? (je sais qu'en asm, il y a un flag, mais en C...)

Pas directement.
Mais on peut s'en sortir avec un truc du style:
unsigned short a,b;
/* Saisie de a et de b */
a+=b;
if (a<b) puts("OVERFLOW!\n")

C'est évidemment plus lent qu'un bcs directement après le add en assembleur, mais c'est le mieux qu'on puisse faire en C.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité