C语言中 %d,%u 输出的数据范围 |
您所在的位置:网站首页 › C语言char类型的取值范围 › C语言中 %d,%u 输出的数据范围 |
注: 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 |