c++不能在全局作用域单独的给变量赋值
全局作用域:
int i;
i=666; 报错: ‘i’ does not name a type
int i;
int j=i=666;OK!
为什么会这样啊!感觉好奇怪。
C++不能在全局作用域单独给变量赋值
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 冰思雨 2021-12-01 15:09关注
- 变量的声明,就是告诉编译器,你后面要用到一个什么类型的变量,他的名字是什么。
- 变量的定义,一般情况下是与变量的声明在一起进行的,包含变量的初始化过程。
比如:int i; 这是一个没有初始化过程的变量定义。
比如:int j=666; 这条语句包含声明和定义两个部分,定义的部分就是变量的初始化赋值。
比如:int j=i=666;这条语句包含一个声明和两个定义,j和i都进行了初始化赋值。
定义过程中的初始化赋值是可以的,因为定义的过程就是要在内存中分配存储空间,分配过程中可以初始化一个值给这个空间。 - 楼主在全局区域写的 i=666; 赋值语句是不能够执行的。
语法规定,空白区域只允许定义和声明变量和函数,不允许干其他事情。除了声明和定义以外的语句,都要写在函数体里面。
当然,函数体里面也允许声明和定义局部变量。
楼主没必要感觉奇怪,只要知道这是语法规定的就好。
空白区域只允许声明和定义变量/函数,除此之外的语句都要写到函数体里面,通过调用函数来执行语句。
等你学过《操作系统》和《编译原理》之后,就知道这是为什么了。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 DS18B20内部ADC模数转换器
- ¥15 做个有关计算的小程序
- ¥15 MPI读取tif文件无法正常给各进程分配路径
- ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
- ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
- ¥15 setInterval 页面闪烁,怎么解决
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动