Chinaunix

标题: int x='abcd', x为什么为:0x61626364? [打印本页]

作者: lsupper    时间: 2012-03-09 16:28
标题: int x='abcd', x为什么为:0x61626364?
    int x='abcd', x为什么为:0x61626364?
    并且x最多只能取4个字符...你想int x='abcda',会编译出错:
    error C2015: too many characters in constant
测试平台:WIN32
作者: 懒蜗牛Arch    时间: 2012-03-09 16:35
lz想说什么……
x是个int型,你想让他等于什么?
作者: bruceteen    时间: 2012-03-09 17:02
1。什么内容却决于你的编译器,这属于平台实现,标准没有强制规定
2。因为你的int只占4个字节
作者: lsupper    时间: 2012-03-09 17:32
回复 2# 懒蜗牛Arch

你随便写个helloworld,写一条语句:
int x='abcd';
printf("%x\n",x);

看下结果,知道为什么吗?
   
作者: lsupper    时间: 2012-03-09 17:33
回复 3# bruceteen

我就以为有什么规定或者什么规则呢?
   
作者: 懒蜗牛Arch    时间: 2012-03-09 18:25
回复 4# lsupper

61626364依次是abcd的ascii码呀(16进制),这还有啥可为什么的?
不过这么赋值,不知道有没有具体的规范定义,我觉得是不合理的。

作者: lsupper    时间: 2012-03-11 21:49
回复 6# 懒蜗牛Arch
汗,你自己去查查ASCII码表的61 62 63 64是多少..看仔细...

   
作者: hbmhalley    时间: 2012-03-11 22:20
回复 7# lsupper


    笑而不语
作者: 懒蜗牛Arch    时间: 2012-03-12 10:03
回复 7# lsupper


    我还特意括号注明了是“16进制”…………还是你仔细去看看吧
作者: lsupper    时间: 2012-03-23 21:30
回复 9# 懒蜗牛Arch

嗯,我的粗心...
   
作者: slucx    时间: 2012-03-23 22:24
hbmhalley 发表于 2012-03-11 22:20
回复 7# lsupper

作者: 光速    时间: 2012-03-23 22:35
x就占4个字节,你要让它占5个字节,编译器当然要报错了
作者: lsupper    时间: 2012-03-25 19:15
回复 12# 光速

这个明白,我主要对能那样赋值,并且对赋值结果疑惑 呵呵
   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2