搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
菜鸟追梦旅行
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
pandas中的滚动窗口rolling函数和扩展窗口expanding函数_pandas rolling()的参数
2
Python3对一个class类型的list按class中某一属性排序_python如何按照class的某个值排序
3
TransReID: Transformer-based Object Re-Identification 介绍
4
php如何实现在线直播系统,设计方案以及简单实现(此方案 app与pc端一致)---》第一篇
5
PyTorch 最新安装教程_pytorch最新版本安装
6
【软件安装】CUDA的卸载_cuda卸载
7
新东方人工智能中台建设和AI部门管理经验分享_新东方数据中台
8
迭代器详解
9
假如C++是一只箭,你会用它来射哪只雕?| 就业岗位分享
10
SqlSugar ORM 入门(简介和增删查改)
当前位置:
article
> 正文
全局变量的初始化_全局变量定义 初始化
作者:菜鸟追梦旅行 | 2024-02-18 08:08:17
赞
踩
全局变量定义 初始化
注:以下例子仅是讨论C++语法,绝非推荐在实践中利用它们。
例1
extern
int
y;
int
x
=
y;
int
y
=
x;
int
main()
...
{}
例2
extern
int
y;
int
x
=
y;
int
y
=
3
;
int
main()
...
{}
例3
inf f()
...
{
return
3
;
}
int
x
=
y;
in
y
=
f();
令人惊讶的是(起码我第一次看到惊讶了一番),以上都是合法的c++,决没有涉及任何未定义行为。 关键在于,C++对全局变量(实际上对于静态生存期的变量都是如此)的初始化分了2个阶段:
阶段1:静态初始化
如果一个全局变量用一个常量表达式来初始化,例如例2的y=3,这就是静态初始化。如果一个全局变量没有用常量表达式来初始化,那么会首先将其初始化为0。
阶段2:动态初始化
例如上面的x = y就是动态初始化了。
也就是说,c++程序在启动时,首先会进行静态初始化,然后再进行动态初始化。
对于例2,y=3会在静态初始化阶段执行,而x = y在后面执行,所以最后y值为3,x值也为3。
所以对于例1来说,x和y首先初始化为0,然后互相赋值,因此最后它们的值都是0。
对于例3,情况有点复杂,因为还有一条c++规则:编译器可以选择将一个本应该动态初始化的变量静态初始化,条件是它的动态初始化版本没有改变任何其它先前声明的名字空间域的变量,并且动态初始化版本的结果和静态初始化版本的结果相同。那么对于例3,y=f(),即可以当作动态初始化,也可以在静态初始化。这样,虽然y最后的值都是3,但x的结果就可能是0或者是3,要看编译器的实现了。不过我觉得这种情况比较少,因为编译器还要额外分析一些东西,何必这样折磨自己呢?
貌似很少有教科书会说这些东西,讲C++的书一般对于全局变量的使用,都是建议不要写出相互依赖的代码来。
但从语法上来说,C在这方面的规定比C++要简单很多,C压根就不允许在定义全局变量时象上面的例子那样写出x=y来,即使y是const也不行。
参考:
ISO C++ 2003, 3.6.2
本文内容由网友自发贡献,转载请注明出处:
https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/106399
推荐阅读
article
Latex
表格
,
图像
,
文献问题汇总
_
latex
表格
大小...
Latex
表格
过大(或过小)的调整方法
_
wbl901的博客-CSDN博客
_
latex
表格
太宽放不下\begin{cen...
赞
踩
article
开源
工具
类
汇总_
securerandom
工具
类
...
开源
工具
类
Hutoolyue-library: yue-library是一个基于SpringBoot封装的增强库,可用于...
赞
踩
article
Echarts设置
环形
图
中心
文字
_
echart
环形
图中间
文字
...
通过这种方式确实可以达到效果,但是,label的主要目的是用来配置
环形
图提示信息的,而不是用来配置
环形
图
中心
文字
的,而且...
赞
踩
article
Vue
中
slot
是
什么?
作用
?分类?如何实现?
_
vue
slot
...
插槽 —
Vue
.js插槽 Slots |
Vue
.js在
Vue
2.6.0 之后,使用v-
slot
或者语法糖#插槽名定...
赞
踩
article
单目
3D
检测
入门
!从图像角度分析
3D
目标
检测
场景:
MonoDLE
...
点击上方“
3D
视觉工坊”,选择“星标”干货第一时间送达作者丨寒风来源丨自动驾驶之心点击进入—>
3D
视觉工坊学习交流群1简...
赞
踩
article
Unity
Shader
入门精要第七章 基础
纹
理
渐变
纹
理
_
unity
纹
...
尽管在一开始,我们在渲染中使用
纹
理
是为了定义一个物体的颜色,但后来人们发现,
纹
理
其实可以用于存储任何表面属性。一种常见的...
赞
踩
article
Docker部署
gitlab
_
docker
部署
gitlab
...
docker
部署
gitlab
_
docker
部署
gitlab
docker
部署
gitlab
...
赞
踩
article
axure
手机
页面
设计说明
_使用
Axure
打造最佳的
移动
端交互
原型
教程(附
元件库
分享)......
一直以来
Axure
在对
移动
端
原型
设计方面的支持都不是十分理想,它没有像目前其它几类
原型
设计工具(Justinmind、墨...
赞
踩
article
java
random
产生
随机数
_这些
Java
中
的
随机数
生成
工具/类,总有一款适合你...
本文由牛旦教育原创。0.导言本文主要是介绍在
Java
中
生成
随机数
的不同选择和方式。实际应用
中
根据自己的需要选择。1.Ja...
赞
踩
article
【AI视野·今日CV
计算机
视觉
论文速览 第171期】Tue, 3
Dec
2019
_
dih
: de...
AI视野·今日CV 第171期
视觉
论文速览---点云补全---场景补全---rgb和lidar融合_
dih
: dept...
赞
踩
article
UniDistill
:A Univers
a
l Cross-Mo
d
a
lity Knowle
d
ge Di...
介绍:这篇文章为BEV下3D目标检测领域提出了一种知识蒸馏方案,无论是Li
d
a
r还是C
a
mer
a
作为数据输入,它们均可以...
赞
踩
article
【
SystemVerilog
基础】
6
.
随机化
_
systemverilog
$
random
...
绿皮书第
6
章内容
_
systemverilog
$
random
systemverilog
$
random
...
赞
踩
article
Latex
表格
整体
居中
_
latex
table
放中间...
有时候,用 egin{center} - end(center} 来将
表格
整体
居中
,但它的
居中
只是
居中
了 egin...
赞
踩
article
js
实现
随机
生成
1
到
1
0
的
整数
_
js
生成
1
-
1
0
之间的
随机
整数
...
闲话不多说,直接用代码解释: //
js
实现
随机
生成
整数
var a = Math.random(); ...
赞
踩
article
【
游戏
编程
扯淡精粹】
UE5
蓝图
_
ue5
蓝图
...
最近新学
蓝图
编程
。。还没看
蓝图
VM代码,有些点不保证准确本文主要是从使用角度,分析你为什么需要学习
蓝图
,
蓝图
适合做什么,...
赞
踩
article
springboot
184
基于
springboot
的
校园
网上店铺
的设计与实现...
如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往...
赞
踩
article
byte
[]
数组
播放
wav
格式
音频文件
_
byte
数组
wav
格式转换...
很多时候我们需要从服务器上传输文件,如果我们把
音频文件
转成
byte
[]进行网络传输,然后再在客户端进行
播放
,我们可以将b...
赞
踩
article
AchartEngineActivity
引擎绘制
柱状图
、
曲线图_
axchart
...
1.简介 AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,...
赞
踩
article
JavaScript
random
方法
得到
随机整数...
一、
得到
1-3的随机整数代码:总结:Math.
random
()方法
得到
随机小数 *3将会
得到
小于3的数字,Ceil方法...
赞
踩
article
Axure
RP手机
移动
端
数据
可视化
组件大
数据
原型模板及元件库_
axure
移动
端原型...
亮色模版:客户充值
数据
分析、平台销售
数据
分析、消防救援支队趋势(动态地图)、公司业务支出表、社区居民信息统计、公司工资看...
赞
踩
相关标签
人体体态估计
echarts
前端
javascript
vue.js
3d
目标检测
计算机视觉
人工智能
深度学习
unity
渐变纹理
基础纹理
docker
gitlab
axure手机页面设计说明
java random产生随机数
java 中random类使用
java 生成随机数
java 获取随机数
java 随机数
java 随机数生成
点云
三维深度学习