Порядок операций для сегмента кода:
for (i = 0; i < n; i++)
printf("%6d%c", a[i], (i%10==9 || i==n-1) ? '\n' : ' ');
- Как вы входите в цикл, я есть установите на 0.
- Прежде чем перейти к телу (printf), i проверяется, чтобы он был меньше n. Если это так, переходим к printf, иначе мы завершаем цикл.
- Printf не может быть вызван до тех пор, пока не будут вычислены его аргументы. Порядок вычисления аргументов не определен - они могут произойти в любом порядке, но это редко имеет значение.
- a [i] - простой поиск массива, но это не проблема.
- Каждый раз, когда вы видите (выражение0)? expression1: e2, выражение 0 оценивается по истине. Если это «истина» (логическое значение true, ненулевое целое число и т. Д.), Тогда выражение expression1 вычисляется и заменяется всем условным выражением. Если выражение 0 является «ложным» (логическое значение false, нулевое целое число, указатель NULL и т. Д.), Тогда выражение expression2 заменяет все условное выражение.
- printf вызывается с его вычисленными аргументами.
- я увеличивается в течение цикла (я ++) и мы возвращаемся к шагу 2.
The запутанной магии в условном выражении довольно аккуратно, на самом деле. Автор говорит: «В любое время, когда мы только что напечатали 10-е значение в строке или последнее значение во всем наборе, прикрепите символ новой строки после значения, которое мы только что напечатали.В противном случае напечатайте пробел, чтобы отделить это значение от следующего. «I% 10 будет только равным 9, когда i равно 9, 19, 29 .... и я будет равен n-1, когда мы печатаем последний элемент.
Таким образом, выражение 0 в нашем случае истинно, когда i равно 9, 19, 29 ... или n-1. В этих случаях (i%10==9 || i==n-1)?'\n':' '
оценивает просто «\ n», что делает целое заявление: printf("%6d%c", a[i], 'n');
в противном случае, это printf("%6d%c", a[i], ' ');
http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence узнать о Operator старшинства, ассоциативности в частности – user2485710
Да он печатает 10 массив 'а [я]' элементы в строке. Да, мы используем его в написании небольшого кода. –
Это не очень читаемо, но с ним не будет проблем после у вас больше опыта чтения кода. – ejno