Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. global int i = 100, j = 5;
  2. void P(x) {
  3. int i = 10;
  4. print(x + 10);
  5. i = 200;
  6. j = 20;
  7. print (x);
  8. }
  9. main() {P(i + j);}
  10.  
  11. first call: print(x+10) -> (i1 + j + 10) -> (100 + 5 + 10) -> 115
  12. second call: print(x) -> print(i1 + j) -> 105 (Already evaluated - call by need)
  13.  
  14. print (i1 + j + 10) -> print (100 + 5 +10 ) -> 115
  15.  
  16. print(x) -> print(i1 + j) -> (100 + 20) = 120 // Evaluate again - Call be name.
  17.  
  18. global int i = 100, j = 5;
  19.  
  20. void IncreaseTheGlobal() {
  21. i = i + 1; // static scoping means this is the GLOBAL i!
  22. print(i);
  23. }
  24.  
  25. void P(x) {
  26. int i = 10;
  27. IncreaseTheGlobal(); // 101 (increased global i)
  28. print(i); // 10 (local i)
  29. print(x); // 106 (x is evaluated; picks up increased global i)
  30. IncreaseTheGlobal(); // 102 (2nd time increased global i)
  31. print(x); // 106 (x not re-evaluated; unaffected by 2nd increase)
  32. }
  33.  
  34. main() {
  35. print(i); // 100 (original global i)
  36. P(i + j);
  37. print(i); // 102 (new global i)
  38. }
  39.  
  40. #include <stdio.h>
  41.  
  42. int i = 100, j = 5;
  43.  
  44. #define print(num) printf("%dn", num)
  45.  
  46. #define P(x) {
  47. int i = 10;
  48. print(x + 10);
  49. i = 200;
  50. j = 20;
  51. print(x);
  52. }
  53.  
  54. main() {
  55. P(i + j);
  56. }
  57.  
  58. int i = 10;
  59. print(i + j + 10); // 10 + 5 + 10 = 25
  60. i = 200;
  61. j = 20;
  62. print(i + j); // 200 + 20 = 220
  63.  
  64. #define print(num) { int i = 0; printf("%dn", num); }
  65.  
  66. int i = 10;
  67. print(x + 10); // print (i + j + 10); prints 10 + 5 + 10 = 25; local i gets used here
  68.  
  69. i = 200;
  70. j = 20;
  71.  
  72. print (x); // print (i + j); call by need ensures, no reevaluation and i + j is 15.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement