Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α14.7 · Στατική μεταβλητή με ανάθεση εκτός δήλωσης

Διάλεξη 14, διαφάνεια 19 · Δυσκολία ★★☆ · trace · Κεφάλαια: 14

Τι θα τυπώσει το πρόγραμμα, όπου η counter είναι στατική αλλά παίρνει την τιμή 0 με ξεχωριστή εντολή;

#include <stdio.h>
void foo() {
  static int counter; int i = 0; counter = 0;
  counter++; i++;
  printf("%d %d\n", counter, i);
}
int main() {
  foo(); foo(); foo();
  return 0;
}

Υπόδειξη

Συγκρίνετε με την εκδοχή όπου το = 0 είναι μέρος της δήλωσης static int counter = 0;. Μια αρχικοποίηση στη δήλωση μιας στατικής μεταβλητής γίνεται μία φορά· μια εντολή ανάθεσης όμως εκτελείται κάθε φορά που τη φτάνει η ροή.

Αριθμός στον οδηγό: Α14.7 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec14-static-assign · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec14-static-assign.html · Markdown (GitHub)