Изучая C, я столкнулся с чем-то, что совершенно сбивает меня с ума.C тройной оператор
Выражение:
exp(V*log(i))?i%2?s:s--:s++;
Если троичный оператор Вопрос Положительный: Отрицательный;? Я думал, что это было что-то вроде:
if(pow(i,V)==1&&(i%2)==0)
s--;
else
s++;
Однако, то s не входит в этот вопрос, я должен спросить, что делает первое выражение означает?
Программа отлично работала, но я не мог понять, почему.
Оригинальная программа:
main(){
#define V 1
int a, s=0, i;
for(i=1000;i>=0;i--)
exp(V*log(i))?i%2?s:s--:s++;
exp(V*log(i))?printf("%d\t%d\t",-s,i):printf("%d\t%d\t", s,-i);
getch();
}
Несколько лишних скобок бы сделать это гораздо яснее. –
Подробнее о [приоритете оператора] (https://en.wikipedia.org/wiki/Operators_in_C_and_C++) или [здесь] (http://en.cppreference.com/w/c/language/operator_precedence) – Olaf