在C中键入Promotion,将long作为参数传递

时间:2017-09-17 12:47:55

标签: c c89

我对C中函数参数类型提升的理解是,如果我调用一个类型为charshort的参数的非原型函数,它将被提升为{{1 }}。
问题:如果我使用int作为参数并long调用该怎么办?

如果参数作为sizeof(long) > sizeof(int)传递,为什么不选择long作为应该将所有积分参数提升到的类型?不是参数类型提升背后的原因,是通过使堆栈上的参数长度相同来使编译器更简单,这样运行时系统只需要知道参数的数量,而不是打扰他们的尺寸?

1 个答案:

答案 0 :(得分:3)

  

为什么不选择file = open("data.txt", "r") studentInfo = file.readlines() file.close() lines = [[line] for line in studentInfo] >>> print(lines) [['123, Bobbie Smith\n'], ['456, Suzie Lan\n'], ['789, Alex Palmer']] ...

因为{&#34}将所有内容宣传到long"而long并不存在设计已经创建。

现在,更改默认促销规则几乎可以打破现有C代码的每一部分,因为它也会改变intprintf()等来电的行为。

任何varargs类型的功能都会受到影响 - 其中包括open()。可能还有其他更微妙的问题,但是"打破了所有的一切"是不充分的理由。