rand() 为什么以及如何同时存在于 cstdlib 的全局和 std 命名空间中?

2023-12-11

我明白那个rand(),作为示例函数<cstdlib>,在全球和全球范围内都存在std命名空间。

实际上,以下内容将编译无错误,即两次调用std::rand() and rand()将是合法的。

#include <cstdlib>    
int main() {
    std::rand();
    rand();    
}

它有什么用处以及它到底是如何实现的(该函数位于两个命名空间中)?


行为是未指定的行为按照标准。
根据标准,包括cstdlib导入符号名称std命名空间,也可能在全局命名空间中。如果您依赖于全局名称空间中包含的符号名称,那么您的程序是不可移植的,并且您依赖于特定实现的行为。


为了不依赖于实现行为,您必须:

Include cstdlib并使用完全限定名称rand.

std::rand()

参考:

C++11 标准:D.5 C 标准库头文件
Para 3:

[ 示例:标题<cstdlib>确实在命名空间内提供其声明和定义std。它还可以在全局命名空间内提供这些名称。标题<stdlib.h>确实在全局命名空间中提供了相同的声明和定义,就像在 C 标准中一样。它还可以在命名空间内提供这些名称std。 —结束示例]


好读:
我应该在 C++ 程序中包含 或 吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rand() 为什么以及如何同时存在于 cstdlib 的全局和 std 命名空间中? 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col

随机推荐

  • 如何在java中迭代json对象

    我正在尝试迭代我的 json 文件并获取所需的详细信息 这是我的 json 000 component c determinantType dt determinant d header h determinantvalue null 00
  • IE jQuery 不透明度抗锯齿问题

    我正在使用 jQuery 淡入和淡出主页上链接的 png 图像http www logandwight com 在 IE7 和 IE8 中 文本没有抗锯齿功能 并且都是四方形的 我尝试过弄乱不透明度设置 然后尝试专门为 IE 设置过滤器属性
  • 在更新页面上包括关系实体的列表视图

    我正在尝试扩展更新视图以包含编辑表单下方一些相关项目的列表视图 我有两个模型 Publishers 和 Volumes 它们具有多对多关系 我想做的是 当用户单击发布者的编辑按钮时 我希望他们转到具有标准编辑字段的页面 但在表单下方还有一个
  • Spring Batch JdbcPagingItemReader 似乎没有执行所有项目

    我正在开发一款应用程序 该应用程序从 Oracle 数据库中提取记录 然后将其导出为单个表格文件 但是 当我尝试使用 JdbcPagingItemReader 从数据库读取数据并写入文件时 我仅获得 pageSize 中指定的记录数 因此
  • R:根据条件的行值填充data.frame中的新列?

    我想根据行中的值在 data frame 中创建新列 如果 type 不等于 a 则我的 new area 列应包含来自 a 类型的 area 的数据 这是针对多个 距离 的 Example create data frame distan
  • Jruby:NameError:未初始化的常量 Neo4j

    我从 git 运行了这个例子 https github com andreasronge neo4j require rubygems require neo4j Neo4j Transaction run do node Neo4j No
  • useLocation 无法识别状态

    我开始使用react router 我发现我可以在 Link 组件中传递 props 以便某些值可以传递到另一个组件 我正在使用的按钮内发送一个名为 value 的组件 但是在接收该参数的组件中会显示一条错误消息 其中包含消息 对象可能为空
  • R - lubridate:将持续时间分割为“子持续时间”

    我有一个 R 整洁的数据集my durations其中数据框中的每个案例对应于在一段时间内采集的样本 如下所示 gt glimpse my durations Observations 300 Variables 5 sample id
  • 如何使用 Sys.Date() 获取上一年(2020 年)的摘录?

    Sys Date 给出今天的月 年和日期 2021 08 09 但是我该如何使用Sys Date 获取上一年 2020 的提取信息 谢谢你 Every Date or Datetime对象可以转换为POSIXlt其中 请参阅帮助 有许多子组
  • 从 Bash 中的行中删除中间的 n 个字符

    我正在尝试剪掉文件中每一行的中间部分 所有的行都是这样的 79 472850 97 SILENCE 我需要结束 79 472850 SILENCE 由于每行都有从字符 10 开始到字符 14 结束的不需要的部分 我试图以这种方式使用 sed
  • _IContactsAndGroupsCallback.OnLookUp

    我想按照以下指南为 Office 提供 IM 状态等http msdn microsoft com en US library office jj900715 aspx off15 IMIntegration ImplementRequir
  • Android 的 sqlite 加密

    我正在努力寻找在 Android 设备上加密我的 sqlite 数据库的可能性 但我无法找到令人满意的解决方案 我需要类似库之类的东西来引用 以便在使用正常的 sqlite 函数时对我的数据库进行 动态 加密 解密 我不想在存储之前加密数据
  • JTextArea不显示文本

    在我在文本区域中显示文本的函数中 我编写了以下代码行 但它没有显示任何文本 jTextArea1 setText Packet n jTextArea1 getText 我正在使用 swingworker 来执行后台任务 这是我的代码 pu
  • UIImage 将原始像素从白色更改为透明?

    我已经尝试了每个问题的一些代码 如何使 UIImage 上的一种颜色透明 如何遮盖 UIImage 以使白色在 iphone 上变得透明 但没有成功 不幸的是 使用核心图形和图像并不是我的强项 我将如何访问 UIImage 的原始数据并将白
  • android loadIcon 生成 outOfMemoryError

    我只有一点点ListView包含所有已安装的应用程序及其图标但如果安装了太多应用程序 我会遇到outOfMemoryErrors在做的时候 Drawable app icon applicationInfoList get i loadIc
  • 禁用 RichTextBox WF 上的删除按钮

    我试图禁止人们删除 Richtextbox 中的文本框 该项目使用windows窗体 这是我的代码 private void Form1 Load object sender EventArgs e richTextBox1 KeyPres
  • 如何在 Android 中运行媒体扫描仪

    我想在捕获图像时运行媒体扫描仪 捕获后 图像会在网格视图中更新 为此 我需要运行媒体扫描仪 我找到了两个解决方案来运行媒体扫描仪一个是播送事件 另一个是运行媒体扫描仪类 我认为在 Ice Cream Sandwich 4 0 中引入了媒体扫
  • Mac 上的 TensorFlow 安装错误

    我想在我的 Mac 上通过 PyCharm 使用 TensorFlow 但是当我使用时 pip install https storage googleapis com tensorflow mac tensorflow 0 5 0 py2
  • 如何在Python中设置线程特定的环境变量?

    我想创建两个 或更多 线程 并在每个线程中执行不同的外部程序 比方说aaa and bbb 这些外部程序需要位于不同目录中的库 比方说 aaalib and bbblib 所以我必须设置环境变量LD LIBRARY PATH在执行它们之前
  • rand() 为什么以及如何同时存在于 cstdlib 的全局和 std 命名空间中?

    我明白那个rand 作为示例函数