C语言unsigned long int a=-1,printf("%d",a)结果为-1

C语言unsignedlonginta=-1,printf("%d",a)结果为-1,但是a为无符号型的,-1赋值后a的实际值应该为32个1,按照unsignedlong... C语言unsigned long int a=-1,printf("%d",a)结果为-1,但是a为无符号型的,-1赋值后a的实际值应该为32个1,按照unsigned long规则解码输出后,不应该是2^32-1吗? 展开
 我来答
风生看童6996
2018-12-16 · TA获得超过4001个赞
知道大有可为答主
回答量:6822
采纳率:84%
帮助的人:736万
展开全部


这几个都是C语言格式化输入输出时使用的格式符号。其中%U为误写,实际为%u。

格式化输出函数包括printf, fprintf, sprintf等等。

格式化输入函数包括scanf, fscanf, sscanf等等。

这类函数在输入输出的时候都有一个参数为格式化字符串(format_str), 里面介绍了输入输出字符串的格式,当需要输入输出变量值时,就需要用对应的格式化字符来替代。

题目中提到的三种格式分别对应:

%ld对应long型,即长整型。

%d对应int型,即整型。

%u对应unsigned int型,即无符号整型。

除此以外,还有如下常见的类型。

%hd对应short型,即短整型。

%hu对应unsigned short型,即无符号短整型。

%f对应float型,即单精度浮点型。

%lf对应double型,即双精度浮点型。

%c对应char型,即字符型。

%s对应char *型,即字符指针/字符数组(均可称为字符串)。

%x对应int型,不过是以16进制输入输出。

%lx对应long型,同样是16进制形式。


以下是一个简单的例子:

#include <stdio.h>
int main()
{
    int i;
    long l;
    unsigned int u;//定义三个不同类型的变量。
    
    scanf("%d%ld%u",&i,&l,&u);//格式化输入三种变量,每个对应自己的类型。
    printf("i = %d\n", i);
    printf("l = %ld\n", l);
    printf("u = %u\n", u);//分行格式化输出三个变量的值。
    
    return 0;
}

如果输入1 2 3

将输出

i = 1
l = 2
u = 3



推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式