> (typeof(x))((x + a - 1) & ~(a - 1ULL)) Yes I was being stupid thinking I needed a temporary variable to use typeof. But what does the cast to typeof(x) accomplish if we write things the way you suggested above? It seems that the right things is really just (((x) + (a) - 1) & ~((typeof(x)) (a) - 1)) - R.