一个C语言的问题,求大神解答原因!
发布时间:2025-05-15 23:28:52 发布人:远客网络
一、一个C语言的问题,求大神解答原因!
1、sub1中的变量a,b是其所在文件中定义的,其中a是静态全局变量,b是全局变量
a会默认初始化为0,因此第一次执行sub1()时输出结果中a=0+2=2, b=3+3=6。
sub2中的变量a是其所在文件中定义的静态全局变量,因为与sub1()所处不同文件,因此变量a是不同的;而变量b是与另一个文件共享的全局变量。因此第一次执行sub2()时输出结果中a=10+10=20, b=6+2=8。
再次执行sub1(),a=2+2=4, b=8+3=11
再次执行sub2(),a=20+10=30, b=11+2=13
最后在main函数中输出的a仍然是文件中的静态全局变量,a=4,而b=13
2、注释1去掉static,a变为全局变量,但不会产生影响,因为sub2中仍使用的是其文件内定义的静态全局变量
3、加上注释2的语句后,sub1中的变量a变为其函数内定义的局部变量,每次进入都重新初始化为5
而b不受影响,sub2()中执行也不受影响,只列出与1中不同的输出结果
最后main函数中的a是文件中的静态全局变量,其值为初始值,即a=0
4、加上static后,sub1中的变量a变为静态局部变量,在运行初始化时其值为5,之后进入函数不再初始化,其余不受影响(与3中相同)
二、c语言选择题,要详解。否则不采纳。
1、字符常量是用单引号把一个字符括起来,没有'97'这种形式,所以选项A不对
2、用双引号括起来的一串字符是字符串常量,不能给字符型变量赋值,所以选项B不对
3、字符变量可以作为整型变量处理,语句c=97;是指将ASCII值97的字符赋给c,即c中存放的是a
4、c='a';也是正确的语句,但如果是c="a"则不正确,因为"a"代表字符串常量
三、c语言编程问题,求高手解答(高分)
1、你的程序没有大的问题,可以执行,只是以下几个小问题:
2、一、第一行包含的文件不存在,这一行应该删除。
3、二、定义了argc、argv两个变量没有使用,编译会有警告,可以删除他们或者不管,最好改为:
4、三、scanf输入n和k的时候,中间有个逗号分隔,这样输入的时候会麻烦,最好改为: