1.数据类型及源程序结构
- TinyC 中变量只有 int 一种数据类型(32位)
- 函数的返回值可以声明为 int 和 void 两种类型,但编译器会自动为 void 函数返回一个 int 值
- 不支持全局变量,只有局部变量,变量须先声明再使用
- 变量声明必须放在函数体的最前面,不支持声明变量的时候赋初值
- 不支持函数原型声明,函数声明必须和定义在一起,函数无需先定义再使用
- 整个程序必须有一个不带参数的 main 函数,此为程序的入口
- “//...” 以及 “#...” 为单行注释
- 不支持 #include 等预处理命令,不支持多行注释
- 只有赋值语句、函数调用语句、控制语句( if 语句)和循环语句( while 语句)
举个例子:
int main() {
int a, b;
int c, d; // 变量声明必须放在函数体的最前面
a = 0;
...
}
void func1(int a, int b) {
...
}
...
2.数据运算
支持这些逻辑运算符:+, -, *, /, %, ==, !=, >, <, >=, <=, &&, ||, !, -
注意:
- 最后一个 “-” 表示 “反号” ,应和 “减号” 区别开来
- TinyC 不支持 ++ 和 - -
- 赋值语句只能单独使用,不能嵌套!
3.输入及输出
输入1:
print("x = %d, y = %d", 2, 3); // 输出: x = 2, y = 3
//自动换行,仅支持 %d 格式化
输入2:
x = readint("Please input an integer");
//readint 命令先打印提示信息,再从标准输入中读取一个整数并返回
//必须要有人接受它的返回值
3.控制及循环语句
- TinyC 仅支持 if/else 和 while 语句, while 循环中支持 continue 和 break
- if/else 和 while 的执行体必须用花括号括起来。
- 不支持 for 、 switch 、 goto 等其他语句
4.函数调用
支持函数调用,支持递归
5.关键字
void, int, while, if, else, return, break, continue, print, readint
6.应用以及gcc使用
来运行以下代码
#include "for_gcc_build.hh" // only for gcc, TinyC will ignore it.
int main() {
int i;
i = 0;
while (i < 10) {
i = i + 1;
if (i == 3 || i == 5) {
continue;
}
if (i == 8) {
break;
}
print("%d! = %d", i, factor(i));
}
return 0;
}
int factor(int n) {
if (n < 2) {
return 1;
}
return n * factor(n - 1);
}
第一行的 #include “for_gcc_build.hh” 是为了利用gcc来编译该文件的,TinyC 编译器会注释掉该行。
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
void print(char *format, ...) {
va_list args;
va_start(args, format);
vprintf(format, args);
va_end(args);
puts("");
}
int readint(char *prompt) {
int i;
printf(prompt);
scanf("%d", &i);
return i;
}
#define auto
#define short
#define long
#define float
#define double
#define char
#define struct
#define union
#define enum
#define typedef
#define const
#define unsigned
#define signed
#define extern
#define register
#define static
#define volatile
#define switch
#define case
#define for
#define do
#define goto
#define default
#define sizeof
此文件中提供了 print 和 readint 函数,另外,将所有 C 语言支持、但 TinyC 不支持的关键词全部 define 成空名称,这样来保证 gcc 和 TinyC 编译器的效果差不多。
- 打开终端
-
使用nano编辑器来创建文件:nano tinyc.c 在
nano
中粘贴您的代码后,按Ctrl+X
保存并退出。 - 使用nano编辑器来创建文件:nano for_gcc_build.hh 在
nano
中粘贴您的代码后,按Ctrl+X
保存并退出。 - cd 打开相关路径(会给提示) 语句:cd 路径
- 语句:ls 查看是否存在文件
-
输入 $ gcc -o tinyc tinyc.c $ ./tinyc
最后会输出:
1! = 1
2! = 2
4! = 24
6! = 720
7! = 5040
注意:如果系统么有安装gcc,那根据不同的系统进行网上查找安装教程。
提示1:在ubuntu上
- 打开终端。
- 运行以下命令更新软件包列表:`sudo apt update`
- 安装gcc和相关的构建工具:`sudo apt install build-essential`
- 验证gcc是否成功安装:`gcc --version`
提示2:在debian上
$ sudo apt-get install build-essential