The answer is C.
Usually we expect the operands of binary operators to undergo the usual arithmetic conversions but this does not happen for shift operators, only integral promotions: [expr.shift]p1 http://eel.is/c++draft/expr.shift#1.sentence-2
The type of the result is the promoted left operand which in this case would be int: [conv.prom] http://eel.is/c++draft/conv.prom
So we have undefined behavior since the right operand is greater than the bit-width of int in this case: [expr.shift]p1 http://eel.is/c++draft/expr.shift#1.sentence-4
For additive operators the usual arithmetic conversions are performed: [expr.add]p1 http://eel.is/c++draft/expr.add#1
The left operand which is an int is converted to int64_t since they are both signed and int64_t has a greater rank: [expr.arith.conv]p1.5.2 http://eel.is/c++draft/expr.arith.conv#1.5.2
There is no overflow and hence no undefined behavior.