读书人

问一些关于c语言的有关问题

发布时间: 2013-07-01 12:33:04 作者: rapoo

问一些关于c语言的问题
初学,莫笑

1.getchar()函数是什么作用,为什么有时候可以暂停,有时候不行
2.scanf与scanf_s之间的区别是什么???
3.“=”的具体意义。为什么会将double类型转化为float类型???
4.char name[4]为什么可以在4个memory cells中储存4个以上的字符???
5.e-计数法与E-计数法的区别

谢谢了啊 C
[解决办法]
1 getchar()从标准输入(stdin)的输入缓冲区中读取一个字符,如果输入缓冲区空时等待用户输入。当输入缓冲区中有字符时不会暂停。一般我们输入都是以行为单位的,输入换行后把一行字符送入输入缓冲区。而格式化输入指令在所有数据都输入完成后,不会去处理留在缓冲区中的'\n',这时调用getchar()就不会暂停。想用getchar()实现暂停效果是很麻烦的,最好还是用非标准的控制台函数,<conio.h>中的_get_ch();

2 scanf是从标准输入(stdin)进行格式化输入,scanf_s是从一个字符串中进行格式化输入。前者用于接收用户输入,后者通常用来解析字符串。

3 =操作符用右操作数的值去设置左操作数,但他不会改变左操作数的类型。如果左操作数和右操作数不是同一种类型,就会发生类型转换。
一般来说,不要把较长的整数赋值给较短的整数,不要把较长的浮点数赋值给较短的浮点数,不要把浮点数赋值给整数。
[解决办法]
1.getchar()函数是什么作用,为什么有时候可以暂停,有时候不行
getchar()函数从输入缓冲区读入一个字符,如果当前缓冲区没有字符,则等待输入一个字符

2.scanf与scanf_s之间的区别是什么???
前者是语言标准规定的格式化输入函数,后者是微软的安全版

3.“=”的具体意义。为什么会将double类型转化为float类型???
赋值,将右边的表达式结果赋给左边的变量
如果右边是double左边是float,则自动将double转化为float,如果右边是float左边是double,则自动将float转化为double,如果右边是自定义类型A左边是自定义类型B,编译器报错“老子不知道该怎么转化,程序员去死”

4.char name[4]为什么可以在4个memory cells中储存4个以上的字符???
4字节内存空间只能存储4字节字符,你可以从name出发访问整个内存,但访问修改那些不属于你的内存后果自负

5.e-计数法与E-计数法的区别
没听说过这两个中的任何一个
[解决办法]
getchar()函数是什么作用,为什么有时候可以暂停,有时候不行

从标准输入流中读取一个字符,如果标准输入流中有东西,自然可以读取并返回,否则“暂停”等待输入一些东西到标注输入流中

scanf与scanf_s之间的区别是什么???

scanf_s是scanf的security(安全)版本,详情请查阅MSDN

“=”的具体意义。为什么会将double类型转化为float类型???

=就是assignment,即赋值,而double类型转化为float类型属于类型转换(cast),与=无关。

char name[4]为什么可以在4个memory cells中储存4个以上的字符???

内存是连续的,越界是允许的,后果是自负的。

e-计数法与E-计数法的区别

10e3和10E3?没有区别,都是1000
[解决办法]
上边专家解释的很不错,我再补充一下吧:
1、getchar()是从缓冲区里取出数据(读出来后就是char类型的数据)。缓冲区形象来说就是一个池子,存储数据的池子。如果缓冲区里没有数据,getchar()就要等待,提示用户输入,即往缓冲区中添加字符,等缓冲区有字符了后,getchar()就从缓冲区里获取一个字符,完成它的操作;如果缓冲区里有数据,那getchar()就直接获取一个字符,完成它的操作,不在提示用户输入。这样,也就出现了你说的情况。
2、不太了解。
3、=即赋值。你说的是一种类型转换,什么是类型转换?就是不同类型的数据相互转换合适的类型。不同数据是按照不同格式来存储的,同时也是按照不同格式来读取、解析的。从数据存储来看,类型转换是数据存储格式、存储大小的相互转换。比如int转换为float,int数据在存储时是按照补码的形式存储,而float是按照符号位、阶码、尾码的形式存储【在这里不详细讲】,所以int转换为float,就是要把int类型的存储格式转换为float的存储格式,这样才能够读取为float型。为什么要类型转换呢?为了计算的准确,double类型比float类型存储的位数多、数据精度高,所以两种类型出现在同一个计算中,为了计算准确,在默认情况下,就把float型转换为double型。


4、不清楚。
除了第二问之外,其余都与计算机组成原理有关系,建议借一本相关的书籍或资料看下。
嗦了半天,希望有帮助。

读书人网 >C++

热点推荐