Non importa cosa si aspetta la funzione (o le funzioni) che stanno all' "esterno" (fra l'alto non è vero che la Abs si attenda un integer) ma i tipi che compongono l'espressione.
Per una espressione il risultato sarà calcolato utilizzando il tipo di dato più "capiente" presente tra gli operandi della stessa espressione. Dato che hai due byte, il risultato sarà calcolato usando un byte e solo dopo passato al resto delle funzioni.
E' per questo che uno degli operandi deve essere di tipo adeguato in modo da non avere errori nella fase di calcolo.
[quote]automaticamente convertito in integer[/qupte]
Nulla di automatico.
Non c'è bisogno di entrambi, come ti ho detto prima.trasformando ENTRAMBI