鱼C论坛

 找回密码
 立即注册
查看: 3447|回复: 4

字符串的格式化%d %u区别

[复制链接]
发表于 2022-7-18 19:04:58 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2022-7-18 23:05 编辑

        C 语言的整型数分为有符号整型数和无符号整型数,对于 32 位整型数而言,其表达空间为 2 ^ 32 = 4294967296,就是说,32 个二进制位总共可以表达出 4294967296 个不同的数值。对于无符号整数而言,这个空间可表达的数值范围为 0 ~ 4294967295,一共 4294967296 个;对于有符号整数而言,整个表达空间被平分成两部分,其中,前半部分 2147483648 个用于表达正整数,可表达数值范围为 0 ~ 2147483647,后半部分 2147483648 个用于表达负整数,可表达数值范围为 - 2147483648 ~ -1。这就意味着在计算机内部,同一个 32 位整型数,依据数据类型(有符号、无符号)的不同,可能具有不同的数值。

        %d 和 %u 都是 C 语言的输入输出格式描述符,前者的意思是按有符号十进制整型数的形式解释变量数值,后者当然是按无符号十进制整型数的形式解释变量的数值。

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int a = 0x7fffffff , c = a + 1                        ;
  5.         printf("a = 0x%x , c = 0x%x\n" , a , c)               ;
  6.         printf("a = %d , c = %d\n" , a , c)                   ;
  7.         printf("unsigned a = %u , unsigned c = %u\n" , a , c) ;
  8. }
复制代码

        编译、运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. a = 0x7fffffff , c = 0x80000000
  4. a = 2147483647 , c = -2147483648
  5. unsigned a = 2147483647 , unsigned c = 2147483648

  6. D:\[00.Exerciese.2022]\C>
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 16:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表