iloczyn wektorowy

0

w sieci znalazłem program który wyznacza iloczyn wektorowy (a -> b)*(a -> c) w taki sposób:

 

#define Det(a,b,c) (LL(b.x-a.x)LL(c.y-a.y)-LL(b.y-a.y)(c.x-a.x))

LL oznacza oznacza long long :
```cpp
 

typedef long long LL;

i właśnie nie rozumiem po co taki zapis to tak jakbym chciał zapisać w jakieś zmiennej sumę dwóch innych liczb i zrobił to tak :
a=long long (a+b);
0

Jeśli (b.x-a.x) jest typu long, to iloczyn (b.x-a.x)*(c.y-a.y) mógłby wyjść poza zakres long, prawda? Dlatego są tam rzutowania.

Tu masz ilustrację w C/99:

#include <stdio.h>
#include <limits.h>

int main(void) {
    long a = LONG_MAX / 2;
    long b = 3;
    long long c = a * b;
    long long cc = (long long)a * b;
    
    printf("no cast: %lld\n", c);
    printf("cast: %lld\n", cc);
    
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1