当前位置 博文首页 > 知且行的博客:关于C语言学习中一些细节和疑惑的记录
? ? ?? 这个结果查询某度后无果,打算自己总结。
? ? 2.C语言中变量声明后该不该赋初值?
声明一个变量不赋初值后会是一个随机值,因为声明变量后会分配一定的内存空间,如果不赋初值的话,内存中是什么值,该变量就会是什么值。若变量在后续程序中没有经过赋值而直接使用,则结果不一定正确。若变量在后续程序中,经历了赋值操作,则输出结果就是正确的。为了编程规范,一般在声明变量后就赋一初值。
3.double 类型数据输入为%lf
4.关于c语言中强制类型转换的问题
图中所指语句整数除以浮点数,其结果应是浮点数,但赋值给int类型变量,按理说损失精度,这在C++,java中编译不通过,需要进行强制转换,但这在C语言中是允许的。
5.关于scanf的一些细节问题
scanf有时候会被忽略执行,这是因为输入缓冲区的问题,请参看下面这位博主的文章
https://blog.csdn.net/HNAKXR/article/details/81047391
利用
fflush(stdin);/*清除输入缓冲区*/
getchar();/*吃掉回车*/
这两个内置函数解决此问题。
?
下面输入一个整数和一个字符,输入有空格和没有空格是有区别的:
scanf("%d %c",&i,&c);
scanf("%d%c",&i,&c);
输入有空格时读上空格才算读完,而没有空格就不会读空格。效果如上图所示。
?
6.关于优先级问题的记录
关系运算符比算数运算符优先级要低,但比赋值运算符优先级要高。
在关系运算符中,也有优先级之分,判断是否相等==和不相等!=的优先级低于其他,而连续的关系运算是从左到右进行的
7.goto的使用场景:
当需要跳出多重循环时,需使用goto语句;
?
在其他情况不推荐使用goto;
8.一个数字以0开头表示8进制,以0x开头表示16进制
? 八进制输出以%o输出,16进制输出以%x输出
9.float有效数字为7位,浮点数运算没有精度。
而且带小数点的字面量是double类型,float类型需要带f表明身份,例如1.23f
?
10.在整数运算时,用int就好,因为现代计算机一般为32位或64位,其一次便能处理一个int类型数据,所以现代计算机不存在short比int运算快的问题,而在浮点数运算时,可直接使用double类型进行计算,计算机有专门处理double类型数据的硬件,和float型数据速度相差无几。
?
?
?
?
cs