logo

Извеждане на C++ програми | Комплект 22

Предскажете изхода на следните C++ програми. Въпрос 1 CPP
#include    using namespace std; int main() {  int a = b = c = 0;  cout << a << '*' << b << '*' << c;  return 0; } 
Output:
Compile time error! 
Обяснение: 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 CPP
#include    using namespace std; int main() {  for ( ; ; ) cout << 'blank';  return 0; } 
Output:
Infinite Loop! 
Обяснение: Тъй като условието за тест за инициализация и условието за увеличаване/намаляване липсват в for цикъла, изпълнението ще бъде уловено в безкраен цикъл.
Въпрос 3 CPP
#include    using namespace std; int main() {   int i;  for (i=0; i<3; i++);    cout << 'hello!' <<i;  return 0; } 
Output:
hello!3 
Обяснение: Hello!3 е резултатът, защото когато for цикълът се изпълнява, той няма никаква задача поради точката и запетая(;) в реда, където е дефиниран for цикълът. Цикълът ще се изпълни три пъти и стойността на i ще стане 3, след което останалите оператори ще се изпълнят.
Въпрос 4 CPP
#include    using namespace std; int main() {  int i;  i = 1 + (14563);  cout << i;  return 0; } 
Output:
4 
Обяснение: Операторът comma () е двоичен оператор, който оценява първия операнд и отхвърля резултата, след което оценява втория и след това връща стойността на втория. Тук асоциативността на оператора запетая () е отляво надясно и е лесно да се разбере, че изразът (14563) се оценява на 3 и след това резултатът 1 + 3 се присвоява на i.
Въпрос 5 CPP
#include    using namespace std; int main() {  int a = 0 b;  b = (a = 50) + 10;  cout << a << '$' << b;  return 0; } 
Output:
50 
Обяснение: Твърдението b = (a = 50) + 10; използва концепцията за вградено присвояване. Тук стойността 50 се присвоява на променлива a, а резултатът 50+10 се присвоява на b. Въпрос 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 
Обяснение: C++ може също да извършва аритметично изчисление, като взема предвид ASCII стойностите на символите, ако аритметичната операция се извършва върху променливи от тип данни char. Тук в този случай отговорът е 120, което е ASCII стойността за x.
Въпрос 7 CPP
#include   using namespace std; int main(int x) {  static int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
4321 
Обяснение: Всяко различно от нула число в C++ се третира като истинска стойност. Тук в този код операторът if има тенденция да намалява стойността на i, но вътре в блока на if функцията main() се извиква отново и отново. Тук програмата изглежда е в безкраен цикъл, но променливата i е статична по природа, тя има своя живот до изпълнение, следователно програмата ще спре, ако i стане 0.
Въпрос 8 CPP
#include   using namespace std; int main(int x) {  int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
infinite loop 
Обяснение: Всяко различно от нула число в C++ се третира като истинска стойност. Тук в този код операторът if има тенденция да намалява стойността на i, но вътре в блока на if функцията main() се извиква отново и отново (всички изрази сега ще се изпълняват, сякаш е нова програма), следователно изпълнението на програмата ще бъде хванато в безкраен цикъл, тъй като няма условие за прекратяване. Създаване на тест