2 votes

Opérateur de résolution du champ d'application si trois variables existent

Je viens de commencer à apprendre le c++. Je suis tombé sur l'opérateur de résolution scope et j'ai essayé un programme comme celui-ci

#include <iostream>
using namespace std;

int i = 40;
int main(){
    int i = 20;
    {  
        int i = 10;
        cout<< ::i;  // prints 40
        cout<<i;    // prints 10
        cout << i;  // how do i print variable i whose value is 20 
    }
}

Mais si je veux accéder à la variable i ( i=20) à l'intérieur du bloc interne de main() . Comment puis-je le faire ? Est-ce possible ? C'est peut-être stupide, mais je ne connais pas toutes les fonctions intégrées de C++. Je voulais donc savoir s'il y avait un moyen de le faire. Merci

1voto

Sumit Gera Points 1199

Je pense que cela peut être fait en utilisant namespaces .

#include <iostream>
using namespace std;
namespace inner{int i;}
int i = 40;
int main() {
    inner::i = 20;
    {
        int i = 10;
        cout<< ::i;  // prints 40
        cout<<i;    // prints 10
        cout << inner::i; // this prints 20
    }
}

J'espère que cela pourra être utilisé pour plusieurs i dans un code.

EDIT La réponse modifie le programme sémantiquement, car elle fait des modifications internes. i une variable globale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X