微笑向暖~ 发表于 2017-7-22 21:13:24

大神帮忙看看,谢谢!

#include<stdio.h>

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

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

为什么是%s能输出 I love fishc.com! ?
而%c输出的是4?
什么原因?

人造人 发表于 2017-7-22 21:50:16

因为字符串就是用 %s 呀
你想问的是 为什么用 %c 输出的是 4 吗?

丶忘却的年少o 发表于 2017-7-22 22:34:17

人造人 发表于 2017-7-22 21:50
因为字符串就是用 %s 呀
你想问的是 为什么用 %c 输出的是 4 吗?

是不是因为string占用4个字节存放string对应的cs/ip?{:10_277:}

无我的侠圣 发表于 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。

一只小章鱼 发表于 2017-7-22 23:18:36

楼上解析得很对{:10_279:}

人之初 发表于 2017-7-23 00:32:01

4楼正解,string是首元素I的地址,用%s的时候他约定输出字符串,但是当%c的时候他就把string当成一个数值来算了。
页: [1]
查看完整版本: 大神帮忙看看,谢谢!