夏夜寂寞轻注销对《The C Programming Language》的笔记(4)

夏夜寂寞轻注销
夏夜寂寞轻注销 (遠回りしている)

读过 The C Programming Language

The  C Programming Language
  • 书名: The C Programming Language
  • 作者: Brian W. Kernighan/Dennis M. Ritchie
  • 副标题: -
  • 页数: 274
  • 出版社: Prentice Hall
  • 出版年: 1988-4-1
  • 第6页
    As an specific example, on the UNIX operating system you must create the program in a file whose name ends in ".c", such as hello.c, then compile it with the command
    cc hello.c
    If you haven't botched anyting, such as omitting a character or misspelling something, the compilation will proceed silently, and make an executable file called a.out. If you run a.out by typing the command
    a.out
    it will print
    hello, world
    On other local systems, the rules will be diiferent; check with a local expert.

    1. 需要注意的是,在UNIX系统命令行中运行a.out需先指明文件路径,如Desktop/a.out,若文件已在该目录下则需输入指令./a.out;

    2. 还有一条常用于Linux系统的编译指令:$ gcc [programName] -o programName。经测试,mac终端也可以运行此指令进行编译。

    2019-09-18 17:21:58 1回应
  • 第48页

    虽然负数转二进制的应用并不常见,但还是补充一下。负数的二进制表示用此公式:-x = ~x + 1,即(1)求对应正数的二进制表示->求(1)的补码->(2)的结果加1。

    e.g. 3的二进制表示是00000011->~3为11111100->~3+1为11111101,即-3的二进制表示。

    关于此思路,有一篇内容更完整的博文:https://blog.csdn.net/github_39363510/article/details/77160829

    另外一种理解有些tricky,即-n的二进制表示与~(n-1)等同。

    P.S. -0的二进制表示为00000000,也可理解为11111111+1。

    2019-09-09 16:33:07 回应
  • 第28页

    注意,如今库已经支持API getline(&buffer,&size,stdin),运行书中所给代码会因为已存在原生API和arguments个数不符而报错。改动书中getline的函数名称即可解决这个问题。

    2019-09-10 17:21:36 回应
  • 第100页
    If one is sure that the elements exist, it is also possible to index backwards in an array; p[-1], p[-2], and so on are syntactically legal, and refer to the elements that immediately precede p[0].

    不保证所有运行环境都允许此类行为。在mac终端上,这种逆向读取array元素的行为会产生警报,而且会出现预料之外的结果。

    warning: array index -1 is before the beginning of the array[-Warray-bounds]

    2019-09-18 16:55:29 1回应