napisałem funkcję absolutną stosując operator potrójny następującoreturn w trójskładnikowych operatora C++
int abs(int a) {
a >=0 ? return a : return -a;
}
dostaję następujące komunikaty o błędach
../src/templates.cpp: In function ‘int abs(int)’:
../src/templates.cpp:4: error: expected primary-expression before ‘return’
../src/templates.cpp:4: error: expected ‘:’ before ‘return’
../src/templates.cpp:4: error: expected primary-expression before ‘return’
../src/templates.cpp:4: error: expected ‘;’ before ‘return’
../src/templates.cpp:4: error: expected primary-expression before ‘:’ token
../src/templates.cpp:4: error: expected ‘;’ before ‘:’ token
../src/templates.cpp:5: warning: no return statement in function returning non-void
Jeśli piszę jak ten
return a>=0 ? a : -a;
Nie otrzymuję żadnego błędu. Jaka jest różnica między tymi dwoma?
Pierwszym argumentem operatora potrójnego jest również wyrazem, oczywiście. Te dwa ostatnie mogą być wyrażeniami typu "void". –
Tak, chodzi o to, że problem z OP dotyczył dwóch ostatnich ... –