C语言的sizeof()问题

为什么printf("%d",sizeof(int));显示是1printf("%ld",sizeof(int));显示是1printf("%lld",sizeof(in... 为什么 printf("%d" ,sizeof(int));显示是1
printf("%ld" ,sizeof(int)); 显示是1
printf("%lld" ,sizeof(int));显示却是好大好大的一个数
printf("%u" ,sizeof(int));显示的是4
printf("%f" ,sizeof(int));显示的是0.000000
printf("%lf" ,sizeof(int));显示的是0.000000
printf("%llf" ,sizeof(int));显示的是0.000000
展开
 我来答
szy19930111
推荐于2017-09-22
知道答主
回答量:48
采纳率:0%
帮助的人:18.7万
展开全部
注意sizeof的返回值类型是一个size_t型,而size_t是这样定义的,typedef unsigned int size_t,也就是说它是一个unsigned int型。所以只有第四个是对的,其它都会出错。
追问
格式输出在这里用%d无可厚非吧?
追答
这个我在VS上实验输出是4

int的字节长度是由CPU和操作系统编译器共同决定的,一般情况下,主要是由操作系统决定

一般 16位机器是2个字节,32位机器下面是4个字节
一般32位机寻址空间4G,所以指针占4字节
一般8位的单片机寻址空间是64k,所以指针占2字节

当然编译器也有关系

但是你第四个明显是4了,第一二个没道理是1,软件或者编译器有问题吧(机器应该不会出问题吧)
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
汐_枫
2013-05-03 · TA获得超过329个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:265万
展开全部
sizeof(类型)返回的是该类型的字节数,是一个正整数,且不同软件的类型的字节数也是不一样,
既然是整数,所有含%f(%lf…)会忽略sizeof(),等同于printf("%f");0代表输出错误;
因为lld貌似是c++才有的,c用的是__int64,因此会因类型无法识别而乱码,vc++6.0前面四个都是4,不知道你用的是啥软件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2013-05-03 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6603万
展开全部
你的平台有问题吧?我用VC++6.0经常用printf("%d" ,sizeof(int));这样的句子,结果是4而不是1……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式