- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于C语言中输入输出函数的类型转换
关于C语言中输入输出函数类型转换的实验和结论
实验一:
#include stdio.h
int main()
{
double d;
scanf(%f,d);
printf(%f\n,d);
scanf(%lf,d);
printf(%f\n,d);
return 0;
}
输入都是1
输出为:-92559604281615349000000000000000000000000000000000000000000000.0000001.000000
(double类型的对应输入要使用lf才能正常录入。输出的时候,double和float均可使用%f正常输出。)
实验二:
#include stdio.h
int main(){??? float f;??? double d;??? scanf(%f,f);??? scanf(%lf,d);??? printf(%f\n,f);??? printf(%f\n,d);??? return 0 ;}
输入都是1
输出都是1.000000、
实验三:
#include stdio.h
int main(){??? double d;??? scanf(%f,d);??? printf(%f\n,d);??? printf(%f\n,float(d));??? printf(%f\n,*(float*)d);??? return 0 ;}
输入1,
输出分别为
-92559604281615349000000000000000000000000000000000000000000000.000000
-92559604281615349000000000000000000000000000000000000000000000.000000
1.000000
对变量进行强制类型转换不可,对变量指针转换却可以。
传给scanf 的都是变量的地址,我们当然就要用不同的格式字符串来区分了。#include stdio.h
int main()
{
short a;
unsigned b;
int c;
a=32767;
printf(%d\n,a);
b=-100;
printf(%u\n,b);
c=c;
printf(%d\n,c);
return 0;
}
输出:32767
4294967196
99
当a=32798时,输出为-32738
a=62798,输出为-2738
a=92798,输出为27262
5.
#include stdio.h
int main()
{
int a,b,c;
a=getchar();
b=getchar();
c=getchar();
printf(a=%db=%d\n,a,b,c);
printf(a=%db=%cc=%c\n,a,b,c);
return 0;
}
输出结果a=49b=10c=97
a=1b=
c=a 其中的enter也被当作了字符输入。!!!能帮我打印个东西不?
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.#include stdio.h
int main()
{
int a,b,c,d,av;
printf(Input a,b,c,d:);
scanf(%d,%d,%d,%d,a,b,c,d);
av=(a+b+c+d)/4.0; /*类型转换*/
printf(av=%f\n,av);
return 0;
}
不管输入为何,输出都是0.000000
当把%f改为%d时,输出正常,为整数
阅 读了 scanf/printf 的手册 (man 3 printf),似乎可以这样来理解其转处理机制:scanf 中类型转换符是给 scanf 函数指出那个相应的输入指针的类型,%d 是 int *, %c 是 char *, %x 是 unsigned int *,%f 是 float *, %lf 是 double *;而 prin
文档评论(0)