文字值的范围是什么?编译器如何为其分配内存?

2024-02-28

int x = 12;

12被认为是整数文字,因此不能在 LValue 中使用。

  1. 编译器如何为文字分配内存?
  2. 文字的范围是什么?
  3. 为什么我们无法获取其范围内包含 &12 的地址?

好的,问题中的例子不好。
但问题仍然有效:
咱们试试吧:

Foo getFoo() {return Foo();}

int func()
{
    getFoo().bar();   // Creates temporary.
    // before this comment it is also destroyed.
    // But it lives for the whole expression above
    // So you can call bar() on it.
}

int func2()
{
    Foo const& tmp = getFoo();  // Creates temporary.
                                // Does not die here as it is bound to a const reference.

    DO STUFF
}  // tmp goes out of scope and temporary object destroyed.
   // It lives to here because it is bound to a const reference.

编译器如何为临时对象分配内存?

Undefined up-to the compiler.
But it would be real easy to allocate a tiny bit more memory onto the stack frame and hold it there. Then destroy it and reduce the size of the stack frame (though this answer makes a whole lot of assumptions about the underlying hardware that you should never do (best just to think of it as the compiler doing magic)).

临时对象的范围是什么?

临时对象一直存在到表达式结束(通常是;) 除非它绑定到 const 引用。如果它绑定到 const 引用,那么它也存在于该引用所属范围的末尾(有一些例外(如构造函数))。

为什么我们无法获取其范围内包含 &12 的地址?

问题12中不是临时对象。
它是一个整数文字。

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

文字值的范围是什么?编译器如何为其分配内存? 的相关文章

随机推荐

  • Vue 不是构造函数

    I using webpack 在 chrome 中构建并运行后显示此错误 我不知道如何解决它 我的代码很简单 devDependencies babel core 6 23 1 babel loader 6 3 2 babel plugi
  • 将 XML 注释添加到 LINQ to SQL 设计器生成的类属性

    我使用 Visual Studio 中的 LINQ to SQL 设计器来创建数据库的对象模型 现在 我想向每个生成的属性添加 XML 注释 但我不知道如何在下次刷新 dbml 文件时不删除属性的情况下执行此操作 如何才能做到这一点 我相信
  • 无法从本地主机访问 Django

    这有点奇怪 我无法从本地主机访问 django 但我可以从本地 IP 访问它 python manage py runserver 0 0 0 0 8000 然后当我尝试访问时 我的主机文件 127 0 0 1 lmlicenses wip
  • -bash: ./configure: 没有这样的文件或目录 - MySQL 在 Mac OS X 10.6 上安装

    我正在尝试在 Mac OS X 10 6 上安装 MySQL 下载 MySQL 并使用 tar xzvf mysql 5 1 37 tar gz 解压后 我尝试运行此配置行 configure prefix usr local mysql
  • 使用 popen() 调用 shell 命令?

    当通过 xcode 运行以下代码时 我得到不一致的行为 有时它会正确打印 git 版本 有时它不会打印任何内容 但 shell 命令的返回码始终为 0 关于为什么会这样的任何想法吗 我究竟做错了什么 define BUFFER SIZE 2
  • UIRefreshController 结束动画问题

    当我呼唤self refreshControl endRefreshing 它将 tableView 像它应该的那样恢复到原来的位置 我应该如何对其进行动画处理 以便它能够流畅地返回到原来的位置endRefreshing Try this
  • UINavigationBar - 更改 UIBarButtonItem 位置

    我在我的应用程序中使用 UINavigationController 及其栏 现在我想更改 leftBarButtonItem 和 rightBarButtonItem 的位置 我希望它们位于不同的 x 和 y 位置 具有自定义的宽度和高度
  • 如何选择Eclipse界面语言?

    我安装了 Flash Builder Burrito 版本并将其添加为dropin到我的日食 现在所有的 Eclipse 界面都是法语的 我真诚地热爱我的国家 但是D boguer and 世代相传真的没有那么性感Debug and 构建路
  • 查一下X509Certificate2是否被撤销?

    我怎样才能知道是否X509Certificate2已被撤销 我假设Verify 方法检查它 但它没有在帮助中明确说明 有人知道吗 另外 Verify 是否检查证书是否过期 您是否尝试过使用X509链条 http msdn microsoft
  • 如何找到 Phabricator 对象的 PHID?

    我需要在 Phabricator 安装中获取一个项目和多个用户的 PHID 看来找出如何做到这一点应该是微不足道的 但我搜索了文档却无济于事 我是不是找错地方了还是怎么的 最简单的方法 前往项目 单击新建任务 查看 URL 它会有一个参数
  • C++ 中的 const 运算符重载问题

    我在使用 const 版本重载 operator 时遇到问题 include
  • C函数判断IP地址是否为多播地址

    如果用户输入一些IP地址 例如 239 4 4 4 我如何使用linux C中可用的任何函数确定该IP地址是多播的 IPv4 多播地址由最高有效位定义1110 so 如果IP地址存储为32位unsigned变量 应用 gt gt 28到变量
  • 如何使用 vb.net 比较字符串的百分比匹配?

    我用头撞墙有一段时间了 现在正在尝试不同的技术 它们都工作得不好 我有两根弦 我需要比较它们并获得准确的匹配百分比 IE 四分和七年前 TO 对于分数和七年前 好吧 我首先将每个单词与每个单词进行比较 跟踪每个命中 然后百分比 count
  • .NET 4 ISet<> HashSet<> 可以替代 NHibernate Iesi.Collections ISet 、 HashSet 吗?

    NET 4 ISet HashSet 可以替换 NHibernate Iesi Collections ISet HashSet 吗 我正在使用 Castle 代理和 NHibernate 3 0 是的 有两种方法 将您的收藏声明为ICol
  • 是否可以使用变量动态更改代码中的类名称?

    我有这个功能 NSString getId id id field withColumn int test column withTable NSString tableName renvoyer le label NSError erro
  • 为什么结构化绑定禁用 RVO 并移动 return 语句?

    假设我们有一个名为AAA支持两者复制 移动 class AAA public AAA default AAA default AAA const AAA rhs std cout lt lt Copy constructor lt lt s
  • 如何从参数哈希中安静 image_submit_tag?

    有谁知道当您将 image submit tag 与 get 方法一起使用时如何消除 x 和 y 参数 我有一个简单的搜索表单 并使用 get 传递 url 中的值 当我使用 image submit tag 时 它还会附加 x 和 y 坐
  • 显示 django 表单错误消息而不仅仅是字段名称

    我有一个表单 我想在 for 循环中显示错误 for error in form errors tr td error td tr endfor 通过这样做 error 只包含有错误的字段名称 但不包含错误消息 如何显示错误消息 您可以通过
  • 为什么C++不让结构更紧凑呢?

    例如 我有一个class class naive public char a long long b char c int d 根据我的测试程序 a to d一个接一个地建立起来 就像 a bbbbbbbb c dddd 表示未使用 为什么
  • 文字值的范围是什么?编译器如何为其分配内存?

    int x 12 12被认为是整数文字 因此不能在 LValue 中使用 编译器如何为文字分配内存 文字的范围是什么 为什么我们无法获取其范围内包含 12 的地址 好的 问题中的例子不好 但问题仍然有效 咱们试试吧 Foo getFoo r