为了账号安全,请及时绑定邮箱和手机立即绑定

哪位大神看看,这个代码是怎么实现输出一个“yes”的,如何解释?

哪位大神看看,这个代码是怎么实现输出一个“yes”的,如何解释?

C
慕瓜2161724 2017-07-15 08:29:38
#include <stdio.h>int main(){    int i=7562617;printf("%s\n",(char*)&i);return 0;}
查看完整描述

2 回答

?
嗷呜呜呜呜呜呜呜

TA贡献7条经验 获得超3个赞

基本原理,int为4字节(32位开发),在强转为char*后变成了4个char(char为一个字节)的字符串。即int值刚好对应 'y','e','s','\0'
二进制内存不变,只是读取方式不一样。
(个人想法…不一定能输出,个人考虑到了硬件存储的顺序,有可能int存储时候,反了)

查看完整回答
2 反对 回复 2017-07-15
?
MinRam

TA贡献87条经验 获得超24个赞

基本原理,int为4字节(32位开发),在强转为char*后变成了4个char(char为一个字节)的字符串。即int值刚好对应 'y','e','s','\0'
二进制内存不变,只是读取方式不一样。
(个人想法…不一定能输出,个人考虑到了硬件存储的顺序,有可能int存储时候,反了)

查看完整回答
1 反对 回复 2017-07-15
  • 慕瓜2161724
    慕瓜2161724
    可是int的值不是7562617,怎么对应char'y''e''s''\'0'的,有点懵
  • MinRam
    MinRam
    先转成二进制,然后按字节划分。
  • MinRam
    MinRam
    先转成二进制,然后按字节划分。
点击展开后面4
  • 2 回答
  • 1 关注
  • 2153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信