当前位置 博文首页 > 知且行的博客:关于C语言学习中一些细节和疑惑的记录

    知且行的博客:关于C语言学习中一些细节和疑惑的记录

    作者:[db:作者] 时间:2021-08-20 09:50

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

    ?

    ?

    ?

    ?

    cs