¿Cuál será la salida del siguiente programa?
#include<stdio.h> int main() { int i = 10; printf("%d", ++(-i)); return 0; }
A) B) C) D)
Respuesta: D, Ninguno – Error de compilación.
Explicación:
En C/C++, los operadores de incremento previo (decremento) y de incremento posterior (decremento) requieren una expresión de valor L como operando. Proporcionar un valor R o una variable calificada const da como resultado un error de compilación.
En el programa anterior, la expresión -i da como resultado el valor R, que es el operando del operador de preincremento. El operador de incremento previo requiere un valor L como operando, por lo tanto, el compilador arroja un error.
Los operadores de incremento/decremento necesitan actualizar el operando después del punto de secuencia , por lo que necesitan un valor L. Los operadores unarios como -, +, no necesitarán el valor L como operando. La expresión -(++i) es válida.
En C++ las reglas son un poco complicadas debido a las referencias. Podemos aplicar estos operadores de incremento (decremento) pre/post en variables de referencia que no están calificadas por const . Las referencias también se pueden devolver desde funciones.
Rompecabezas expresado por Venki . 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