logo

Izhod programov C++ | Komplet 22

Predvidite rezultate naslednjih programov C++. vprašanje 1 CPP
#include    using namespace std; int main() {  int a = b = c = 0;  cout << a << '*' << b << '*' << c;  return 0; } 
Output:
Compile time error! 
Pojasnilo: A chained statement cannot be used to initialize variables at the time of declaration. Hence the statement a = b = c = 0; is an illegal statement. However following way a legal syntax and can be used in C++ or C.
int abc; a = b = c = 0; 

2. vprašanje CPP
#include    using namespace std; int main() {  for ( ; ; ) cout << 'blank';  return 0; } 
Output:
Infinite Loop! 
Pojasnilo: Ker v zanki for manjkajo pogoj inicializacijskega preizkusa in pogoj povečanja/zmanjšanja, bo izvedba ujeta v neskončni zanki.
3. vprašanje CPP
#include    using namespace std; int main() {   int i;  for (i=0; i<3; i++);    cout << 'hello!' <<i;  return 0; } 
Output:
hello!3 
Pojasnilo: Pozdravljeni! 3 je rezultat, ker ko se zanka for izvaja, nima nobene naloge zaradi podpičja (;) v vrstici, kjer je bila definirana zanka for. Zanka se bo izvedla trikrat in vrednost i bo postala 3, nato pa se bodo izvedli preostali stavki.
4. vprašanje CPP
#include    using namespace std; int main() {  int i;  i = 1 + (14563);  cout << i;  return 0; } 
Output:
4 
Pojasnilo: Operator vejica () je binarni operator, ki ovrednoti prvi operand in zavrže rezultat ter nato ovrednoti drugega in nato vrne vrednost drugega. Tukaj je asociativnost operatorja vejica () od leve proti desni in je lahko razumeti, da je izraz (14563) ovrednoten kot 3, nato pa je rezultat 1 + 3 dodeljen i.
5. vprašanje CPP
#include    using namespace std; int main() {  int a = 0 b;  b = (a = 50) + 10;  cout << a << '$' << b;  return 0; } 
Output:
50 
Pojasnilo: Trditev b = (a = 50) + 10; uporablja koncept vgrajene dodelitve. Tu je spremenljivki a dodeljena vrednost 50, rezultat 50+10 pa b. 6. vprašanje CPP
#include   using namespace std; int main() {  char a = 30 b = 40 c = 10;  char d = (a*b)/c;  cout << int(d);  return 0; } 
Output:
120 
Pojasnilo: C++ lahko izvaja tudi aritmetične izračune ob upoštevanju ASCII vrednosti znakov, če se aritmetične operacije izvajajo na spremenljivkah podatkovnega tipa char. V tem primeru je odgovor 120, kar je vrednost ASCII za x.
7. vprašanje CPP
#include   using namespace std; int main(int x) {  static int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
4321 
Pojasnilo: Vsako neničelno število v C++ se obravnava kot prava vrednost. Tu v tej kodi stavek if ponavadi zmanjša vrednost i, vendar se znotraj bloka if funkcija main() kliče vedno znova. Tukaj se zdi, da je program v neskončni zanki, vendar je spremenljivka i statične narave in ima svojo življenjsko dobo do izvedbe, zato se bo program ustavil, če i postane 0.
8. vprašanje CPP
#include   using namespace std; int main(int x) {  int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
infinite loop 
Pojasnilo: Vsako neničelno število v C++ se obravnava kot prava vrednost. Tu v tej kodi stavek if teži k zmanjšanju vrednosti i, toda znotraj bloka if se funkcija main() kliče vedno znova (vsi stavki se bodo zdaj izvajali, kot da gre za nov program), zato bo izvajanje programa ujeto v neskončni zanki, ker ni pogojev za prekinitev. Ustvari kviz