当前位置 博文首页 > 绍德:C语言阶段——需要注意的小细节

    绍德:C语言阶段——需要注意的小细节

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

    ?

    持续更新。。。。。。。

    ?

    ?

    ?

    ?

    ?

    1. ? ? ? int? a;

    ? ? ? 定义全局变量 ? ? ? ? ? ? ? ? 如果不给初值??? 系统自动给a赋0

    ?? 但定义局部变量时 ? ? ? ? ? ? 如果不给初值 ?? 就是一个随机值

    ?

    ?

    2.scanf()函数 里? 别放多余的东西?? 就放一个标准输入格式符就好

    ??????????????????? 试一试:
    ??????????????????????????????? scanf("%f\n", &temp1);
    ??????????????????????????????? scanf("%lf\n", &temp2);
    ?????
    ?????????????????????就知道了

    ?

    ?

    ?

    3.逗号表达式作为一个整体,从左到右逐个计算;它的值为最后一个表达式的值

    ????逗号表达式的优先级在所有运算符中最低

    ?

    ?

    ?

    ?

    ?

    4.赋值表达式? =????*= ?? -= ?? /=????? 运算顺序是从右往左运算

    ?

    ? ? ? ? ? ? ? ? ? ? 例如? int temp = 2;? if( x= 2 * temp = 3 ) …… ? 首先算2 * temp 得常数 4, ? 4 = 3? 语法错误? x仍然没有赋值

    优先级:! ?? 算术符 ? ? 关系符 ? ? ? ? && ? ? ?? || ? ? ? ?? 赋值 ? ? ? ? ? ? 逗号 ??

    5.? ? 假设a 的初值为2 ? 运算完? a 的值为多少? ? ? a 为 2 原因: 第一个if ? 没有加 {} ? 没有标明作用域

    ?

    ?

    ?

    ?

    ?

    6. ? Ubuntu启动出错? 启动不了? 可以试一下 删除下面两个文件夹

    ??

    ? ?? 至于为什么? 我不知道。。 ? 大家也可以评论告诉我。。。

    ?

    ?

    ?

    ?

    ?

    7.? C语言中 ? ? ? ? 0 == '\0' == NULL ? ? ? !=????????? '0' == 48

    ?

    ?

    ?

    ?

    ?

    8. ? '\n' sizeof('\n') 的结果为4? ==> 为什么? ?? '\n'? 字符型占用一个字节没错 ??

    ? ? ? 但是'\n'的值是整型的ASCAII值 10? 所以? sizeof(10)? 结果为 4

    ?

    ?

    ? ? ??sizeof() ? ? ? ? ? 虽然长得像函数 ? ? 但其实 ? ? ? ? ?? 是运算符

    ?

    ? ? ? typeof( '1' ) ?? 同理? 他代表的类型并不是char ? ? 而是 int? 原因就是函数

    ? ? ? 处理的时候把 ?? '1'? 转换成整型数字 49? 处理了

    ?

    ?

    ?

    9.前置++ ? ?? 后置++

    ?

    ?

    ?

    10.等价的表达式

    ?

    ?

    ?

    ?

    11.数据在内存中的储存形式 ?? 整型 : ? 数据的补码存储 ? ? ? ? ?? 浮点型: ?? 数据的补码存储

    ?

    ?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 字符型:? 按字符的ASCII码存储 ? ?? 有疑问看第8点

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有符号:按数据的补码存储

    ?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 无符号型:按数据的源码存储

    ? ? 有符号数据的表示 ? ? ? ? ? ? ?? 最小值在内存中的存储 符号位为 1 其他位为0
    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 最大值在内存中的存储 符号位为 0 其他位为1

    ?

    12. ? ? ?"\\\065a,\n"

    ? ? ? ? ? 字符串长度为? ? ? ? 5

    分析下:"\\\065a,\n"第一个字符\\,第一个\表示转义,
    第二个\代表该字符第二个字符\065,八进制表达(有点凑巧啊)
    第三个字符a
    第四个字符,
    第五个字符\n
    所以答案是5

    ?

    13.
    %s打印字符串 ?后接地址 ? ? %c打印字符 ?接值 ? ? ? ??

    ?? ??? ??? ?char ch[] = "123456"; ? //系统给常量ch指向的变量数组? 分配内存空间存 字符串"123456"?
    ?? ??? ??? ?char *str = "abcdef";?? ?//系统给变量str 分配内存空间存 常量字符串"123456"的地址

    ?? ??? ??? ?注意:变量的值可以变 ? 但是常量的值不可改变
    ?? ??? ??? ??? ? ?也就是说 变量数组 的值"123456"可以变 ? ? ? ? ? ? ? ? ? ? ?

    ?? ??? ??? ??? ??? ??? ? ? 变量str的值(存放的地址)可以变成另外的地址

    ? ? ? ? ? ? ? ? ? 但是常量指针ch的指向不可更改 ?? 常量字符串"abcdef"不可更改

    ?

    14.

    ?

    15.

    ?

    16.

    ?

    17.

    ?

    18.

    ?

    19.

    ?

    20.

    ?

    cs