¿Cuál será el resultado de este programa?
#include<iostream> using namespace std; int x; // Global x int main() { int x = 10; // Local x cout << "Value of global x is " << ::x << endl; cout << "Value of local x is " << x; return 0; }
Producción:
Value of global x is 0 Value of local x is 10
En C++, se puede acceder a la variable global (si tenemos una variable local con el mismo nombre) usando el operador de resolución de alcance (::).
¿Cuál será el resultado de este programa?
#include <iostream> using namespace std; int a = 90; int fun(int x, int *y = &a) { *y = x + *y; return x + *y; } int main() { int a = 5, b = 10; a = fun(a); cout << a << " " << b << endl; b = fun(::a,&a); cout << a << " " << b << endl; return 0; }
100 10 195 290
Hay dos variables con nombre ‘a’, una es global y otra es local. Cuando llamamos a = fun(a); , llama a int fun(int x, int *y=&a), aquí el puntero a la variable global (que es a = 90) se asigna a y. Por lo tanto.
*y = x + *y; // se convierte en 5 + 90
return x + *y; // se convierte en 5 + 95
¿Cuál será el resultado de este programa?
#include <iostream> using namespace std; int a = 2; int fun(int *a) { ::a *= *a; cout << ::a << endl; return *a; } int main() { int a = 9; int &x = ::a; ::a += fun(&x); cout << x; }
Producción:
4 8
La variable global está siendo accedida por la función fun cada vez que usa ::a. El valor de la variable local no afecta al valor de a.
¿Cuál será el resultado de este programa?
#include <iostream> using namespace std; int main() { char *A[] = { "abcx", "dbba", "cccc"}; char var = *(A+1) - *A+1; cout << (*A + var); }
Producción:
bba
Aquí la representación de la array es A[0] = “abcx”, A[1] = “dbba”, A[2] = “cccc”. La precedencia de (puntero)* >(binario) +, y el orden de ejecución de ‘*’ es de derecha a izquierda. Si la dirección ‘A’ es ‘x’, entonces la dirección de ‘*(A+1)’ es ‘x+6’ y la dirección de ‘*A+1’ es ‘x+1’. Entonces, valor entero de var = 6 (número total de caracteres entre dos puntos (x+6)-(x+1)+1). Durante la impresión, el operador ‘+’ está sobrecargado, ahora el puntero apunta a ‘x+7’. Por esta razón la salida del programa.
¿Cuál será el resultado de este programa?
#include <iostream> using namespace std; int main() { char a = 'a', b = 'x'; char c = (b ^ a >> 1 * 2) +(b && a >> 1 * 2 ); cout << " c = " << c; }
Producción:
c = 97
Valor entero de a = 97 (01100001), valor entero de b = 120 (01111000), precedencia de ‘*’ > ‘>>’ > ‘^’ > ‘&&’.
Entonces la expresión es ‘ ((b ^ (a >> (1 * 2))) – (b && (a >> (1 * 2 ))))’. Valor entero de la expresión
a >> 1 * 2 = 24 b ^ a >> 1 * 2 = 96 b && a >> 1 * 2 = 1 que es 97.
¿Cuál será el resultado de este programa?
#include <iostream> using namespace std; int main() { int i = 5, j = 3; switch(j) { case 1: if (i < 10) cout << "\ncase 1"; else if (i > 10) case 2: cout << "case 2"; else if (i==10) case 3: default: cout << "case 3"; cout << "hello"; } }
Producción:
case 3hello
Como j=3 satisface la condición, va en el caso 3. No hay nada en el caso 3, tampoco hay interrupción. Entonces se ejecuta por defecto. Consulte la declaración de cambio en C para obtener más detalles.
Este artículo es una contribución de Punit, Smriti Satyanarayana, Akash Tiwari, Sagar Tripathy . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA