Questions tagged «declarations»

4
为什么我们必须提到C中变量的数据类型
通常在C语言中,我们必须在变量声明中告诉计算机数据的类型。例如,在下面的程序中,我要打印两个浮点数X和Y的总和。 #include<stdio.h> main() { float X=5.2; float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } 我不得不告诉编译器变量X的类型。 编译器不能自行确定其类型X吗? 是的,我可以这样做: #define X 5.2 现在,我可以编写程序而无需告诉编译器Xas 的类型: #include<stdio.h> #define X 5.2 main() { float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } 因此,我们看到C语言具有某种功能,通过它可以自行确定数据类型。就我而言,它确定X为float类型。 在main()中声明某些内容时,为什么还要提及数据类型?为何编译器无法main()像in中那样自行确定变量的数据类型#define。

5
当定义写在源代码的末尾时,为什么需要用C语言对数据和函数进行“声明”?
考虑下面的“ C”代码: #include<stdio.h> main() { printf("func:%d",Func_i()); } Func_i() { int i=3; return i; } Func_i()是在源代码的末尾定义的,并且在main()。中使用之前没有提供声明。在编译器Func_i()进入的时候main(),它出来main()并找到了Func_i()。编译器会以某种方式找到返回的值Func_i()并将其提供给printf()。我也知道,编译器无法找到返回类型的Func_i()。它在默认情况下需要(猜测?)的返回类型的Func_i()是int。就是说,如果代码具有float Func_i(),编译器将给出错误:的类型冲突Func_i()。 从上面的讨论中我们看到: 编译器可以找到由返回的值Func_i()。 如果编译器可以找到返回的值Func_i()由未来的出来main()和向下搜索源代码,那么为什么就不能找到Func_i(),它的类型明确提及。 编译器必须知道它Func_i()是float类型的-这就是为什么它会产生冲突类型的错误的原因。 如果编译器知道该Func_i类型为float类型,那么为什么仍假定它Func_i()为int类型,并给出类型冲突的错误?为什么不强制使它Func_i()成为float类型。 我对变量声明也有同样的疑问。考虑下面的“ C”代码: #include<stdio.h> main() { /* [extern int Data_i;]--omitted the declaration */ printf("func:%d and Var:%d",Func_i(),Data_i); } Func_i() { int i=3; return i; } int Data_i=4; 编译器给出错误:未声明“ Data_i”(此函数中的首次使用)。 当编译器看到 Func_i(),它会进入源代码以查找Func_()返回的值。为什么编译器不能对变量Data_i做同样的事情? …


8
将声明放在内部块中而不是在函数开始处可能有什么缺点?
在我工作的地方,有明确的准则来声明变量。因此,需要将它们放在全局级别和/或函数的开头,而不是放在内部块(例如for循环)中。由于它们是由比我更有经验的人员指定的,因此,我相信一定有充分的理由,但是我不知道这可能是什么。很高兴知道在更大的范围内声明它们是否具有编译时/运行时的优势。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.