CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Questions (langage C)

kufa
kufa
Niveau 9
21 décembre 2004 à 12:21:34

dnoob: d apres la norme, ce code la est valide:
for( int i = 0; i < 2; ++i ) ;
for( int i = 0; i < 3; ++i ) ;

Mais les anciennes versions de visual declaraient le 1er i en dehors de la boucle, et du coup ralait pour une redefinition sur la deuxieme ligne.

Pour tester du code: http://www.comeaucomputing.com/tryitout/

Ce code:
int main()
{

for( int i = 0; i < 2; ++i ) ;
for( int i = 0; i < 3; ++i ) ;
for( int j = 0; j < 2; ++j ) ;
for( j = 0; j < 3; ++j ) ;

return 0;
}

donne par exemple en sortie:
MODE:strict errors C++

" ComeauTest.c", line 8: error: identifier " j" is undefined
for( j = 0; j < 3; ++j ) ;

Qu il est bon ce compilo.
Mais bon ca se retrouve tout de meme dans la norme.

dnob700
dnob700
Niveau 10
21 décembre 2004 à 12:48:55

pourtant, j´vais lu ( maintenant ça me revient) que la variable déclaré dans l´initialisation doit le rester après la boucle, et c´est logique, vu que cdelle ci n´est pas dans la boucle mais à l´extérieur, donc il n´y a pas de raison que ça porté soit dimnué.

enfin bon, pour ce que ça change...

kufa
kufa
Niveau 9
21 décembre 2004 à 14:28:00

Non ce n´est pas le cas: lorsque tu fais for( int i = 0; i<3;++i) i n´est defini que pour l´interieur de la boucle.
De la doc ansi C ( paragraphe 6.8.5.3.1)

for ( clause-1; expression-2; expression-3)statement
( ...)
If clause-1 is a declaration, the scope of any variables it declares is the remainder of the declaration and the entire loop, including the other two expressions.

" et c´est logique, vu que cdelle ci n´est pas dans la boucle mais à l´extérieur"
Non, si tu voulais le faire a l exterieur, tu ferai int i = 0; for( ; i<3;++i);
Les 3 arguments du for sont en dehors du " corps" de la boucle, pas seulement le 1er. Mais les 3 font partie du for.

LGV
LGV
Niveau 28
21 décembre 2004 à 20:40:28

tiens, ça me rappelle ce *** de compilo PS2 qui rale des que je fais un truc un peu marrant :/ ( quoi mes placement new ? quoi mes spécialisation de templates avec NULL en parametre ? quoi mes... etc. ) pfff :/

kufa
kufa
Niveau 9
21 décembre 2004 à 21:53:44

lgv: hahaha bienvenu au club :)
Le plus amusant c´est que lorsque tu redefini des new avec plusieurs params ( mais pas un placement new), certains compilos *veulent* que tu cree des delete avec ces meme parametres. muf.

Et puis les specialisation de template avec NULL tu m´excuses, a quoi bon ; )

LGV
LGV
Niveau 28
21 décembre 2004 à 23:33:43

" les specialisation de template avec NULL tu m´excuses, a quoi bon"

ben c´était pour faire propre :/ j´allais pas foutre mes static en globaux quand meme ( oui parce qu´en fait j´identifie mes spécialisations de templates via des données statiques définies dans le template lui meme ; bref)... Ben si au final pffff

pour les ::operator delete, je confirme, tres chiant sous VC ; j´ai pas testé avec IC, mais " mismatching delete operator" on s´en passerait

kufa
kufa
Niveau 9
22 décembre 2004 à 00:35:18

lgv: mwaif, pour moi de toute facon static=maaal
; )
hehe non je plaisante, jusque que moi j y ai normalement ( !) pas le droit ; )

Par contre, je voix bien ce que tu fais en ayant des statics dans le template lui meme, mais alors je rate un truc. Qu´appelle tu specialisation de template avec null ?
template<> int MaClasse<int>::mon_static = 2004;
?

LGV
LGV
Niveau 28
22 décembre 2004 à 03:13:35

pas tout à fait, là tu spécialises un < class> sur un < int>.

- Alors que moi j´ai un
template<const Object *> templ;

- qui contient des
static const Object s_biduleX;

- que je spécialise en
template<&<NULL>::s_bidule1> >
template<&<NULL>::s_bidule2> >
etc.

autrement dit mes statics ne sont définis qu´une fois, pour la spécialisation NULL ( faut bien les mettre qq part...) ; ça revient EXACTEMENT au meme de faire des const globaux extern, mais avec cette forme j´encapsule et j´évite les trucs qui trainent de partout.

Enfin bon, VC++ aime bien... pas l´autre compilo console :/

LGV
LGV
Niveau 28
22 décembre 2004 à 03:16:10

( avant que tu fasses la remarque, non cette forme ne passe pas telle quelle, j´utilise bien evidemment " template<> templ<machin>" pour mes spécialisations ; mon écriture dans le post précedent est à michemin entre le code et le pseudo-code, donc ça peut preter à confusion.. Je préfere préciser avec ce petit rajout)

JeanYvesYves
JeanYvesYves
Niveau 10
23 décembre 2004 à 13:06:39

:rire:
ça part sur un probleme de structure simple, ça passe par un " débat Windows/Linux" et ça finit par des template avec du static :rire:

kufa
kufa
Niveau 9
24 décembre 2004 à 02:52:14

lgv: oh ok comme ca, pqs mal, seul de defaut c est que c est un peur lourd a l ecriture, moi je suis plus namespace.

jyy: hehe des que lgv ou moi on voit des c/c++ dans les titres de posts, c fini :)

lgv: dsle pour le lag, vacances...Raaah je hais les claviers allemands..

LGV
LGV
Niveau 28
24 décembre 2004 à 17:30:05

kUfa : vi, namespace c´est impec, mais si tout le code est construit avec :/ Avoir un pauvre namespace qui se ballade tout seul, pas top.

niveau lag, pareil, vacances, dans la campagne française....... Vive le 56k et le claviers FR ( je m´y etais bien fait aux claviers UK)

gollumkawder
gollumkawder
Niveau 10
24 décembre 2004 à 19:14:53

1/ voles un clavier UK
2/ voles un satellite

( bon ok..)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment