logo

Dane wyjściowe programów C++ | Zestaw 22

Przewiduj dane wyjściowe następujących programów w języku C++. Pytanie 1 CPP
#include    using namespace std; int main() {  int a = b = c = 0;  cout << a << '*' << b << '*' << c;  return 0; } 
Output:
Compile time error! 
Wyjaśnienie: 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; 

Pytanie 2 CPP
#include    using namespace std; int main() {  for ( ; ; ) cout << 'blank';  return 0; } 
Output:
Infinite Loop! 
Wyjaśnienie: Ponieważ w pętli for brakuje warunku testu inicjalizacji oraz warunku inkrementacji/zmniejszenia, wykonanie zostanie przechwycone w nieskończonej pętli.
Pytanie 3 CPP
#include    using namespace std; int main() {   int i;  for (i=0; i<3; i++);    cout << 'hello!' <<i;  return 0; } 
Output:
hello!3 
Wyjaśnienie: Rezultatem jest Hello!3, ponieważ podczas wykonywania pętli for nie ma ona żadnego zadania do wykonania ze względu na średnik(;) znajdujący się w wierszu, w którym zdefiniowano pętlę for. Pętla wykona się trzy razy, a wartość i osiągnie 3, a następnie wykonana zostanie reszta instrukcji.
Pytanie 4 CPP
#include    using namespace std; int main() {  int i;  i = 1 + (14563);  cout << i;  return 0; } 
Output:
4 
Wyjaśnienie: Operator przecinka () to operator binarny, który ocenia pierwszy operand i odrzuca wynik, a następnie ocenia drugi i zwraca wartość drugiego. Tutaj łączność operatora przecinka () przebiega od lewej do prawej i łatwo zrozumieć, że wyrażenie (14563) ma wartość 3, a następnie wynik 1 + 3 jest przypisywany do i.
Pytanie 5 CPP
#include    using namespace std; int main() {  int a = 0 b;  b = (a = 50) + 10;  cout << a << '$' << b;  return 0; } 
Output:
50 
Wyjaśnienie: Stwierdzenie b = (a = 50) + 10; wykorzystuje koncepcję osadzonego przypisania. Tutaj wartość 50 jest przypisana do zmiennej a, a wynik 50+10 jest przypisany do b. Pytanie 6 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 
Wyjaśnienie: C++ może również wykonywać obliczenia arytmetyczne, biorąc pod uwagę wartości ASCII znaków, jeśli operacje arytmetyczne są wykonywane na zmiennych typu char. W tym przypadku odpowiedź brzmi 120, co jest wartością ASCII dla x.
Pytanie 7 CPP
#include   using namespace std; int main(int x) {  static int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
4321 
Wyjaśnienie: Każda liczba różna od zera w C++ jest traktowana jako wartość prawdziwa. W tym kodzie instrukcja if ma tendencję do zmniejszania wartości i, ale wewnątrz bloku if funkcja main() jest wywoływana wielokrotnie. Tutaj program wydaje się być w nieskończonej pętli, ale zmienna i ma charakter statyczny i ma swój czas życia aż do wykonania, dlatego program zatrzyma się, jeśli i osiągnie wartość 0.
Pytanie 8 CPP
#include   using namespace std; int main(int x) {  int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
infinite loop 
Wyjaśnienie: Każda liczba różna od zera w C++ jest traktowana jako wartość prawdziwa. Tutaj, w tym kodzie, instrukcja if ma tendencję do zmniejszania wartości i, ale wewnątrz bloku, jeśli funkcja main() jest wywoływana wielokrotnie (wszystkie instrukcje będą teraz wykonywane tak, jakby był to nowy program), dlatego wykonanie programu zostanie przechwycone w nieskończonej pętli, ponieważ nie ma warunku zakończenia. Utwórz quiz