
c语言运行方式如下:
上机输入和编译源程序。通过键盘向计算机输入程序,最后将此源程序以文件形式存放在文件夹内,文件用c作为后缀,生成源程序文件。对源程序进行编译,先用c编译系统提供的“预处理器”对程序中的预处理指令进行编译预处理。例如,对于#include指令来说,就是将stdioh头文件的内容读进来,取代#include行。由预处理得到的信息与程序其他部分一起组成一个完整的、可以用来正式编译的源程序,然后由编译系统对该源程序进行编译。
编译的作用是对源程序进行检查,判定程序有无语法的错误。直到没有错误时,编译程序自动把源程序转换为二进制形式的目标程序进行连接处理。经过编译后所得到的二进制目标文件还不能供计算机直接执行。一个程序可能包含若干个源程序文件,而一次编译只能得到与一个源程序文件相对应的目标文件,
只是程序的一部分,必须把所有编译后得到的目标文件链接装配起来,再与函数库相连接成一个整体,生成一个可供计算机执行的目标程序,称为可执行程序,即使一个程序只包含一个源文件,编译后得到的目标程序也不能直接运行,也要经过连接阶段,因为要和函数库进行连接,才能生成可执行程序。运行可执行程序,得到运行结果。把fexe输入计算机,并使之运行,得到结果。
全局变量前加static修饰,该变量就成为了静态全局变量。全部变量在整个工程都可以被访问(一个文件中定义,其它文件使用的时候添加extern关键字声明 ),而在添加了static关键字之后,这个变量就只能在本文件内被访问了。因此,在这里,static的作用就是限定作用域。
局部变量添加了static修饰之后,该变量就成为了静态局部变量。局部变量在离开了被定义的函数后,就会被销毁,而当使用static修饰之后,它的作用域就一直到整个程序结束。因此,在这里static的作用就是限定生命周期。
所以这个程序先执行a+的那个函数,因为有个全局变量d,所以现在的d的值为2,当2传入函数中,p的值变为2,并且因为现在有局部变量d,所以优先使用局部变量,d+=p就是d=d+p,因此d的值变为8,然后执行printf就输出了8。
以后再执行外面的函数fun,此时他的参数是a+fun,因为上面已经知道内侧fun的输出是8,所以外侧fun的参数就是8,此时函数内p的值为8+3,因为局部变量d前加了static,所以这个d的值还是执行内侧fun时的值,是8,再执行d=d+p就是19,然后输出19,再执行函数外面的pritf,再次输出19。
这需要把你的C++源程序拿出来看,才能知道“运行没有结果”的原因的,没有结果的程序是运行结束了,还是没有结束呢?
最常见的原因有:
有可能是程序发生了“死循环”;
有可能是程序正在等待输入;
有可能是程序中没有输出语句;
有可能是程序没有运行到执行输出语句处;
…………
首先你的程序有两处错误,改正如下:
#include<stdioh>
void main()
{
char a[]="123456789",p;
int i=0;
p=a;
while(p)//源程序中为大写的P
{if(i%2==0)p='';//此处把字符赋值给p所以不能写成""
p++;i++;
}
puts(a);
}
运行结果为:2468
从您的问题可以看出您还处于初学阶段或者在应付考试。首先出现一些现象一定会有原因,我们要会分析其发生的原因。根据模电的知识,8只led全亮说明二极管加了正向电压导通了。首先你要知道你的单片机是共阴还是共阳极,打开原理图看下就知道了。如果是共阴极,说明那8个引脚都给了高电平。如果你是使用的店家提供的程序,很有可能是没有把程序正常下载进去,或者下载的程序与单片机不匹配。
建议贴出单片机的型号或者原理图,和源程序进行提问。当然可以自己查找问题,相信您一定可以解决的。
以上就是关于c语言如何运行全部的内容,包括:c语言如何运行、C语言读程题,根据图中程序的运行结果分析下原因、C++程序运行没结果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)