2014-11-19 3 views
2

Я пробовал поиск по Google, но Google не справляется с «-n». Я видел это в коде моего профессора:Что означает someArray [- n]?

f[--n]; 
f[n++]; 

где f - массив двойных значений.

Я предполагаю, что он возвращает значение f [n] перед уменьшением (или добавлением) к n.

+2

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html –

+0

Они не совпадают. Первый - это предварительный декремент, а второй - пост-приращение. –

+1

- n означает «уменьшает значение n, а затем находит элемент в этом индексе» n ++ означает «найти элемент с индексом n, а затем увеличивать n» –

ответ

5

f[--n]; означает:

n = n -1; 
f[n]; 

f[n++]; означает:

f[n]; 
n = n + 1; 
0

вы можете найти его под предопределением (-n) или постинкрестностью (n ++). Он работает следующим образом:

  • F [- N]: во-первых п уменьшается на 1, то значение F [N] (это уже восстановленный п) возвращается
  • F [п ++] : первое значение F [N], то возвращается п увеличивается на 1

Пример:

ф {1,3,5} п = 1;

  • F [- п] возвращает 1
  • п [N ++] возвращает 3
+1

не будет 'f [n ++]' return 3? – ochi

+0

@ochi: Я ошибаюсь, конечно, вы правы! я отредактирую свой ответ. спасибо за подсказку – markus

0

код

f[--n]; 
f[n++]; 

То же самое,

n--; 
f[n]; 
f[n]; 
n++; 
+0

@uni это всего лишь эвристика. Иногда это неправильно :) – Bohemian

+0

Aha. Игнорируйте это, это мой сценарий автокомментариев при просмотре. – Unihedron

0

Это на самом деле тип оператора называется предекремент, и это часть семьи из 4 операторов (см table of java operators)

Для целого -типа переменная называется п:

  1. пост-инкремент n++ является фас Ивалент n = n + 1, часть «post» означает, что если вы видите это в строке кода (например, foo(n++);), тогда строка кода будет вызываться до того, как n будет увеличено.

  2. pre-increment ++n также совпадает с n = n + 1, но это происходит до того, как строка кода, в которой она входит, была запущена.

  3. пост-декремент n-- является эквивалентом n = n - 1 и происходит После того как текущая строка кода была запущена

  4. предварительно декремент --n является эквивалентом n = n - 1 и происходит до текущей строки кода была запущена

Пример пост против предварительно декремента:

int n = 5; 

System.out.println(n--); //This prints 5 
System.out.println(n); //This prints 4 

System.out.println(--n); //This prints 3 
System.out.println(n); //this prints 3 
Смежные вопросы