并未要求一次性将所有的变量声明或者定义,只要求在使用某个变量之前先定义。变量的定义风格利弊如下:
目前成都创新互联公司已为千余家的企业提供了网站建设、域名、网络空间、网站托管、企业网站设计、钟山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1、变量在函数开头定义:便于修改。
2、变量就近定义:便于阅读。
3、变量在块语句的开头定义:有的临时变量放在语句块开头,可以不用在函数开头定义,并且在使用完毕后释放空间,可以这么做,但不要无故添加花括号来提高代码的结构。
一般的,为了要达到最大的兼容跨平台性,还是放在函数开头定义。因为C89规定,在任何执行语句之前,在块的开头声明所有局部变量。
如以下代码:
会报错信息:error C2065: 'salary' : undeclared identifier。
在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。
扩展资料:
c语言变量定义和保存格式的关系:
1、源文件保存为.c格式的话变量只能定义在最前,若保存为.cpp格式的话,变量定义较为灵活,不用在最前。
2、在C语言里,变量只能在函数的开头处声明和定义。在函数里要用到的变量必须要在开头处声明定义。声明定义的前面不能有任何其他非声明定义的语句。全局变量在函数体的外部声明定义。
而C++里(.CPP文件是按C++标准编译的),只要在用到变量前对该变量进行声明定义就行了,位置不做特别要求。而C语言的就定了在一个模块里(函数、循环体等)先声明一切所需变量后才能进行相关操作的规定。
参考资料:
百度百科--C语言
可能有些不声明也能通过,但效率极低,最好先声明。
1、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
2、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
3、二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
#
include
"math.h"
#
include
stdio.h
void
get_equa(float
a,float
b,
float
c)
//注释:声明空类型float函数get_equa()
{
if(a==0.0)
//注释:系数a的值为0的情况.
if(b==0.0)
//注释:a值为0的情况下b也为0.
printf("data
error,
no
answer
to
show!");
//注释:非一元二次方程式,打印“data
error...”
else
printf("the
equation
only
have
one
root:
%f",-c/b);
//注释:打印唯一解.
else
{
double
disc,term1,term2,root_1,root_2,two_a;
//注释:声明必要double型变量.
//注释:一元二次方程式的根有两个,表达式这里不好写,但数学上是这样读的:x
等于
2a
分之
负b
加减
根号下
b平方
减
4ac.(就是那个表达式的读法.)
disc=b*b-4*a*c;
two_a=2*a;
term1=-b/two_a;
term2=sqrt(fabs(disc))/two_a;
//注释:根号下b平方减4ac除以2a的值.
root_1=term1-term2;
root_2=term1+term2;
if(disc0)
printf("the
equation
only
have
the
complex
root:\n
real
part
=%f,
imag
part
=%f",term1,term2);
//注释:打印虚部和实部的值.
else
printf("the
equation
have
two
roots:\n
one
is
%f\n
another
one
is
%f",root_1,root_2);
//注释:打印它的两个实数根.
}
}
void
main()
{
float
a,b,c;
printf("please
input
your
equation's
a,b,c:\n");
scanf("%f%f%f",a,b,c);
get_equa(a,b,c);
}
代码测试通过。。有什么不懂的可以问我。。嘿嘿。
比如 int a = 10,b=20;int getSub(int a,int b){ return a+b;//这里的a,b和全局变量a,b没有任何关系——除了名字相同。在该函数中形参a,b会覆盖全局变量a,b。}如果你这样写int getSub(){ return a+b;//那么这里的a,b就是全局变量了。 }