本文意在帮助从零开始接触编程和代码书写的C语言初学者入门,从零开始逐步掌握对 C 语言与编程的概念理解。
但你不要搞错,这并不是说本系列会是又一个C语言入门教程——哥们,现在已经2026年了,互联网已经蓬勃发展到看起来有些后劲不足的年代了!网上教程那么多,为什么还需要再写一个一样的呢?
考虑到此,笔者会将本系列侧重点放在C 语言注解上,对 C 学习过程中的各种语法提出在语法上的技巧,可供学习时参考和思考。
引子:C语言语法比你想得更加宽松 #
C 语言不是一板一眼的死板语言,相反,C 语言有一种简洁之美——在语言的数条抽象的基本语法规则下,只要你符合基本规则,怎么写都可以。
我觉得最能说明这点的就是一段真实可运行的 C 语言代码:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int i,j,k,x,y,o,N;
main(){float z[1761],a
#define R(t,x,y) f=x;x-=t*y\
;y+=t*f;f=(4-x*x-y*y)/2;x*=f;y*=f;
=1,e=1,c=1,d=0,f,g,h,G,H,A,t,D;char
b[1761];for(;;){memset(b,32,1760);g=0,
h=2;memset(z,0,7040);for(j=0;j<90;j++){
G=1,H=1;for(i=0;i<314;i++){A=h+2,D=1/(G*
A*a+g*e+6);t=G*A *e-g*a;x=40+30*D
*(H*A*d-t*c);y= 13+15*D*(H*A*c+
t*d);o=x+81*y;N =8*((g*a-G*h*e)
*d-G*h*a-g*e-H*h *c);if(23>y&&y>
1&&x>0&&80>x&&D>z[o]){z[o]=D;b[o]=(N>0
?N:1)[".,-~:;=!*#$@"];}R(.02,H,G);}R(
.010,h,g);}for(k=0;1761>k;k++)putchar
(k%81?b[k]:10);R(.04,e,a);R(.02,d,
c);usleep(15001);printf('\n'+(
" donut.c! \x2b[23A"));}}
/*4D-spinning-donut*/
如果没法运行,试试在 Dev C++ 上运行。
这是知名的 donut 甜甜圈代码,效果是在黑色的终端上显示一个会实时旋转的甜甜圈。
是不是和你印象中的 C 语言相差甚远?但是,它和你遵守的确实同样一套 C 语言语法。
可见 C 语言的语法是相当宽松的,只要你的代码符合基本语法规则,怎么写都能运行。虽然你在实际编程中这么写大概会被看你代码的人打一顿。
在本系列中,我会为 C 语言的语法附上注解,弥补那些可能有些教程中不会提及的基本语法。