E tam. Operatory dzielenia i mnożenia mają taki sam priorytet. Najpierw wykona się dzielenie 1/2, w wyniku otrzymamy... 0 (tak tak, dzielenie całkowite), a następnie to zero przemnoży się przez wartość iloczynu zmiennych w nawiasie. I tak naprawdę to tu kryje się nie tyle błąd, co nieświadomość programisty. Wynik takiej operacji będzie zerem, typu takiego jak typ iloczynu zmiennych (czyli gdy jest float*float, to typ iloczynu też float, gdy float*int, to iloczyn jest float, int*int -> int). Potem nastąpi zrzutowanie tego zera na typ float (lub brak rzutowania, jeśli już jest ono floatem) i przypisanie. Gdyby zamiast 1/2 wpisać od razu wartość 0.5, wszystko będzie poprawnie, otrzymamy jakiś wynik zmiennoprzecinkowy, który będzie zerem tylko wtedy, gdy któraś z mnożonych zmiennych ma wartość 0.