| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 582 人关注过本帖
标题:unsigned u=65535;printf("%u,%o,%x,%d\n",u,u,u,u);运行结果疑问求解答 ...
只看楼主 加入收藏
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
结帖率:90%
收藏
已结贴  问题点数:10 回复次数:5 
unsigned u=65535;printf("%u,%o,%x,%d\n",u,u,u,u);运行结果疑问求解答
#include<stdio.h>
void main()
{
unsigned u=65535;
printf("%u,%o,%x,%d\n",u,u,u,u);
}
运行结果是65535,177777,ffff,65535
最后一个 u 输出结果为什么是 65535 而不是 -1 呢。%d 不是有符号整型吗?
2015-09-22 20:51
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
不好好看书,这不,傻眼了吧

2015-09-22 21:05
小王KING
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:69
注 册:2015-9-9
收藏
得分:0 
VS编译器?
我用TC,16位编译器,结果如你所想

[ 本帖最后由 小王KING 于 2015-9-22 22:28 编辑 ]
2015-09-22 22:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
谁说 unsigned 就是 2bytes,最大65535的?你看的什么烂书
代码写规矩点,如
程序代码:
#include <stdio.h>
#include <limits.h>

int main( void )
{
    unsigned u = UINT_MAX;
    printf( "%u, %o, %x, %d\n", u, u, u, u );

    return 0;
}
一种可能的输出如下(希望你能明白为什么我要强调“一种可能的”)
4294967295, 37777777777, ffffffff, -1

ILP32/LLP64/LP64/ILP64 等数据模型因为不属于C标准的内容,我就不讲了。只说 C没有规定unsigned等有多大,目前实现者(编译器)中有设为 2bytes、4bytes、8bytes的。
2015-09-23 08:56
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
收藏
得分:0 
让各位见笑了。。。
先谢谢楼上各位的答惑。。。

就是说我的编译器规定的unsigned  不止2byte 16位 有可能是4或者8对吗?
2015-09-23 10:27
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
收藏
得分:0 
谢谢 rjsp
 
我把程序改成
#include<stdio.h>
void main()
{
int  u=-1;
printf("%u,%o,%x,%d\n",u,u,u,u);
}
输出结果真的和你的4294967295, 37777777777, ffffffff, -1 一样。、
我用的编译器应该是4byte的。。
2015-09-23 10:40
快速回复:unsigned u=65535;printf("%u,%o,%x,%d\n",u,u,u,u);运行结果疑问求解 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015626 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved