Edit:
I agree with David Carlisle that it is generally bad practice to have multiple optional arguments with default values. If you want to give the last argument a value, you also have to provide the prior arguments. For these kind of macros, it might be more clear to use a key=<value> structure for the arguments. The following example uses pgf for that:
\documentclass{article}
\usepackage{pgf}
\pgfkeys{
/plus binomial/.cd,
a/.initial={5},
b/.initial={8},
c/.initial={2},
}
\newcommand{\plusbinomial}[1][]{%
\pgfkeys{/plus binomial/.cd,#1}%
(\pgfkeysvalueof{/plus binomial/a} + \pgfkeysvalueof{/plus binomial/b})^{\pgfkeysvalueof{/plus binomial/c}}%
}
\begin{document}
\( \plusbinomial \)
\( \plusbinomial[c=9] \)
\( \plusbinomial[c=9,b=1] \)
\( \plusbinomial[c=9,b=1,a=3] \)
\( \plusbinomial[c=9,a=3] \)
\end{document}
Which results in the following, which is more intuitive:

Without a package this can be done as follows:
\documentclass{article}
\makeatletter
\def\plusbinomial{%
\@ifnextchar[{%
\plusbinomial@i%
}{%
\plusbinomial@i[2]% Default is 2
}%
}
\def\plusbinomial@i[#1]{%
\@ifnextchar[{%
\plusbinomial@ii{#1}%
}{%
\plusbinomial@ii{#1}[5]% Default is 5
}%
}
\def\plusbinomial@ii#1[#2]{%
\@ifnextchar[{%
\plusbinomial@iii{#1}{#2}%
}{%
\plusbinomial@iii{#1}{#2}[8]% Default is 8
}%
}
\def\plusbinomial@iii#1#2[#3]{(#2 + #3)^#1}
\makeatother
\begin{document}
\( \plusbinomial \)
\( \plusbinomial[9] \)
\( \plusbinomial[9][1] \)
\( \plusbinomial[9][1][3] \)
\( \plusbinomial[9][][3] \)
\end{document}
But if you're willing to include the xparse package, this becomes a lot simpler:
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\plusbinomial}{O{2} O{5} O{8}}{(#2 + #3)^{#1}}
\begin{document}
\( \plusbinomial \)
\( \plusbinomial[9] \)
\( \plusbinomial[9][1] \)
\( \plusbinomial[9][1][3] \)
\( \plusbinomial[9][][3] \)
\end{document}
With exactly the same result:

\plusbinomial[4]{a}{b}is easier than(a+b)^{4}. – egreg Jul 24 '18 at 07:27#1in that code. – Skillmon Jul 24 '18 at 08:06