文档详情

关于C语言中输入输出函数的类型转换.doc

发布:2017-11-01约4.64千字共8页下载文档
文本预览下载声明
关于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.000000 1.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
显示全部
相似文档