- 一、程序是如何运行的
- 1. 翻译环境
- 2. 执行环境
- 二、hello world(实例代码的运行)
- 1. 编写代码
- 三、数据类型
- 四、运算符
- 五、控制语句
- if-else
- switch-case
- while循环
- do-while语句
- for 循环
一、程序是如何运行的
我们知道计算机只识别0,1,那么当我们把程序编写完成后,计算机是如何运行这个程序的呢?
在ANSI C的任何一种实现中,存在两种不同的环境,第一种是翻译环境,在这个环境中源代码就会被转换为可执行的机器指令;第二种就是执行环境,它用于实际执行代码。而这两种环境不需要运行在一台机器上。
1. 翻译环境翻译其实就是程序的编译,这往往有几个步骤组成。
第一步:预处理器阶段处理,在这个阶段预处理器在原代码上执行一些文本 *** 作,如读入头文件,用实际值代替由# define定义的符号等。
第二步:解析阶段,也是产生绝大多数错误和警告信息的地方,随后就会产生目标代码,目标代码就是机器指令的初步形式。
2. 执行环境程序的执行也需要经历几个阶段。
第一步:程序载入内存中,在具有 *** 作系统的环境中(宿主环境)由 *** 作系统来将其载入内存,那些不是存储在栈堆中尚未初始化的变量将会在这个时候得到初始值。若是独立环境(即没有 *** 作系统),就需要手动安排。
第二步:开始执行程序(准备工作)。在宿主环境中,通常由一个小型的启动程序和程序链接在一起。接着,调用main函数。
第三步:执行程序。在绝大多数机器中,程序将使用一个运行时的堆栈,用于存储函数的局部变量和返回地址。程序同时可以使用静态内存,存储在静态内存中的变量在程序的整个执行过程中将一直保留它们的值。
第四步:程序的终止。可能有不同原因引起的程序的终止,正常终止就是指main函数正常返回,也有可能因为执行过程中的错误自行中断。
二、hello world(实例代码的运行) 1. 编写代码代码如下(示例):
#include//引用头文件 int main()//编写主函数 { printf("hello world");//输出语句 }
其次为了代码的可读性,我们往往会在代码中增添注释,可以使用//进行单行注释,或者使用结尾来进行多行注释。
三、数据类型在c语言中有4中基本数据类型:整型,浮点型,指针和聚合类型。其中指针和聚合类型我们下一次在具体看这部分的内容。
整型中包括字符,短整型,整型和长整型,其中短整型至少16位,长整型至少32位,缺省的整型往往由编译器决定其是16位还是32位,通常是该机器最自然高效的位数。字符型在本质上是一种小整型,缺省的char要么是signed char要么是unsigned char 这往往也取决于编译器,所以,只有当程序中所使用的char值位于这两种字符型的交集中,才能具有良好的可移植性。(或者,我们为了拥有良好的可移植性,可以显性的定义为signed char或者unsigned char,但这往往会收机器兼容性等的影响,使得这种统一显性的声明并非是上上之策)。
浮点型包括float,double,long double类型,通常这些类型分别提供单精度、双精度和某些支持扩展精度的机器上提供扩展精度,所以的浮点类型必须能容纳从10^-37到10^37之间的任意数。
#include四、运算符int main() { printf("%cn",'a'); //字符型 使用printf语句输出时为%c printf("%dn",123); //整型 使用printf语句输出时为%d printf("%fn",3.14); //浮点型 使用printf语句输出时为%f return 0; } // 其中n是指在输出时换行
程序中数字之间是可以像数学中数字一样进行运算的。
如下:
#includeint main() { printf("%dn",1+2+3); return 0; }
常用的简单运算有算术运算符、关系运算符和逻辑运算符三类运算符。
if(条件){ }else{ }
也可以直接省略else,有以下代码块;
if(条件){ }
或者多分枝选择结构还可以使用如下:
if(条件1){ } else if(条件2){ } else if(条件3){ }else{ }switch-case
switch(表达式){ case 整型常量1: break; case 整型常量2: break; default : }while循环
while(条件){ }do-while语句
do { }while(条件);
for 循环do-while循环与while循环的区别:
do-while循环是先循环后判断,循环体至少执行一次;while循环是先判断后循环,循环体可能一次也不执行。
for (初始值;条件;递增或递减){ }
在while和for循环中,break是结束整个循环体;continue是结束单次循环。
练习:打印出一个九九乘法表。
#includeint main(){ for(int i=1;i<10;i++) { for(int j=1;j<=i;j++) { printf("%d*%d=%d ",i,j,i*j); if(i*j<10) printf(" "); } printf("n"); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)