signed/unsigned int

A

Aire

1. If a function defined as:

void test_function(unsigned int a)
{
}

Is "test_function(-256);" going to cause undefined behavior?

2. What's "a negative signed value wrapping"?

3. Is bit-shifting on a signed int undefined behavior? Why?

Thanks!
 
E

Eric Sosman

Aire said:
1. If a function defined as:

void test_function(unsigned int a)
{
}

Is "test_function(-256);" going to cause undefined behavior?

No.
2. What's "a negative signed value wrapping"?

An informal description of one common consequence
of the result of trying to compute or store a value
smaller than the smallest value representable in the
given signed integer type.
3. Is bit-shifting on a signed int undefined behavior? Why?

Yes under some circumstances; because the Standard
doesn't define it.
 
J

Jack Klein

1. If a function defined as:

void test_function(unsigned int a)
{
}

Is "test_function(-256);" going to cause undefined behavior?

No, but it might cause unexpected errors in the function if such a
value is not valid and the function does not check for it. The value
-256 will be converted, as if by assignment, to an unsigned int to
pass to the function.

Assigning a negative value to a unsigned integer type can never
overflow and the result is always well-defined. In this case, the
unsigned int value passed will be UINT_MAX + 1 - 256. That's 65280
for typical 16 bit ints, or 4294967040 for typical 32 bit ints, but
other values are possible.
2. What's "a negative signed value wrapping"?

No such thing in C. Overflowing or underflowing a signed integer type
produces undefined behavior.
3. Is bit-shifting on a signed int undefined behavior? Why?

It is possible that some bit patterns, when interpreted as a signed
integer type, do not compose a valid value for that type. This is
called a trap representation, and dealing with such produces undefined
behavior. When shifting a signed integer, it is possible that a trap
representation may be produced.

Aside from that, it is implementation-defined whether right shifting a
signed integer type preserves the sign bit.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top