开发者

greater integer width

i m trying to enter a five digit number greater than 32767 and i used "unsigned" while declaring int number开发者_Python百科, and when i m trying to print the same number it prints some arbitary negative number, results get overflowed...... pls help me out


Without seeing your code, I am guessing you are using %d or %i in the printf statement. Use %u instead.


Print unsigned values using "%u" instead of "%d".


Until you show some of the code, I can't be sure of anything.

But AFAIK you shouldn't be able to print out a negative number if you're printing out an uint – even if it overflows, the integer will always hold a positive number, as far as C is concerned.

So there's something else wrong.


Use correct format specifier.

%d for int
%u for unsigned int.

Using incorrect format specifier in printf() may cause Undefined Behavior.

For example, the following code invokes Undefined Behavior(UB).

#include<stdio.h>
int main(void)
{
    unsigned int z=Some_value; /*Some_value is an unsigned int */
    printf("%d",z); 
  /*UB as format specifier for unsigned int is incorrect,it should be %u not %d*/
}


I guess int is 16bit on your machine/compiler.

Though I don't know what your platform is, I guess that long would solve your problem (it is 32bit or more on all platforms I know). Print it with %ld instead of %d.

Don't get tempted to use unsigned and %u, because they will just give you numbers up to 65536, and I guess that you want more.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜