C++ programų išvestis | 22 rinkinys

Numatykite šių C++ programų išvestį. 1 klausimas CPP
   #include          using     namespace     std  ;   int     main  ()   {      int     a     =     b     =     c     =     0  ;      cout      < <     a      < <     '*'      < <     b      < <     '*'      < <     c  ;      return     0  ;   }   
Output:
Compile time error!  
Paaiškinimas: 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 klausimas CPP
   #include          using     namespace     std  ;   int     main  ()   {      for     (     ;     ;     )     cout      < <     'blank'  ;      return     0  ;   }   
Output:
Infinite Loop!  
Paaiškinimas: Kadangi ciklo viduje nėra inicijavimo bandymo sąlygos ir padidinimo / mažinimo sąlygos, vykdymas bus įtrauktas į begalinę kilpą.
3 klausimas CPP
   #include          using     namespace     std  ;   int     main  ()   {         int     i  ;      for     (  i  =  0  ;     i   <  3  ;     i  ++  );          cout      < <     'hello!'      < <  i  ;      return     0  ;   }   
Output:
hello!3  
Paaiškinimas: Hello!3 yra rezultatas, nes kai ciklas vykdomas, jis neturi atlikti jokios užduoties dėl kabliataškio (;), esančio eilutėje, kurioje buvo apibrėžta for ciklas. Ciklas bus vykdomas tris kartus, o i reikšmė taps 3, tada bus vykdomas likęs (-iai) teiginys (-ai).
4 klausimas CPP
   #include          using     namespace     std  ;   int     main  ()   {      int     i  ;      i     =     1     +     (  1    4    5    6    3  );      cout      < <     i  ;      return     0  ;   }   
Output:
4  
Paaiškinimas: Kablelių () operatorius yra dvejetainis operatorius, kuris įvertina pirmąjį operandą ir atmeta rezultatą, tada įvertina antrąjį ir grąžina antrojo reikšmę. Čia kablelio () operatoriaus asociatyvumas yra iš kairės į dešinę ir lengvai suprantamas, kad išraiška (14563) įvertinama kaip 3, o tada rezultatas 1 + 3 priskiriamas i.
5 klausimas CPP
   #include          using     namespace     std  ;   int     main  ()   {      int     a     =     0       b  ;      b     =     (  a     =     50  )     +     10  ;      cout      < <     a      < <     '$'      < <     b  ;      return     0  ;   }   
Output:
50  
Paaiškinimas: Teiginys b = (a = 50) + 10; vartoja įterptosios priskyrimo sąvoką. Čia kintamajam a priskiriama reikšmė 50, o b – rezultatas 50+10. 6 klausimas 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  
Paaiškinimas: C++ taip pat gali atlikti aritmetinį skaičiavimą, atsižvelgdamas į simbolių ASCII reikšmes, jei aritmetinė operacija atliekama su char duomenų tipo kintamaisiais. Šiuo atveju atsakymas yra 120, tai yra x ASCII reikšmė.
7 klausimas CPP
   #include       using     namespace     std  ;   int     main  (  int     x  )   {      static     int     i     =     5  ;      if     (  --  i  )      {      cout      < <     i  ;      main  (  10  );      }      return     0  ;   }   
Output:
4321  
Paaiškinimas: Bet koks skaičius, kuris nėra nulis C++ kalboje, laikomas tikrąja verte. Šiame kode if sakinys linkęs sumažinti i reikšmę, bet if bloko viduje iškviečiama funkcija main () vėl ir vėl. Atrodo, kad programa yra begaliniame cikle, tačiau kintamasis i yra statinis, jo gyvavimo laikas iki įvykdymo, todėl programa sustos, jei i taps 0.
8 klausimas CPP
   #include       using     namespace     std  ;   int     main  (  int     x  )   {      int     i     =     5  ;      if     (  --  i  )      {      cout      < <     i  ;      main  (  10  );      }      return     0  ;   }   
Output:
infinite loop  
Paaiškinimas: Bet koks skaičius, kuris nėra nulis C++ kalboje, laikomas tikrąja verte. Šiame kode teiginys if linkęs mažinti i reikšmę, bet if bloko viduje iškviečiama funkcija main () vėl ir vėl (visi teiginiai dabar bus vykdomi taip, lyg tai būtų nauja programa), todėl programos vykdymas bus įtrauktas į begalinę kilpą, nes nėra nutraukimo sąlygos. Sukurti viktoriną