C语言中变量定义的位置(C89和C99的区别)
来源:互联网 发布:宁波seo入门教程 编辑:程序博客网 时间:2024/05/15 04:21
C语言中变量定义的位置(C89和C99的区别)
在C++和JAVA中,按照语法,我们可以把变量定义在任何位置,所以很多人习惯了“哪里使用哪里定义”的这种做法,所以当用C语言进行编程的时候,很多人依然想这样去做。当然,对于变量定义的位置,C89和C99是有一定的差别的,也就是和大家使用的编译器有关。
如果大家使用较老的编译器时遇到下面的代码可能会提示错误,因为较老的编译器要求.c文件中的局部变量定义必须放在所有执行语句前,块开头处。
#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){int i = 0; // c89和C99都没问题if (i > 0){int j = 0; // C89和C99都没问题}for (int k = 0; k < 5; ++k) // C89有问题,C99正常{i = k;printf("i = %d.\n", i);}int m = 0; // C89有问题,C99正常}
上面的程序如果在较老的编译器下使用.c文件保存并编译的时候会出错,注意,i、j的定义是没有任何问题的,因为它们都处于局部块的开始处。但是k和m的定义就会有问题,因为它们前面有可执行语句,所以m和k应该定义在i的前后。我当时使用VS2008的时候会报错,但是现在使用VS2013编译上面程序时不会有任何问题,所以,这个使用方法到底对不对,还是要看大家的编译器,C99以后基本都使用变量就近定义的方式,因为这样十分清晰。
总之,为了移植性更强一些,建议大家编写C语言的时候尽量将局部变量都定义在可执行语句前,块的开始处,这样不管是新的编译器或者老的编译器都可以正常编译。不过,随着变量定义就近原则的方便性的体现,可能使用变量就近定义会更好一些,至于如何抉择,大家可以根据项目需求和实际的情况而定。
2 0
- C语言中变量定义的位置(C89和C99的区别)
- C语言中C89与C99的区别
- c++中c89和c99标准的区别
- C99标准和C89标准的区别
- C99与C89的区别
- C语言和C++语言对于代码块中定义变量位置的区别
- C语言中变量定义的位置
- C语言中变量定义的位置
- C语言的C89标准与C99标准
- ANSI c与C89,C99,C11的区别
- C语言的标准(K&R C,ANSI C,C89,C90,C99)
- C89标准和C99标准C11标准的区别
- C89与C99的主要区别
- C89与C99标准的区别
- ASCII C89 与C99的区别
- gcc C语言中变量定义的位置问题
- c99 和 c89(ANSI c)
- C89标准 C99标准 函数结构定义的限制
- arduino学习笔记 一
- Android进阶之使用自定义的字体库
- Catch Bug
- BLE中Profile是什么意思?
- nio编程与io编程
- C语言中变量定义的位置(C89和C99的区别)
- Linux IPC实践--System V消息队列(3)
- org.hibernate.exception.GenericJDBCException: Cannot open connection
- 天声人語 20151106 ベーコンに発がん性?
- linux/mac vi命令详解
- 神的规范:排序算法(二):简单选择排序
- 日经春秋 20151106
- hiho 7 完全背包
- leetcode123 Best Time to Buy and Sell Stock III