——————————此处是硬黑体字!——————————
C语言非常基础篇
——————————此处是硬黑体字!——————————
试想,你点开QQ首先会弹出登录窗口;点开浏览器首先会弹出你设置的显示页面;打开电脑它会首先驱动各个硬件并显示桌面(说话要严谨…多数系统如此…)。
我们给C语言编程也需要一个程序的入口,我们写下的所有代码都是从这个入口开始一步一步按照我们给定的流程向下执行。
一个语言一个程序(说话要严谨…多数语言如此…)都是如此,严格按照程序猿所设定的流程向下执行,QQ登录窗口之后就会登陆成功,点开好友就会弹出对话框……
main是C语言的入口,每个程序必须有一个:
1.#include <stdio.h>
2.int main(void){
3. int a, b, c;
4. int d;
5. printf(“Pleaseinput three numbers:\n“);
6. scanf(“%d%d%d”,&a, &b, &c);
7. d = a - b *c;
8. printf(“%d\n”,d);
9. d = (a - b) *c;
10. printf(“%d\n”,d);
11. d=a-b-c;
12. printf(“%d\n”,d);
13. return 0;
14.}
执行例子:
代码释义:
第1行,稍后解释。
第2行和第14行 int main(){ } 表示了程序执行的入口和程序结束的地方。程序会按照顺序从第3行一直执行到第13行,当执行到第14行,也就结束了int main()所管辖的范围,程序也就退出了。
实际上int main()是一个函数,函数是一个代码块的概念,可以把很多个实现单一功能的代码放在一个函数里以实现其他功能或者组成一个会经常用到的代码块。
系统在编译(就是从C语言翻译成可执行文件(*.exe))过程中会寻找名为main的函数,并从这里开始执行。
3、4行定义了四个变量,类型是整形(int)。
第5行输出用户提示(可有可无,但有可以增加程序友好性)。printf这是一个函数,系统会将这个函数的参数按照某种方式组合输出到屏幕上。
第6行从屏幕中接受用户输入三个数字,并依次存储在a, b, c变量中。scanf的功能便是从屏幕输入信息给程序,至于具体函数的语法以及&的功能,有兴趣者可google查看一下。
这里再说第1行,#include是将“头文件”引用进C语言的语法,编译器会将stdio.h这个系统头文件的内容全部载入并替换#include <stdio.h>所在的位置,stdio.h里面定义了scanf和printf的程序原型。
8,10,12行是输出d变量。
13行的代码是主动退出main函数,即退出程序,并且返回0。
比如用户打开QQ和浏览器,有时会出现忽然关闭的页面,然后系统提示程序崩溃了如何如何……系统是如何辨认到?都是程序退出,为什么系统认为有些是正常退出,有些会提醒是异常退出?因为这个return,它会是函数退出并且返回一个值给调用该函数的位置。
main函数是系统打开程序时最先执行的地方,那么程序的返回值就会返回给系统。系统统一认为返回0就是正常退出,返回其它数字都是异常退出。
吐槽:很多书的习惯都不好,会使用main()和void main()这样的写法,编译不会报错,但习惯不好,至少说明作家的程序猿素质不够!
7,9,11都是用abc运算之后,将运算结果赋值给c。
这里重点讲两个概念,优先级和结合方向。
当多个运算符同时摆放在一起时,会作如何的运算呢?根据从小学就学过的法则,我们会不假思索的认为是a-(b*c),括号内的优先运算,值得庆幸的是几乎所有语言应该是会遵守我们所学过的这个规则。那如果是我们没有学过的法则呢,如a+b^c,a^b+c……?
在C语言中有一个这样的运算符优先级的表,所有的运算符会按照该表规定的顺序进行运算。详见百度:
http://baike.baidu.com/view/262524.htm?fr=aladdin 还有这样一种情况:a-b-c,同一个符号的优先级自然是相同的,但a-(b-c)和(a-b)-c的结果是不相同的,这里我们也可以按照我们的习惯,肯定是(a-b)-c的结合顺序,但是如果a^b^c呢?(2^3)^4=4096和2^(3^4)=2^81,完全不相同啊!为了解决这种情况,C语言还拥有结合方向这一概念。
因为这两个概念我以前一长段时间不懂,也有人问过我,便在这里重点提出,也觉得是这篇小文章最主要的内容吧。