c
解释型语言与编译型语言
前者相当于边翻译边执行,可以有点特别的功能,比如动态改到后面的代码;
后者相当于先统一编译,的好处是稳定。
其实语言是不分解释型还是编译型的,只看常用的是解释器还是编译器。
比如python常用解释型,c常用编译型。
你要给它们写编译器和解释器都是可以的。
对于面向对象的语言来说就是类库,对于C来说就是函数库。
c语言来源于1969年的夏天 哈哈哈是从 B 语言发展过来的
是高级语言的底层语言
c也是贝尔实验室发明的喔!
原来 C9 9就是现在最通用的 C 的版本
mac上可以用编译器 gcc
\#include <stdio.h>
*int* main(){
printf("%d", 22+55);
return 0;
}
定义变量就直接是int xx = xx就好了。
int price;
求输入:scanf('%d', &price);
//第二个参数需要为一个变量地址。 //这里的f代表formatted
&是一个取地址运算符,&a 是一个表达式,其功能是求变量的地址。
而 %d 表示输入的类型
同时也可加上长度格式:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf即double)。h表示输入短整型数据。
注意 这样子输入类型是很严格的 如果是d的话,那小数部分就会被舍弃掉:
int a = 4; a = 2.5; //实际a等于2
int a = 'a';
int const A = 'a'; //这就是C语言定义常量的方法 推荐大写
很有趣的说法:如果一开始int a; 但是并没有给a赋值,就相当于住进了一间还没有被打扫过的屋子,此时的a是老数据的值 //想必js定义的时候会先清扫屋子吧~
比较
有个要注意的点是比较运算符的运算结果的值是1或者0!! //运算优先级的概念一旦知道了就很有用
所以if ( 1<=n<=10 ); 其实是恒成立的 因为1<=n不是1就是0
循环
重点 while循环 == for循环;
以及 while循环的写法和if是一样的;
以及每句程序的结尾必须是;或者{},因为do循环的结尾是..(),所以要打;号。
我的一些疑惑
- 为什么 printf 里用 % 这么奇怪的占位符?
因为 prinf 来自于 b 语言的 writef,里面也是用 %,也许是作者以为 % 在语句中用得比较少把~
- C是怎么知道新建一个function,要开辟多大的stack的?
https://stackoverflow.com/questions/21021223/how-does-the-gcc-determine-stack-size-the-function-based-on-c-will-use 以及:一个程序实际只有一个stack,main在stack的最底层