Considere el siguiente programa.
C++
// C++ implementation #include <bits/stdc++.h> using namespace std; int x = 0; int f1() { x = 5; return x; } int f2() { x = 10; return x; } int main() { int p = f1() + f2(); cout << ("%d ", x); getchar(); return 0; }
C
#include <stdio.h> int x = 0; int f1() { x = 5; return x; } int f2() { x = 10; return x; } int main() { int p = f1() + f2(); printf("%d ", x); getchar(); return 0; }
Java
class GFG { static int x = 0; static int f1() { x = 5; return x; } static int f2() { x = 10; return x; } public static void main(String[] args) { int p = f1() + f2(); System.out.printf("%d ", x); } } // This code is contributed by Rajput-Ji
Python3
# Python3 implementation of the above approach class A(): x = 0; def f1(): A.x = 5; return A.x; def f2(): A.x = 10; return A.x; # Driver Code p = A.f1() + A.f2(); print(A.x); # This code is contributed by mits
C#
// C# implementation of the above approach using System; class GFG { static int x = 0; static int f1() { x = 5; return x; } static int f2() { x = 10; return x; } // Driver code public static void Main(String[] args) { int p = f1() + f2(); Console.WriteLine("{0} ", x); } } // This code has been contributed // by 29AjayKumar
PHP
<?php // PHP implementation of the above approach $x = 0; function f1() { global $x; $x = 5; return $x; } function f2() { global $x; $x = 10; return $x; } // Driver Code $p = f1() + f2(); print($x); // This code is contributed by mits ?>
Javascript
<script> x = 0; function f1() { x = 5; return x; } function f2() { x = 10; return x; } var p = f1() + f2(); document.write(x); // This code is contributed by Amit Katiyar </script>
Producción:
10
¿Cuál sería la salida del programa anterior: ‘5’ o ’10’?
La salida no está definida ya que el orden de evaluación de f1() + f2() no es obligatorio por estándar. El compilador es libre de llamar primero a f1() o f2(). Solo cuando aparecen operadores de precedencia de igual nivel en una expresión, la asociatividad entra en escena. Por ejemplo, f1() + f2() + f3() se considerará como (f1() + f2()) + f3(). Pero entre el primer par, qué función (el operando) evaluada primero no está definida por el estándar.
Gracias a Venki por sugerir la solución.
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