字符型赋值给整型

lanhaibin 2010-08-25 03:35:15
请大家看下面这个例子:
#include <stdio.h>

void main()
{
int i = 'abc';

printf("%c\n", i);
printf("%d\n", i);
}

其运行结果为: c
616263

请问这个616263是什么意思,它的值是怎么来的?

...全文
251 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
happynwt 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 gykgod 的回复:]
我来告诉你们 616263就是abc ascii值的连续
[/Quote]

楼主一叶障目,这只是巧合!
happynwt 2010-08-25
  • 打赏
  • 举报
回复
结果肯定和编译器有关。

正常无法编译,'abc'不是字符,也不能说是字符串。

在栈中

a
b
c

按%c输出c地址所开始的1个字节,正好是c;

按%d则将?abc转换成整型,是未知。
gykgod 2010-08-25
  • 打赏
  • 举报
回复
我来告诉你们 616263就是abc ascii值的连续
gykgod 2010-08-25
  • 打赏
  • 举报
回复
有懂的 出来解释下 高手在哪里?
hai040 2010-08-25
  • 打赏
  • 举报
回复
我记得msdn好像有相关说明
hai040 2010-08-25
  • 打赏
  • 举报
回复
这种方式是为了方便unicode
wchar_t wc = '吕'这样
Q446512799 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lanhaibin 的回复:]
引用 2 楼 xianzq888 的回复:
这也能编译..- -

可以编译,不信,兄弟试一试,这是我最新才发现的语法。
[/Quote]
语法。。语法泪目啊-_-
bxk253387223 2010-08-25
  • 打赏
  • 举报
回复
整型占4个字节,字符占一个字节,你写的这个相当于把3个字节连一起,另外加一个空闲的字节,当做一个整数。
具体数值和机器是大端还是小端有关系。
gykgod 2010-08-25
  • 打赏
  • 举报
回复
编译器把'abc'作为什么?
gykgod 2010-08-25
  • 打赏
  • 举报
回复
顶 高手
lanhaibin 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xianzq888 的回复:]
这也能编译..- -
[/Quote]
可以编译,不信,兄弟试一试,这是我最新才发现的语法。
lanhaibin 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 csuxiaowu 的回复:]
那只是一个不确定的地址。在别的电脑上运行或运行多次会有不同的数据。
[/Quote]

如果就单独一个 int i = 'a';则打印出来a的值为97稳定的,好像不是它的地址,这也是我最近才发现能这样编译,这种语法很少见的。
  • 打赏
  • 举报
回复
这也能编译..- -
Csuxiaowu 2010-08-25
  • 打赏
  • 举报
回复
那只是一个不确定的地址。在别的电脑上运行或运行多次会有不同的数据。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧