请问我的C程序错在哪里?

王朝干货·作者佚名  2011-11-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  
 声明  小说素材,内容虚构,如有雷同,纯属巧合!

%d 是当有符号的输出的 ,用%u就行了;

16位程序输出确实是 -1,32位程序输出就不会错了.

无符号整数。

注意整数的取值范围!

应该定义

unsigned long x;

你定义的是无符号整型数。

而X的初值已经超过了定义所要求的范围。

这方面的范围书上都是有的。

数据在内存中是以二进制存储的,在32位机中,int型数据一般占2个字节,也就是16个0或1。无符号的整型数据直接被译成二进制,即65535变成1111111111111110。此时应以无符号的形式输出,%u,则1111111111111110变成65535。但是你以有符号整型输出,有符号的整型数据在内存中以他的补码的形式存储,从补码到十进制的转化中,1111111111111110就被转化成了-1,这个过程请查看计算机基础中的数据存储一章。以后应注意各种数据类型的范围:int -32768~32767,unsigned int 0~65535………

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航