Антипод volitile
От: cppguard  
Дата: 02.03.21 11:22
Оценка:
В Си, если не пометить переменную как volitile, то можно надеяться, что в следующем коде чтение элемента массива произойдёт только один раз:
struct foo {
    int a;
    int b;
    int c;
};

int square(const struct foo *foo, int i) {
    return foo[i].a + foo[i].b + foo[i].c;
}


что убирает необходимость введения промежуточной переменной.

Godbolt это подтверждает:
square:
        movsx   rsi, esi
        lea     rax, [rsi+rsi*2]
        lea     rdx, [rdi+rax*4]
        mov     eax, DWORD PTR [rdx+4]
        add     eax, DWORD PTR [rdx]
        add     eax, DWORD PTR [rdx+8]
        ret


А как получить этот же эффект в Java?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.