免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 小羊咪咪
打印 上一主题 下一主题

0xff 是多少? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-12-09 13:45 |只看该作者
按标准,0xff 是 int

论坛徽章:
0
12 [报告]
发表于 2009-12-09 13:52 |只看该作者
没见过有哪个实现直接默认把 char 当作无符号的。

论坛徽章:
0
13 [报告]
发表于 2009-12-09 14:03 |只看该作者
原帖由 zx_wing 于 2009-12-9 13:17 发表

>>单单的一个char究竟是signed还是unsigned取决于实现,标准里面并没有说明
强烈怀疑。C标准没规定char, int, long代表有符号数?

不用怀疑,我很肯定C99没有。

论坛徽章:
0
14 [报告]
发表于 2009-12-09 14:17 |只看该作者
原帖由 prolj 于 2009-12-9 14:03 发表

不用怀疑,我很肯定C99没有。

标准里说明这个是实现决定的?麻烦贴下相关说明

论坛徽章:
0
15 [报告]
发表于 2009-12-09 15:08 |只看该作者
书上看到的,专家C还是什么的,后来确认了一下C99手册.

论坛徽章:
0
16 [报告]
发表于 2009-12-09 16:20 |只看该作者
原帖由 pagx 于 2009-12-9 12:57 发表
sizeof(0xFF ) == 4
sizeof('\xFF') == 1

实质上 0xFF 只是 255 的另外一种表示方式。

int n = (char)0xff;
其实是被解析成 int n = (int)((char)((int)0xFF));
所以在 int 往 char 赋值时, 被截断, ...


说的有道理,测试如下:

[wpc_LK@localhost test]$ g++ -v
使用内建 specs。
目标:i686-redhat-linux
配置为:
线程模型:posix
gcc 版本 4.4.2 20091027 (Red Hat 4.4.2-7) (GCC)
[wpc_LK@localhost test]$  cat test.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[]) {
    int n = (char)0xff;
    cout << "int: (char)0xff            : " << n << endl;
    n = (unsigned char)0xff;
    cout << "int: (unsigned char)0xff   : " << n << endl;
   
    short m = (char)0xff;
    cout << "short: (char)0xff          : " << m << endl;
    m = (unsigned char)0xff;
    cout << "short: (unsigned char)0xff : " << m << endl;
   
    long l = (char)0xff;
    cout << "long: (char)0xff           : " << l << endl;
    l = (unsigned char)0xff;
    cout << "long: (unsigned char)0xff  : " << l << endl;
    return EXIT_SUCCESS;
}
[wpc_LK@localhost test]$ ./test
int: (char)0xff            : -1
int: (unsigned char)0xff   : 255
short: (char)0xff          : -1
short: (unsigned char)0xff : 255
long: (char)0xff           : -1
long: (unsigned char)0xff  : 255
[wpc_LK@localhost test]$

论坛徽章:
0
17 [报告]
发表于 2009-12-09 16:40 |只看该作者
这要看类型吧

论坛徽章:
0
18 [报告]
发表于 2009-12-09 16:46 |只看该作者
没有类型的数值是没有意义的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
19 [报告]
发表于 2009-12-09 18:22 |只看该作者
原帖由 zx_wing 于 2009-12-9 14:17 发表

标准里说明这个是实现决定的?麻烦贴下相关说明



转帖:http://www.cnitblog.com/cqshen/archive/2007/09/25/34016.html
zx看一下

论坛徽章:
0
20 [报告]
发表于 2009-12-09 18:36 |只看该作者
关于 char 的符号问题,我以前也有一帖,骗了10 分的。

http://bbs.chinaunix.net/viewthr ... p;extra=&page=1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP