社区
C语言
帖子详情
关于C语言%d的问题。。。
henroohenback6
2009-09-28 07:23:13
先上代码。。:::
int main( void )
{
int *i=NULL;
char c='a';
char *s="abc";
i=(int*)&c;
printf("%d\n",*i);
printf("%d\n",s);
return 0;
}
输出结果为::
318733153
4333604
不知道为什么?? 不应该是a和abc的吗??
请犀利的各位解答下。。。感激了。。。
...全文
4097
39
打赏
收藏
关于C语言%d的问题。。。
先上代码。。::: int main( void ) { int *i=NULL; char c='a'; char *s="abc"; i=(int*)&c; printf("%d\n",*i); printf("%d\n",s); return 0; } 输出结果为:: 318733153 4333604 不知道为什么?? 不应该是a和abc的吗?? 请犀利的各位解答下。。。感激了。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
39 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ken135790
2011-11-02
打赏
举报
回复
2楼,4楼正解
ffffhree123
2009-12-17
打赏
举报
回复
学习
「已注销」
2009-10-05
打赏
举报
回复
学习
密斯刘
2009-10-05
打赏
举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
%d是输出整数用的,要输出字符用%c,字符串用%s
[/Quote]
orz 这位大哥用VS2010了……
booksoon
2009-10-05
打赏
举报
回复
在计算机内存里,任何数据都是二进制的,没有什么字符、数字之分,完全靠%的标志来决定输出什么
即使是
char c = ‘a’;
用%c输出就是a。用%d输出就是a的ascii码
神经门首
2009-10-05
打赏
举报
回复
都有结果了
yeexiwang
2009-10-05
打赏
举报
回复
哈哈 我新手路过哦 不错
火山1009
2009-10-02
打赏
举报
回复
哇好多 人都给出了答案
玖伍叁柒
2009-10-02
打赏
举报
回复
已经有正解了
我就不多说了
shashenyidaoOCEAN
2009-10-02
打赏
举报
回复
d%是数字啊!!改成s% 就好了
Wizardo0
2009-10-01
打赏
举报
回复
嗯·~~学习了~~~
chenzhp
2009-09-30
打赏
举报
回复
[Quote=引用 2 楼 jackyjkchen 的回复:]
在计算机内存里,任何数据都是二进制的,没有什么字符、数字之分,完全靠%的标志来决定输出什么
即使是
char c = ‘a’;
用%c输出就是a。用%d输出就是a的ascii码
[/Quote]。
赵4老师
2009-09-30
打赏
举报
回复
在调试窗口里面打开汇编指令显示不就什么都知道了。
todo9351
2009-09-30
打赏
举报
回复
呵, 学习
历史哭泣
2009-09-30
打赏
举报
回复
你自己看看为什么,运行一下
wotur
2009-09-30
打赏
举报
回复
答案太多了,我就直接接分了!
shuminwang2008
2009-09-30
打赏
举报
回复
第一个输出,输出的是地址i的十进制数,输出的有随机数,因为i是从char转换成int,就要扩展4个字节,这4个字节的值是随机的。
第二个输出,输出的是s的十进制地址值。
userlon
2009-09-30
打赏
举报
回复
char c='a'; // 一个字节
i=(int*)&c; // c的地址赋给i,并转换成整型地址,也就是多占了三个字节,会造成内存异常
printf("%d\n",*i); // 以整型值输出地址i处的值,也就是四个字节的值
printf("%d\n",s); // 以整型值输出地址s处的值,也就是四个字节的值
shuminwang2008
2009-09-30
打赏
举报
回复
把第一个%d改成%c
把第二个%d改成%s
feliciaskiy
2009-09-30
打赏
举报
回复
[Quote=引用 9 楼 jackyjkchen 的回复:]
引用 6 楼 henroohenback6 的回复:
我就想知道得到为什么那个结果。。。第一个貌似像随机数。。。而第二个为什么结果是地址??编译器是怎么处理这个过程??哪位哥能回答我??
第一个之所以是随机数,那是因为32位的int取了8位char的地址,位数不足自然要取后面更多位,后面的数据是未定义的
第二个你获得的就是s串的首位地址
[/Quote]
同意,讲得很清楚~
加载更多回复(20)
Windows游戏编程系列之6:D3D编程基础及游戏开发实战
我将带领大家认真学习D3D的系列编程,从窗口开始,到GDI、到D3D、到三维场景、纹理映射、光照与材质、顶点与索引、Alpha混合、深度测试等。大家在学习中要多总结分析、遇到不会的
问题
要多问、多交流。具体的内容包括:D3D开发环境的搭建与配置、Windows窗口与消息、D3D编程基础、D3D的顶点缓存与索引缓存、 D3D三维世界之四大变换、D3D三维世界之光照与材质、D3D编程之纹理映射、D3D编程之Alpha混合技术、D3D编程之深度测试与Z缓存、D3D编程之三维粒子系统以及DirectInput鼠标与键盘等。
【
C语言
初阶】
C语言
%(%d,%c...)
C语言
%(%d,%c...)
C语言
%d%c%f
C语言
中的格式字符 %d是用来输出十进制整型数据的实际长度输出; %c是以字符形式输出,只输出一个字符; %f是以小数形式输出单、双精度度数,隐含输出6位小数。 %c 单个字符 %d 十进制整数(int) %ld 十进制整数(long) %f 十进制浮点数(float) %lf 十进制浮点数(double) %o八进制数 %s 字符串(char) %u 无符号十进制数(D...
c语言
中%d %%d %%%d和\\%d的区别
1、%d,表示按整型输出后面给出的变量的值。 2、%%d ,这就会被拆成两部分看待,一是“%%”在
C语言
中就是输出一个“%”,而是“d”就是一个普通字符,所以当“%%d”在一起时,其含义就是输出“%d”这两个字符。 3、%%%d ,3个%在一起,进行拆分的话,%%代表一个“%”字符,后面的%d又代表整型输出变量的值,所以当“%%%d”一起时,其最终含义就是输出一个字符%号再接着按整型输出变量的值。
C语言
中,%是转义符,也就是和%一起出现的后面的内容会转义后输出 例子: int i=4;printf("%d
C语言
% x的作用,关于
c语言
%#X意思大全
【导读】
c语言
%#X是什么意思,下面就是语录说小编整理的唯美句子,来看看吧!在printf函数打印格式中,%X是以十六进制打印,并且a~f打印出来的是大写的A. B. C. D. E. F如果是%#X,则会在打印的十六进制结果前面加上0X
c语言
中~x是什么意思在
C语言
中,~x代表的意思是按位取反的意思。使用~进行按位取反时,将某个数x的二进制的每一个bit取反即可得到~x的值。如~0x37,即~(...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章