Quantcast
Channel: Why is 0 < -0x80000000? - Stack Overflow
Browsing latest articles
Browse All 7 View Live

Answer by chux - Reinstate Monica for Why is 0 < -0x80000000?

A point of confusion occurs in thinking the - is part of the numeric constant.In the below code 0x80000000 is the numeric constant. Its type is determine only on that. The - is applied afterward and...

View Article



Answer by haccks for Why is 0 < -0x80000000?

C has a rule that the integer literal may be signed or unsigned depends on whether it fits in signed or unsigned (integer promotion). On a 32-bit machine the literal 0x80000000 will be unsigned. 2's...

View Article

Answer by Lundin for Why is 0 < -0x80000000?

This is quite subtle.Every integer literal in your program has a type. Which type it has is regulated by a table in 6.4.4.1:Suffix Decimal Constant Octal or Hexadecimal Constantnone int int long int...

View Article

Answer by Vlad from Moscow for Why is 0 < -0x80000000?

This integer literal 0x80000000 has type unsigned int. According to the C Standard (6.4.4.1 Integer constants)5 The type of an integer constant is the first of the corresponding list in which its value...

View Article

Answer by dbush for Why is 0 < -0x80000000?

The numeric constant 0x80000000 is of type unsigned int. If we take -0x80000000 and do 2s compliment math on it, we get this:~0x80000000 = 0x7FFFFFFF0x7FFFFFFF + 1 = 0x80000000So -0x80000000 ==...

View Article


Answer by Bathsheba for Why is 0 < -0x80000000?

0x80000000 is an unsigned literal with value 2147483648.Applying the unary minus on this still gives you an unsigned type with a non-zero value. (In fact, for a non-zero value x, the value you end up...

View Article

Why is 0 < -0x80000000?

I have below a simple program:#include <stdio.h>#define INT32_MIN (-0x80000000)int main(void) { long long bal = 0; if(bal < INT32_MIN ) { printf("Failed!!!"); } else { printf("Success!!!"); }...

View Article
Browsing latest articles
Browse All 7 View Live




Latest Images