摘要: 在 C 语言层面除了写法以外没什么区别。 int a = 5; a == 0 ? puts("x") : puts("z"); if (a == 0) { puts("x"); } else { puts("z"); } 在汇编语言层面上有一些区别,if 倾向于使用条件控制转移(j 系列)命令,三元 阅读全文
posted @ 2022-10-27 11:49 Violeshnv 阅读(32) 评论(0) 推荐(0) 编辑
摘要: Shell函数 #!/bin/bash 定义 在被使用之前,函数必须已经被定义 如果函数名重复,后一个函数会覆盖前一个函数 function foo { echo "foo" } # 也可以不写function关键字 bar { echo "bar" } 参数 运行函数就如同运行一个脚本,它也具有参 阅读全文
posted @ 2022-10-27 11:49 Violeshnv 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 因为用 Verilog 会有颜色显示,所以用的 Verilog。 记录一下 Natural Number Game 的答案,好久以前做的,但没做完。 Tutorial world $$ \text{example1}:xy+z=xy+z $$ lemma example1 (x y z : myna 阅读全文
posted @ 2022-10-27 11:48 Violeshnv 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 无类型系统 本节为其他章节作引。 无类型算数表达式 一门语言需要语法、语义、语用来构成。现在以无类型算数表达式这个非常简单的语言开始探讨,我们将明确它的语法和语义来充分了解这门语言。 语法 无类型算数表达式语言的语法中只包含 $true, false, 0, \operatorname{succ}, 阅读全文
posted @ 2022-10-27 11:48 Violeshnv 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 前一篇类型系统与程序语言——简单类型 子类型和递归类型 子类型 Subtyping 定义 如果没有子类型,那么 $(\lambda r:\lbrace x:Nat\rbrace.\ r.x)\ \lbrace x=0,y=1\rbrace$ 在语法上是无法判断出类型的,因为形参和实参的类型不匹配。为 阅读全文
posted @ 2022-10-27 11:48 Violeshnv 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 简单类型 经过上一篇类型系统与程序语言——无类型系统的学习,已经对 Lambda 表达式初窥门径,但在使用时却会产生一些问题,比如可能产生 stuck 语句。上一章定义链表时用到了许多参数,但是如果不知道上下文,很难直接了解每个参数的含义。这时候一个类型系统就可以帮助我们规避这种错误和麻烦。 基本上 阅读全文
posted @ 2022-10-27 11:47 Violeshnv 阅读(31) 评论(0) 推荐(0) 编辑
摘要:  C语言的单引号问题 单引号的原理 C语言的单引号实际上时将' '内的字符转化为ASCII码对应的整型值,并且在存储时占据一个字节,即sizeof(char) // 第一个例子 int main() { char ch; ch = '?'; printf("%d, %c", ch, ch); / 阅读全文
posted @ 2022-10-27 11:46 Violeshnv 阅读(69) 评论(0) 推荐(0) 编辑
摘要: C语言结构体中的零长数组 实例 struct A { int len; int var[0]; }; struct B { int len; int *var; } 其中,结构体A使用了零长数组,结构体B用了指针。 为什么要用零长数组 我归纳了以下三点原因: 节约空间 在int和指针占4字节的机器上 阅读全文
posted @ 2022-10-27 11:46 Violeshnv 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 问题 #include <dirent.h> struct dirent *d; d->d_name; IDE 提示时出现如下字样 头文件中则是 struct dirent { __ino_t d_ino; __off_t d_off; unsigned short int d_reclen; un 阅读全文
posted @ 2022-10-27 11:45 Violeshnv 阅读(22) 评论(0) 推荐(0) 编辑