为什么 sizeof int 是错误的,而 sizeof(int) 是正确的?

2024-04-01

我们知道sizeof是一个运算符,用于计算任何数据类型和表达式的大小,当操作数是表达式时,可以省略括号。

int main()
{
        int a;

        sizeof int;
        sizeof( int );
        sizeof a;
        sizeof( a );

        return 0;
}

的第一次使用sizeof是错的,而其他人是对的。

使用gcc编译时,会给出如下错误信息:

main.c:5:9: error: expected expression before ‘int’

我的问题是为什么C标准不允许这种操作。将要sizeof int造成任何歧义吗?


以下内容可能会产生歧义:

sizeof int * + 1

Is that (sizeof (int*)) + 1, or (sizeof(int)) * (+1)?

显然,C 语言可以引入一个规则来解决歧义,但我可以想象为什么它没有麻烦。就目前的语言而言,类型说明符永远不会在表达式中“裸露”出现,因此不需要规则来解析第二个*是类型或算术运算符的一部分。

现有语法确实已经解决了潜在的歧义sizeof (int *) + 1. It is (sizeof(int*))+1, not sizeof((int*)(+1)).

C++ 有一个类似的问题需要通过函数式转换语法来解决。你可以写int(0)你可以写typedef int *intptr; intptr(0);,但你不能写int*(0)。在这种情况下,解决方案是“裸”类型必须是一个简单的类型名称,它不能只是任何可能包含空格或尾随标点符号的旧类型 ID。或许sizeof可以用相同的限制来定义,我不确定。

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

为什么 sizeof int 是错误的,而 sizeof(int) 是正确的? 的相关文章

  • 如何在MVVM中管理多个窗口

    我知道有几个与此类似的问题 但我还没有找到明确的答案 我正在尝试深入研究 MVVM 并尽可能保持纯粹 但不确定如何在坚持模式的同时启动 关闭窗口 我最初的想法是向 ViewModel 发送数据绑定命令 触发代码来启动一个新视图 然后通过 X
  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • .htaccess 维护多个IP

    我在 htaccess 文件中使用以下代码将我的网站置于维护状态 本质上 它的作用是将非特定 IP 地址的任何人重定向到 maintenance 我有一个维护页面的子域 因此允许我在真实站点上执行测试 我的问题是 如何向该行添加第二个 IP
  • C# 只读二维数组

    在 C 中是否有返回只读二维数组的既定方法 I know ReadOnlyCollection是用于一维数组的正确选择 并且我很高兴编写我自己的包装类来实现this get 但如果这个轮子已经存在 我不想重新发明轮子 不幸的是 没有任何内置
  • Python 日志记录仅从脚本记录

    我正在我的一个简单脚本中使用 Python 日志记录模块 目前进行了以下设置 logging basicConfig format asctime s message s level logging INFO datefmt Y m d H
  • 如何打开机器人电子日志记录

    我需要一种非常简单的方法来让 Robolectric 3 0 打开日志记录 我想看到 robolectric 的输出 而不仅仅是我的测试 我在网上尝试的一切都不起作用 我把这个贴在哪里 robolectric logging enabled
  • 我如何自定义所有 UITextField 的 borderWidth 外观?

    我正在尝试自定义 borderWith 的所有 UITextField 外观 尝试这样的事情 只有前两行有影响 其余线路无法正常工作 UITextField appearance setBackgroundColor UIColor gre
  • 是否可以在

    这个问题在这里已经有答案了 我怎样才能添加 div or a span 标签内的 span div
  • Node-sass 未与 Node / Express 一起编译

    我试图让 node sass 与express一起工作 但我根本无法让它进行任何编译 这是我的 app js 文件 var express require express sass require node sass routes requ
  • 策略模式或函数指针[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在 C 中 当我有可以在运行时接受不同行为的算法时 我宁愿使用函数指针 例如 用于绘制图表的程序有一种绘制线条的算法 该算法可以接受任何函数
  • 同步jquery $.ajax而不锁定IE?

    花了一些时间尝试实现这一点 并找到了一个我认为在 Firefox 中效果很好的解决方案 但是在 IE 中测试时发现使用 async false 会导致浏览器被锁定 停止响应并似乎已冻结 通话时长 要求基本如下 我提供了一系列用户可以检查的复
  • UITableView reloadData EXC_BAD_ACESS 代码=2

    我有用于加载 UITableView 的代码 int numberOfSectionsInTableView UITableView tableView if tableView self peopleTableView return se
  • printf 不在 eclipse 的控制台上打印?

    include
  • Spark sql row_number 还是序列号?

    随机数生成器 SparkSQL 例如 Netezza 序列号 mysql 序列号 Thanks Spark sql 中的序列在 Spark 1 6 中 其 select monotonically increasing id from ta
  • “看过这个的人也看过”算法

    我正在尝试编写一种算法 其作用有点像亚马逊的 购买此产品的人也购买了 两者之间的区别在于 我的只是计算您在单个会话中观看的 产品 而亚马逊则计算每次购买 结账 我在实施和弄清楚算法应该是什么方面遇到了一些困难 到目前为止 我正在通过 Ses
  • 在 Cassandra 中选择列为空的行

    我在 Cassandra 中有下表 CQL 规范 3 3 0 Users
  • MIPS 中的影子寄存器是什么以及它们如何使用?

    当我了解 MIPS 架构时 我遇到了影子寄存器 据说它们是通用寄存器的副本 我无法理解以下内容 何时使用影子寄存器 MIPS 影子寄存器用于减少处理中断时的寄存器加载 存储开销 分配了影子寄存器组的中断不需要保存任何现有上下文来提供空闲寄存
  • 在 Java 桌面应用程序中保存数据的最佳方法是什么?

    我的桌面应用程序中有一个很大的 Java 对象树 我正在尝试确定将它们作为文件保存到文件系统的最佳方法 我的一些想法是 使用 DataOutputStream 滚动我自己的序列化器 这将使我能够最大程度地控制文件中的内容 但代价是对其进行微
  • 使用文件协议调用 Chrome 中 iframe 中定义的 JavaScript 函数

    这个问题与此处提出的问题的完全更新版本非常相似 如何使用文件协议在 Chrome Webkit 中从一帧调用 JavaScript 函数到另一帧 https stackoverflow com questions 2570718 how t
  • 用 C# 为信息检索应用程序编写倒排索引

    我正在编写一个内部应用程序 其中包含多条文本信息以及有关这些文本的大量数据 这些数据将按照输入顺序保存在数据库 SQL Server 尽管这可能会改变 中 我希望能够搜索这些信息中最相关的信息 并将最相关的信息放在顶部 我最初考虑使用 SQ
  • 如何将距离从度转换为米?

    我将 OpenLayers 与普通墨卡托地图一起使用 并尝试通过查找经纬度中的点网格来对边界框进行采样 bbox 以 latlon 表示 例如 48 1388 15 3616 55 2057 3 9359 我可以定义一个距离degrees
  • 为什么 sizeof int 是错误的,而 sizeof(int) 是正确的?

    我们知道sizeof是一个运算符 用于计算任何数据类型和表达式的大小 当操作数是表达式时 可以省略括号 int main int a sizeof int sizeof int sizeof a sizeof a return 0 的第一次