Yes, the compiler does add the null terminator. Thus there is 5 bytes of memory allocated to str off the stack.
By the looks of it, with that string literal, (str[3] - str[2] + str[4]) evaluates to (52 - 50 + 0), so you are acessing str[2], which will print 0x32 in hex.