In the description of scalar types for gpb proto2 (https://developers.google.com/protocol-buffers/docs/proto#scalar) it says:
int32
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
sint32
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.
Will the sint32 be equally efficient for positive values as the int32?
In other words, is there any reason to use int32?
If it matters what language is used, i'm only interested in C++.