C语言中 %d,%u 输出的数据范围

您所在的位置:网站首页 C语言char类型的取值范围 C语言中 %d,%u 输出的数据范围

C语言中 %d,%u 输出的数据范围

2023-08-14 15:46| 来源: 网络整理| 查看: 265

注: 1、以下测试在xp sp3 32位系统,Codeblocks 17.12(GCC编译)和STM32F407上进行,其他平台未测试 2、本文只是我个人的理解,不一定完全正确 3、版权所有,转载请注明作者和出处  

一、说明与结论

1、int即整型数据类型,这个类型占用的字节数和系统的位数有关,8位系统int占用1字节,16位系统int占用2字节,32位系统int占用4字节,64位系统int占用8字节。

2、数据类型有有符号和无符号之分,有符号类型最高位为1表示负数,0表示整数,能表示的最大值减半。

3、%d和%u

%d:输出一个有符号的整型数据,即它输出的数据范围是 signed int 的范围,即 0x80000000 ~ 0x7FFFFFFF

%u:输出一个无符号的整型数据,即它输出的数据范围是 unsigned int 的范围,即:0~0xFFFFFFFF

二、实例

1、测试代码

#include #include int main() { int a=0x7fffffff; int b=0x80000000; int c=0xffffffff; int d=0xffffffff+1; unsigned int e=0xffffffff; printf("%011d\n",a); printf("%011d\n",b); printf("%011d\n",c); printf("%011d\n",d); printf("%011u\n",e); return 0; }

2、codeblocks实例

3、IAR ARM实例

4、经验

1)一般情况下采用%d输出已经足够了,因为它的输出范围为:-2147483648~+2147483647已经非常大了,但是确实要输出超过0x7FFFFFFF的数据时就必须要用%u了,不然结果就会错误,所以绝大多数情况下用%d,特殊情况下用%u。

2)采用%d或%u编译完的代码大小不变

 

2020-03-21 于北京 晴



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3