By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
432,306 Members | 1,657 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 432,306 IT Pros & Developers. It's quick & easy.

signed/unsigned int

P: n/a
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!
Nov 14 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Aire wrote:

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.
--
Er*********@sun.com
Nov 14 '05 #2

P: n/a
On Thu, 22 Jan 2004 17:36:02 GMT, "Aire" <ai*****@zoomit.org> wrote in
comp.lang.c:
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.
Thanks!


--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html
Nov 14 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.