What does the unary plus operator do?

Actually, unary plus does do something – even in C. It performs the usual arithmetic conversions on the operand and returns a new value, which can be an integer of greater width. If the original value was an unsigned integer of lesser width than int, it will be changed to a signed value as well.

Usually this isn’t that important, but it can have an effect, so it’s not a good idea to use unary plus as a sort of “comment” denoting that an integer is positive. Consider the following C++ program:

void foo(unsigned short x)
{
 std::cout << "x is an unsigned short" << std::endl;
}

void foo(int x)
{
 std::cout << "x is an int" << std::endl;
}

int main()
{
 unsigned short x = 5;
 foo(+x);
}

This will display “x is an int”.

So in this example unary plus created a new value with a different type and signedness.

Leave a Comment