鱼C论坛

 找回密码
 立即注册
查看: 1629|回复: 5

[已解决]大神帮忙看看,谢谢!

[复制链接]
发表于 2017-7-22 21:13:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>

void main()
{
        char string[]="I love Fishc.com!";

        printf("%s\n",string);
}

为什么是%s能输出 I love fishc.com! ?
而%c输出的是4?
什么原因?
最佳答案
2017-7-23 00:32:01
4楼正解,string是首元素I的地址,用%s的时候他约定输出字符串,但是当%c的时候他就把string当成一个数值来算了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-22 21:50:16 | 显示全部楼层
因为字符串就是用 %s 呀
你想问的是 为什么用 %c 输出的是 4 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-22 22:34:17 | 显示全部楼层
人造人 发表于 2017-7-22 21:50
因为字符串就是用 %s 呀
你想问的是 为什么用 %c 输出的是 4 吗?

是不是因为string占用4个字节存放string对应的cs/ip?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-22 22:49:37 | 显示全部楼层
string 是数组名,是数组首元素的地址
用 printf("%X\n",string); 可以查到此地址的16进制形式为:18FF34
二进制形式为:0000 0000 0001 1000 1111 1111 0011 0100
最低1个字节为:0011 0100
对应十进制 52,是字符4的ASCII码。
因此,用 printf("%c\n",string);  结果是4。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-22 23:18:36 | 显示全部楼层
楼上解析得很对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-23 00:32:01 | 显示全部楼层    本楼为最佳答案   
4楼正解,string是首元素I的地址,用%s的时候他约定输出字符串,但是当%c的时候他就把string当成一个数值来算了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 10:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表