Вивід програм на C++ | Набір 22
Спрогнозуйте вихід наступних програм C++. Питання 1 CPP
Питання 2 CPP
Питання 3 CPP
Питання 4 CPP
Питання 5 CPP
Питання 7 CPP
Питання 8 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 + ( 1 4 5 6 3 ); 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() викликається знову і знову (усі оператори тепер виконуватимуться так, ніби це нова програма), отже, виконання програми відбуватиметься в нескінченному циклі, оскільки немає умови завершення. Створіть вікторину