• Pushsadfc
    置顶
    2021-12-23
    作者大大,你关于函数是如何被调用的,我想了解更多,应该去看哪些书籍嘞。还有您有哪些好的c语言底层书可以推荐嘞

    作者回复: 关于函数调用细节,我们在第 5 和 6 两讲中有介绍的。 相关的书其实有很多哈,比如: 《CSAPP》 《Low Level Programming》 《Modern C》 《X86/64 体系探索与编程》 其他的也可以在比如 Oreilly 上搜一搜哈,它们虽然不是专门讲 C 语言底层的内容,但都是有一定关系的。推荐多参考几本,然后就能找到共通点了。

    
    3
  • sugar
    置顶
    2021-12-18
    挺有意思~ 我记得在本科学计算机体系结构时,教科书上对补码的定义是先取反码然后+1。于是当我见到一个int在内存中的布局时我会用上述计算步骤进行逆向操作得到原码再算出人类习惯的十进制数。 在这篇专栏里我才知道原来还有 负权重位 这么一说 是完全另外一种计算方式 得到的结果是一样的 哈哈 是个有趣的数学现象
    共 1 条评论
    24
  • 一步
    置顶
    2021-12-09
    我在 mac 环境下 可以使用 const 修饰的只读变量来指定数组长度和 switch case 的值,正常运行了 Apple clang version 13.0.0 (clang-1300.0.29.3) Target: arm64-apple-darwin21.1.0 Thread model: posix

    作者回复: 这是一个很好的发现! 你可以试着在编译指令中添加 “-pedantic -Werror” 这两个选项,然后看看结果会有什么不同?实际上 Clang 在某些情况下会采用名为 “gnu-folding-constant” 的 GNU 扩展来编译 C 代码,但这并不是 C 标准中的内容。

    共 4 条评论
    12
  • jack123
    置顶
    2021-12-08
    typedef unsigned int size_t; 具体类型还要看目标机器上的定义, 不过在一般机器上,size_t被定义成无符号整型 在一些常见C语言的函数的返回值是size_t 比如strlen,sizeof, 值得注意的是,在STL容器做遍历的时候,它里面size()方法返回值也是size_t类型的

    作者回复: 这个回答很棒!

    共 2 条评论
    13
  • 纳兰容若
    2022-04-06
    老师您好 有一个问题请教一下 0 0001 001 为什么表示 0.017578 (图中)

    作者回复: 这个按照 IEEE-754 的组成结构来计算就可以。这里符号位 0 表示正数;指数位为 1,偏置量为 7,对应的阶码为 1 - 7 = -6;尾数为 0.125。所以对应的浮点数为:1.125 * 2 ^ (-6) = 0.01757812。这里 Rounding 了一下,所以变成了 0.017578。

    
    4
  • 柴
    2021-12-08
    size_t:一般用于指示数据类型的大小,无符号整型

    作者回复: 正解!

    共 2 条评论
    3
  • 龍蝦
    2022-02-27
    老师,这节提到几次内联,这里的内联跟内联函数的内联是否相同?

    作者回复: 是一样的哈,你可以按照同样的方式理解。就是把值、函数体,直接放到之前通过变量,或函数调用间接引用的地方。

    
    2
  • 石天兰爱学习
    2022-01-06
    #include<stdio.h> int main(int argc, char *argv[]) { int test_num1 = -10; unsigned int test_num2 = test_num1; printf("%d\n",test_num2); } 请问老师,我这个程序的结果为啥是-10,而不是一个正值呢? (Windows下VS编译环境)

    作者回复: 因为位模式不变,但这里 printf 中的格式占位符应该用 “%u” 哈。%d 对应的是 signed decimal integer。

    共 2 条评论
    2
  • 无
    2022-09-30 来自广东
    隐式转换有些什么规则或特殊情况么?能否列以下? 感觉这块很坑阿

    作者回复: 具体规则很多,可以参考这里:https://en.cppreference.com/w/c/language/conversion

    
    1
  • Geek_fbce70
    2021-12-20
    常量如何定义,这节里没有介绍啊

    作者回复: 实际上,在代码中用到的字面值就是常量哈。在 C 语言中,常量并没有其他的定义方式。

    共 4 条评论
    1