C语言变量声明问题——变量定义一定要放在所有执行语句/语句块的最前面吗?
参考网址:http://www.cnblogs.com/web-HCJ/p/4468689.html
报错信息:error C2065: 'salary' : undeclared identifier
1
2
3
4
5
6
7
8
9
|
#include <stdio.h>
void main(){
printf ( "我的成绩是100分!" ); //不使用变量
int salary; //使用变量
salary = 100;
printf ( "我的成绩是%d分!" ,salary);
return 0;
}
|
问题根源:编译器问题——C89和C99
C89规定,在任何执行语句之前,在块的开头声明所有局部变量。
在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。
变量声明放在前面就不报错了······
1
2
3
4
5
6
7
8
9
|
#include <stdio.h>
void main(){
int salary; //使用变量
salary = 100;
printf ( "我的成绩是100分!" ); //不使用变量
printf ( "我的成绩是%d分!" ,salary);
return 0;
}
|
不同风格利弊
变量在函数开头定义:便于修改
变量就近定义:便于阅读
变量在块语句的开头定义:有的临时变量放在语句块开头,可以不用在函数开头定义,并且在使用完毕后释放空间,可以这么做,但不要无故添加花括号来提高代码的结构。
要达到最大的兼容跨平台性,还是放在函数开头定义吧
使用哪种方式,看实际情况+个人喜好!
我个人是比较喜欢就近定义的,觉得比较方便一点。
可是,现在使用的VC6.0,编译器可能是C89的,所以不得不用开头定义。
顺便提一提:该文件的后缀名为.c
在网上查了一下,有许多说法,列举一二(意思大同小异)
1.源文件保存为.c格式的话变量只能定义在最前,若保存为.cpp格式的话,变量定义较为灵活,不用在最前。
2.在C语言里,变量只能在函数的开头处声明和定义。在函数里要用到的变量必须要在开头处声明定义。声明定义的前面不能有任何其他非声明定义的语句。全局变量在函数体的外部声明定义。而C++里(.CPP文件是按C++标准编译的),只要在用到变量前对该变量进行声明定义就行了,位置不做特别要求。而C语言的就定了在一个模块里(函数、循环体等)先声明一切所需变量后才能进行相关操作的规定。
然而,把后缀名改为.cpp后,还是报错
void main()改为int main(void)就可以了
1
2
3
4
5
6
7
8
9
|
#include <stdio.h>
int main( void ){
int salary; //使用变量
salary = 100;
printf ( "我的成绩是100分!" ); //不使用变量
printf ( "我的成绩是%d分!" ,salary);
return 0;
}
|
应该是语言的数据类型的问题吧???是不是呢?大神何处在~
(完,可待续)
C语言变量声明问题——变量定义一定要放在所有执行语句/语句块的最前面吗?相关推荐
- C语言中变量声明和变量定义的区别
本文转载至CSDN博客JeanCheng 变量声明和变量定义 变量定义:用于为变量分配存储空间,还可为变量指定初始值.程序中,变量有且仅有一个定义. 变量声明:用于向程序表明变量的类型和名字. 定义也 ...
- Go 学习笔记(6)— 变量定义、变量声明、变量作用域
1. 变量定义 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字.声明变量的一般形式是使用 var 关键字: var varName dataType [= value] Go 语言和 ...
- c语言staticint的作用,C语言 static 声明静态变量?大佬原来用它干这事!
原标题:C语言 static 声明静态变量?大佬原来用它干这事! C语言可变参数只会用算啥本事?看我来抽丝剥茧干翻它! 高手在写代码的时候,会特别注重的一点就是,对外的方法对外,不对外的方法和数据,都 ...
- python公共变量声明_Python变量声明
繁星coding 好的,首先要做的事情.Python中没有"变量声明"或"变量初始化"这样的东西.简直就是我们所谓的"任务",但应该只是称之 ...
- c语言变量声明放在开头,C语言变量声明问题——变量定义一定要放在所有执行语句/语句块的最前面吗?...
报错信息:error C2065: 'salary' : undeclared identifier #include void main(){ printf("我的成绩是100分!&quo ...
- 变量声明与变量定义的区别
1.变量定义 1.1.第一种方式 int a 定义变量但不初始化 创建一个变量,为这个变量分配一块int数据类型所占内存空间大小的内存空间并命名 1.2.第二种方式 int a = ...
- js php 变量声明,javascript变量声明实例分析_javascript技巧
本文实例讲述了javascript变量声明的方法.分享给大家供大家参考.具体分析如下: js中使用一个变量之前应当先声明.变量使用关键字var来声明. 如果未在var声明语句中给变量指定初始值,则该变 ...
- c语言goout函数,Go语言函数声明(函数定义)
函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func.函数名.参数列表.返回值.函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块. 因为Go语言是编译型语言, ...
- Go 学习笔记(70)— Go 变量声明、变量初始化、值类型变量赋值、指针类型变量赋值
1. 变量声明 要单纯声明一个变量,可以通过 var 关键字,如下所示: var s string 该示例只是声明了一个变量 s,类型为 string,并没有对它进行初始化,所以它的值为 string ...
最新文章
- 妙用postman系列——postman建组、分享
- 五子棋html游戏代码与算法介绍
- 帮你排雷Jmeter分布式性能测试那些坑
- 随机森林RF中的特征重要性的计算公式VIM
- 【转载】详解 Spring 3.0 基于 Annotation 的依赖注入实现
- Stumpwm的编译安装
- php lodop 实例,Vue使用lodop实现打印小结
- Python 字典初始化dict()和{}
- 为您的软件系统设计选择最佳的工具
- java finally在return_Java finally语句到底是在return之前还是之后执行?
- Twisted中的putChild和getChild
- 学UI设计就业难吗?
- 记一次惨烈的电话面试题
- 23个适合logo设计的常用英文字体
- Asp.Net Core报错System.Text.Json.JsonException: A possible object cycle was detected which is not supp
- NLP - 词法分析
- 大陆居民可以在香港汇丰银行开私人账户
- latex中的希腊字母
- 基于汇编语言的文本对比算法
- windows下 编写的Qt程序连接远程MySQL数据库
热门文章
- 深圳电大计算机等级考试报名时间2015,杭州2015下半年计算机等级考试报名
- amos看拟合度在哪里看_amos模型拟合度
- linux 安装docker
- C 语言结构体引用,引用 C 语言结构体学习
- MYSQL索引创建与删除
- singft 函数 matlab,(新)信号与系统MATLAB实验全.doc
- java lang保_java中lang包下的类都涉及哪几方面的
- thinkphp5 open_basedir 补充
- swoole 热重启
- ​四周第一次课(4月11日)lvm讲解