鱼C论坛

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

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

[复制链接]
发表于 2022-7-18 18:09:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问字符串的格式化操作中,%d 和%u有什么具体差别?%u的无符号十进制数是什么意思?

非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-18 18:13:48 From FishC Mobile | 显示全部楼层
字面意思,没有符号位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-18 18:14:43 | 显示全部楼层
无符号:只能是正数,无负号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 语言的输入输出格式描述符,前者的意思是按有符号十进制整型数的形式解释变量数值,后者当然是按无符号十进制整型数的形式解释变量的数值。
#include <stdio.h>

int main(void)
{
        int a = 0x7fffffff , c = a + 1                        ;
        printf("a = 0x%x , c = 0x%x\n" , a , c)               ;
        printf("a = %d , c = %d\n" , a , c)                   ;
        printf("unsigned a = %u , unsigned c = %u\n" , a , c) ;
}
        编译、运行实况:
D:\[00.Exerciese.2022]\C>g++ -o x x.c

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

D:\[00.Exerciese.2022]\C>

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-19 08:49:25 | 显示全部楼层
Why so many people just asking instead of learning basic knowledge?
https://www.runoob.com/python3/python3-string.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 14:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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