From d912b937b39f239d59cb91894bf6a6d2cdbd37a1 Mon Sep 17 00:00:00 2001 From: 0xPoker Date: Sun, 18 Nov 2018 00:01:45 +0800 Subject: [PATCH 1/7] create c language file --- .DS_Store | Bin 0 -> 6148 bytes languages/.DS_Store | Bin 0 -> 6148 bytes languages/c_language.md | 23 +++++++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 .DS_Store create mode 100644 languages/.DS_Store create mode 100644 languages/c_language.md diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..54c79054c6da045300141292d3a6efb5d0007cb6 GIT binary patch literal 6148 zcmeHK(P|Sx6ur}?W;aF5gU~+ii{L{jsVyy1gf&eb0xIH)KB%<2Zb%olJ0ZI?#|q^lR1-_*&!m)8pXRrbs}=$jFlRSD~#LO zmu$_{aHCM~kaSKx+MxkuOWC%2HaQnpJedda9yBVeCKQp3nJ}|%NOEgH6yl6JRinaC1 z#`qDWOA^-*YNH%?@k-uo(rc>A1y0v?+ zdwPCxIe9yM_mQ>2{)i1y*$sm~;S+)@#Ca18vs7k%v@)|w52#DW)S*WdP^To_dt}T{ zjZ06Ed7s+!5V(U)IW952l^7dp8YL#FG%ae{Kg>-#h}Kp^0rQu1HdkXfb`(|ttH57W zfcFOv&gdJQX;fPW3UvhlR#2@BF@G#D$1~^~oM}W0OlT@lQ-!%=2u(-5XYzc5GmV-~ z!dyOt=~Nb`ThNWkz}8&0#<>QQb1JNLA!+^ znX`3iaD3K!@KZP&=gl-K3JP-^tALNKjABrEK AUjP6A literal 0 HcmV?d00001 diff --git a/languages/.DS_Store b/languages/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3853220540eecb02182ebc9a35d96265e26f3fb2 GIT binary patch literal 6148 zcmeHKyH3ME5S$B<5<`k~P`aeDL``Ewp`hjifIJkC0=7tkpmW1N@C$q&9{{tvN8~u6 zMG@MS_U0ZtcfL8x>jMx5tH~MA2hgPpwh|UQOvc5xtQC7Y#GrFzSm5q*UW`Zct!VGq zM+M~UIvC+rP7by6D@GiV*W#Rh`lZGi(8Czln3M5{8CJv@reu!o+>K}PKc(^##uaN` zCapSyF(35$N*$DZrjm0jZbpaWMs&icS1idW_+%L#FljK}8jQmRW66EIG&r9PP7lwx z=iCdb@Wfil6?d$qs=e1#<1}urfGgk%?2Q7<*<#%zLoZzcSHKlmD + +int main(int argc, char *argv[]) +{ + printf("hello world!\n"); + return 0; +} +``` + +上述例子可以看出,一段简单的C代码包含的各个部分(必须包含main函数) + +- `int argc, char *argv[]`用于取得命令行参数,针对命令行参数不同的电脑可能呈现不同的情况,有些时候第二个形参使用`TCHAR *argv[]`但是大部分时候使用的是`char *` +- 值得注意的一点是,取得的命令行参数一定是字符串,可以使用`atoi`、`atol`等函数进行一下转换 +- 在一个C语言文件中,不是一定得包含什么头文件,但是包含一些现成的头文件是有必要的,那会节省你很多敲代码的时间,但是又不是一定非得包含所有的头文件,那样会使你的程序在编译的时候时间较长 +- 头文件引用有两种形式,`#include `、`#include "test.h"`,区别在于尖角括号适用于选择要包含的文件不是当前文件夹的而是库里的,双引号用于包含同文件夹的 +- `return 0`从理论上说这个返回值是没用的,因为他是返回给系统的,但是在一些情况下可以通过捕获这个值查看程序本次运行的情况 \ No newline at end of file From 26361d82472b40397b0659e6e7909fc261cbbcaa Mon Sep 17 00:00:00 2001 From: 0xPoker <490694561@qq.com> Date: Sun, 18 Nov 2018 00:05:57 +0800 Subject: [PATCH 2/7] create c language file --- languages/c_language.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/languages/c_language.md b/languages/c_language.md index 626537e5..67e61803 100644 --- a/languages/c_language.md +++ b/languages/c_language.md @@ -1,7 +1,5 @@ # C 语言 -[TOC] - ## 基础语法 ```c From d10d3f72650f7ad1ffa9874b79638686efcb869b Mon Sep 17 00:00:00 2001 From: 0xPoker <490694561@qq.com> Date: Sun, 18 Nov 2018 19:20:26 +0800 Subject: [PATCH 3/7] create c language --- .gitignore | 2 ++ languages/.DS_Store | Bin 6148 -> 6148 bytes 2 files changed, 2 insertions(+) create mode 100755 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100755 index 00000000..f0fed7ef --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +*/.DS_Store diff --git a/languages/.DS_Store b/languages/.DS_Store index 3853220540eecb02182ebc9a35d96265e26f3fb2..8c9b457e610c45e659032e066c4f4b10110c7b24 100644 GIT binary patch delta 47 zcmZoMXffDe%f!e#*^WtEJeMKGGbcYeDJMUPfq_8)h*tvfjLlh0vspK@bNuB803(zP AJOBUy delta 45 vcmZoMXffDe%f!et*^WtEG}$vJKRGEUKZ${XLEt|WY|det&AOSD<3B$DabOaJ From 2014da88d493c46528f705df175bf7c38a66fc42 Mon Sep 17 00:00:00 2001 From: 0xpoker <30389809+490694561@users.noreply.github.com> Date: Sun, 18 Nov 2018 19:27:02 +0800 Subject: [PATCH 4/7] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 54c79054c6da045300141292d3a6efb5d0007cb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK(P|Sx6ur}?W;aF5gU~+ii{L{jsVyy1gf&eb0xIH)KB%<2Zb%olJ0ZI?#|q^lR1-_*&!m)8pXRrbs}=$jFlRSD~#LO zmu$_{aHCM~kaSKx+MxkuOWC%2HaQnpJedda9yBVeCKQp3nJ}|%NOEgH6yl6JRinaC1 z#`qDWOA^-*YNH%?@k-uo(rc>A1y0v?+ zdwPCxIe9yM_mQ>2{)i1y*$sm~;S+)@#Ca18vs7k%v@)|w52#DW)S*WdP^To_dt}T{ zjZ06Ed7s+!5V(U)IW952l^7dp8YL#FG%ae{Kg>-#h}Kp^0rQu1HdkXfb`(|ttH57W zfcFOv&gdJQX;fPW3UvhlR#2@BF@G#D$1~^~oM}W0OlT@lQ-!%=2u(-5XYzc5GmV-~ z!dyOt=~Nb`ThNWkz}8&0#<>QQb1JNLA!+^ znX`3iaD3K!@KZP&=gl-K3JP-^tALNKjABrEK AUjP6A From acf22515554a636e1ba1ed5751b4b9898f1953b8 Mon Sep 17 00:00:00 2001 From: 0xpoker <30389809+490694561@users.noreply.github.com> Date: Sun, 18 Nov 2018 19:27:20 +0800 Subject: [PATCH 5/7] Delete .DS_Store --- languages/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 languages/.DS_Store diff --git a/languages/.DS_Store b/languages/.DS_Store deleted file mode 100644 index 8c9b457e610c45e659032e066c4f4b10110c7b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyH3ME5S$H>67!JKLFtkz5;ct#g@T$70Ft196mUcm1f3iHfnVVJ_yCx_Jz0)z zS`?vOX>ZPVJNKBgygmRj+RV;?0f0VTv6HZ9G3{4xSSPmhh!VyaVukz5MLwM@8qwac ziwfx3^)SJ$o*XLYmrvNEuf;k2^g9@9z!9dn#)6C|%&{TPaYyDOW_I!=^OMmZ6=uT7 zykrjbsfAIUtA{05wdCjlx1;5l<5!~-M!jK8M$WahtVrH#jQtv8&7Hi~X8Edd4)KBq z?si2To>^OR#+JE)Zq?m$7&lkI6>tT1L;>b(wf=#jm#%;-;0lxq==UL|D`pW3!|>@~ z5v~BlE}Mg~u0M^+Nh4+v3q$tM#Hd80O1xr-(b=BHxGZ8}Xmm)td`O&G;tfT@>>NK0 z;gHPGOIN@Z*j8ZA9tWELFMhxOZtUql>*WoUyVoHQp~N5&1tSp={IyWjVlaG k3M(NMGgeda2|XCwQ>_rQh=n0rX#OJ*Wbncj_)`Ub03-ZvEC2ui From 88e285800677e7e04ed2b2c36997e523ce3ffbfa Mon Sep 17 00:00:00 2001 From: 0xPoker <490694561@qq.com> Date: Sun, 18 Nov 2018 19:46:04 +0800 Subject: [PATCH 6/7] add some introduce --- languages/c_language.md | 44 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/languages/c_language.md b/languages/c_language.md index 67e61803..db5773ab 100644 --- a/languages/c_language.md +++ b/languages/c_language.md @@ -1,7 +1,47 @@ # C 语言 +## 注意事项 + +- C语言变量名只能是英文字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。 +- 必须是字母或者下划线开头。 +- 变量名区分大小写(如 F ≠ f ) +- 不能使用关键字对变量进行命名。 +- C语言的变量必须先声明再使用,包括实参和形参 + +### 避免使用关键字 + +``` +■ auto ■ break ■ case ■ char ■ const ■ continue■ default ■ do ■ double ■ else ■ enum ■ extern■ float ■ for ■ goto ■ if ■ int ■ long ■ register■ return ■ short ■ signed ■ sizeof ■ static ■ struct■ switch ■ typedef ■ union ■ unsigned ■ void■ volatile ■ while ■ inline ■ restrict ■ _Bool■ _Complex ■ _Imaginary ■ _Alignas ■ _Alignof ■ _Atomic ■ _Static_assert ■ _Noreturn■ _Thread_local ■ _Generic +``` ## 基础语法 +### 基础数据类型 + +| 类型 | 符号 | 说明 | +| ------------ | ------ | ------------------------------------------ | +| 整数型 | int | 整型,通常反映了所用机器中整数的最自然长度 | +| 字符型 | char | 字符型,占用一个字节默认无符号 | +| 单精度浮点型 | float | (无) | +| 双精度浮点型 | double | (无) | + +### 格式化字符串与变量对应转换规则 + +| 格式码 | 参数 | 说明 | +| ----------- | ------ | ------------------------------------------------------------ | +| %c | 字符 | 参数被裁剪为8位字节码并作为字符进行打印 | +| %i,%d | 数字值 | 参数作为一个十进制整数打印。如果给出了精度而且值的位数小于精度位数,前面就用0填充 | +| %u,%o,%x,%X | 数字值 | 参数作为一个无符号数字值打印,u使用十进制,o使用八进制,x或X使用十六进制,两者的区别是x约定使用abcdef,而X约定使用ABCDEF | +| %e,%E | 数字值 | 参数根据指数形式打印。例如,6.023000e23是使用代码e,6.023000E23是使用代码E。小数点后面的位数由精度字段决定,缺省值是6 | +| %f | 数字值 | 参数按照的常规浮点格式打印。精度字段决定小数点后面的位数,缺省值是6 | +| %g,%G | 数字值 | 参数以%f或%e(如G则%E)的格式打印,取决于它的值。如果指数大于等于-4但小于精度字段就使用%f格式,否则使用指数格式 | +| %s | 字符串 | 打印一个字符串 | +| %q | (无) | 打印一个字符串,并将字符串置于一对引号中,如果字符串中包含引号换行等自动添加转义符。如果要读取一个字符串传为代码。为避免用户恶意注入引号等特殊字符,可以使用%q进行格式化 | +| %% | (无) | 取消%转义打印一个%字符,即用%%表示本来的% | + +> 注: %11.9f中的9表示精确到小数点后9位,以此类推;11表示输出字符串长度为11不够在后面加空格 + +### 引用 & 主函数 & 命令行参数 + ```c #include @@ -18,4 +58,6 @@ int main(int argc, char *argv[]) - 值得注意的一点是,取得的命令行参数一定是字符串,可以使用`atoi`、`atol`等函数进行一下转换 - 在一个C语言文件中,不是一定得包含什么头文件,但是包含一些现成的头文件是有必要的,那会节省你很多敲代码的时间,但是又不是一定非得包含所有的头文件,那样会使你的程序在编译的时候时间较长 - 头文件引用有两种形式,`#include `、`#include "test.h"`,区别在于尖角括号适用于选择要包含的文件不是当前文件夹的而是库里的,双引号用于包含同文件夹的 -- `return 0`从理论上说这个返回值是没用的,因为他是返回给系统的,但是在一些情况下可以通过捕获这个值查看程序本次运行的情况 \ No newline at end of file +- `return 0`从理论上说这个返回值是没用的,因为他是返回给系统的,但是在一些情况下可以通过捕获这个值查看程序本次运行的情况 + +### \ No newline at end of file From 7e91036ef1059c4f2739fd0b555d0c561634dbd5 Mon Sep 17 00:00:00 2001 From: 0xPoker <490694561@qq.com> Date: Sun, 18 Nov 2018 19:59:34 +0800 Subject: [PATCH 7/7] change menu file --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 27791b56..6d884232 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ ### :page_with_curl:编程语言 +- [C](languages/c_language.md) - [Bash](languages/bash.sh) - [Go](languages/golang.go) - [Php](languages/php.php)