请问程序这样写结果会是什么?

DouBreak 2008-11-18 03:26:28

#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}


请问程序这样写结果会是什么?我运行的结果为什么会是x?两台机器结果都一样!
...全文
200 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qt_freelancer 2008-11-25
  • 打赏
  • 举报
回复
常量地址的最后两位十六进制数
如 0x58 = 88D ,而字符'X' 的ascii 码也是 88,所以显示 X 字符了
多米蒂尔 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ztz0223 的回复:]
C/C++ code
#include <stdio.h>
int main ()
{
char c[]="ichina";
printf("%d, %c \n",int(c),int(c));
}



再来算
对应的地址的一个值按照char型输出,对256取余就是输出的一个值,不一定是x
[/Quote]
这个说的应该是对的

#include <stdio.h>
#include <stdlib.h>
main ()
{
char c[]="china";
char d[]="china";
printf("%c %x\n",c,c);
printf("%c %x\n",d,d);
system("pause");
}
结果:
x 12ff78 //16进制 12ff78%256=78 为x的ASCII码
p 12ff70 //16进制 12ff70%256=70 为p的ASCII码
坐看昀起 2008-11-20
  • 打赏
  • 举报
回复
在vs2005里面
#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}
输出结果:x

在vs2003中的 vc++6.0里面
#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}
输出结果:x
沭水河畔 2008-11-19
  • 打赏
  • 举报
回复
楼主看看这个结果:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
char c[]="China";
printf("%c\n%X",c,c);
system("PAUSE");
return EXIT_SUCCESS;
}

结果:
`
22FF60

下面的是十六进制表示的地址。
dingyin44 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ztz0223 的回复:]
C/C++ code#include <stdio.h>
int main ()
{
char c[]="ichina";
printf("%d, %c \n",int(c),int(c));
}




再来算
对应的地址的一个值按照char型输出,对256取余就是输出的一个值,不一定是x
[/Quote]
取决于c的地址值的低8位
MAlice 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 exploit0day 的帖子:]
C/C++ code
#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}



请问程序这样写结果会是什么?我运行的结果为什么会是x?两台机器结果都一样!
[/Quote]
如果你只想输出第一个字符,可以是printf("%c \n",×c);或者printf("%c \n",c[0]);
毛员外 2008-11-18
  • 打赏
  • 举报
回复
这个好无聊哦
那这个又是虾米结果勒??
#include "iostream.h"
main(){
for(;;){{}{cout<<"无聊"<<endl;}{}{}}


就呆在云上 2008-11-18
  • 打赏
  • 举报
回复
#include <stdio.h>
int main ()
{
char c[]="ichina";
printf("%d, %c \n",int(c),int(c));
}


再来算
对应的地址的一个值按照char型输出,对256取余就是输出的一个值,不一定是x
The_facE 2008-11-18
  • 打赏
  • 举报
回复
这样输出结果是无法确定的。

要输出首字符就需要对指针加*运算符,要输入字符串就要格式为%s。
lsldd 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 exploit0day 的回复:]
引用楼主 exploit0day 的帖子:
printf("%c \n",c);
这样写结果为什么是X
[/Quote]
你这是把china字符串的地址格式化成字符输出了,当然是乱码。
至于为什么不同机器结果一样,这是编译器的问题,没必要深究。
xhs_lh04 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 exploit0day 的回复:]
引用楼主 exploit0day 的帖子:
C/C++ code
#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}


请问程序这样写结果会是什么?我运行的结果为什么会是x?两台机器结果都一样!



这样写结果为什么是X
[/Quote]
因为c是地址,用字符输出会是乱码,不一定是X
fox000002 2008-11-18
  • 打赏
  • 举报
回复
执行多次,出现了

.
>
n
N
xhs_lh04 2008-11-18
  • 打赏
  • 举报
回复
printf("%s \n",c);
DouBreak 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 exploit0day 的帖子:]
C/C++ code
#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}



请问程序这样写结果会是什么?我运行的结果为什么会是x?两台机器结果都一样!
[/Quote]


这样写结果为什么是X
lsldd 2008-11-18
  • 打赏
  • 举报
回复
显示字符串用:
#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%s \n",c);
}


显示首字符用

#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}
lbh2001 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 exploit0day 的帖子:]
C/C++ code
#include <stdio.h>
main ()
{
char c[]={"china"};
printf("%c \n",c);
}



请问程序这样写结果会是什么?我运行的结果为什么会是x?两台机器结果都一样!
[/Quote]

不一定是x,在别的机器上可能是别的结果
用printf("%s \n",c);
wuyu637 2008-11-18
  • 打赏
  • 举报
回复
#include <stdio.h>
void main ()
{
char c[]={"china"};
printf("%c",*c);
}

69,371

社区成员

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

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