weixin_42487325 2021-12-01 14:57 采纳率: 100%
浏览 35
已结题

C++不能在全局作用域单独给变量赋值

c++不能在全局作用域单独的给变量赋值
全局作用域:
int i;
i=666; 报错: ‘i’ does not name a type
int i;
int j=i=666;OK!
为什么会这样啊!感觉好奇怪。

  • 写回答

3条回答 默认 最新

  • 冰思雨 2021-12-01 15:09
    关注
    1. 变量的声明,就是告诉编译器,你后面要用到一个什么类型的变量,他的名字是什么。
    2. 变量的定义,一般情况下是与变量的声明在一起进行的,包含变量的初始化过程。
      比如:int i; 这是一个没有初始化过程的变量定义。
      比如:int j=666; 这条语句包含声明和定义两个部分,定义的部分就是变量的初始化赋值。
      比如:int j=i=666;这条语句包含一个声明和两个定义,j和i都进行了初始化赋值。
      定义过程中的初始化赋值是可以的,因为定义的过程就是要在内存中分配存储空间,分配过程中可以初始化一个值给这个空间。
    3. 楼主在全局区域写的 i=666; 赋值语句是不能够执行的。
      语法规定,空白区域只允许定义和声明变量和函数,不允许干其他事情。除了声明和定义以外的语句,都要写在函数体里面。
      当然,函数体里面也允许声明和定义局部变量。

    楼主没必要感觉奇怪,只要知道这是语法规定的就好。
    空白区域只允许声明和定义变量/函数,除此之外的语句都要写到函数体里面,通过调用函数来执行语句。
    等你学过《操作系统》和《编译原理》之后,就知道这是为什么了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动