As a global, this works: int x2 = (int) (char) 5; This doesn't: int x2 = (int) (char) {5}; b.c:1: error: initializer element is not constant Bug?