- 2

Значения по умолчанию для параметров

#include <iostream> using namespace std; int sum(int a=2, int b=3) { int result = a + b; return (result); } int main() { int x = 4; int y = 5; //calling the function with both parameters int result = sum(x, y); cout << result << endl; //calling the function without b result = sum(x); cout << result << endl; //calling the function without a result = sum(y); cout << result << endl; return 0; } /* output 9 7 8 */ Почему 8 ?

31st Dec 2016, 4:15 PM
Маскалёв Георгий Сергеевич
8 Réponses
+ 3
Если вы хотите использовать первый параметр по умолчанию, а второй задать вручную, то никак. Это невозможно без каких-то дополнительных хаков.
31st Dec 2016, 7:04 PM
Vladimir Honcharenko
Vladimir Honcharenko - avatar
+ 1
В функции указаны параметры по умолчанию int a=2, int b=3, они используются когда при вызове функции они опускаются. Почему 7 и почему 8: 7 = 4 + 3 8 = 5 + 3
31st Dec 2016, 6:46 PM
Vladimir Honcharenko
Vladimir Honcharenko - avatar
+ 1
функции неважно под какими названиями будут те переменные, которые вы ей передаёте. sum(4,4) -> 4 + 4 = 8 sum(1) -> 1 + 3 = 4 sum(5) -> 5 + 3 = 8 sum() -> 2 + 3 = 5
31st Dec 2016, 6:58 PM
Vladimir Honcharenko
Vladimir Honcharenko - avatar
+ 1
Взаимно :)
31st Dec 2016, 7:09 PM
Vladimir Honcharenko
Vladimir Honcharenko - avatar
0
why //calling the function without a result = sum(y); cout << result << endl; output 8? why not 7?
31st Dec 2016, 6:24 PM
Маскалёв Георгий Сергеевич
0
это я понял, в третьем вызове отсутствует параметр "х", то есть "а" а значит он должен ровняться по умолчанию 2, получается 2+5=7, разве не так?
31st Dec 2016, 6:51 PM
Маскалёв Георгий Сергеевич
0
как тогда первый параметр опустить что бы он был по умолчанию? sum ( ,y)? получается что "х" что "у" будут подставляться под первый параметр если одину из переменных не указывать?
31st Dec 2016, 7:01 PM
Маскалёв Георгий Сергеевич
0
спасибо за помощь, с наступающим новым годом и счастья =)
31st Dec 2016, 7:07 PM
Маскалёв Георгий Сергеевич