关于C语言学习中一些细节和疑惑的记录

  1. 关于这两个式子输出结果的解释  

       这个结果查询某度后无果,打算自己总结。

    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型数据速度相差无几。

发布了90 篇原创文章 · 获赞 36 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_37716512/article/details/103929706