首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C中的类型提升,传递作为参数的长时间

C中的类型提升,传递作为参数的长时间
EN

Stack Overflow用户
提问于 2017-09-17 04:47:54
回答 1查看 111关注 0票数 1

我对C中函数参数类型提升的理解是,如果我用charshort类型的参数调用非原型函数,它将被提升为int

问题:如果我用long作为参数,并以sizeof(long) > sizeof(int)命名它会怎么样?

如果参数作为long传递,为什么不选择long作为应该将所有积分参数提升到的类型?参数类型提升背后的原因,难道不是为了使编译器更容易编写,使堆栈上的参数保持相同的长度,这样运行时系统只需要知道参数的数量,而不需要考虑它们的大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-17 05:02:13

为什么不选择long..。

因为当创建“将所有东西推广到long”设计时,并不存在int

现在,更改默认的升级规则将打破几乎所有现存的C代码,因为它还会改变调用(如printf()open() )的行为。

任何varargs类型的函数都会受到影响,其中包括open()。也许还有其他更微妙的问题,但“打破一切”是不这样做的充分理由。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46264244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档