gpt4 book ai didi

c++ - 关于C++中类型强制的一个简单问题

转载 作者:太空狗 更新时间:2023-10-29 23:38:01 25 4
gpt4 key购买 nike

给定一个函数原型(prototype)和一个类型定义:

int my_function(unsigned short x);
typedef unsigned short blatherskite;

标准定义了以下情况:

int main(int argc, char** argv) {
int result;
blatherskite b;

b=3;
result = my_function(b);
}

我是否通过函数原型(prototype)可预测地获得类型强制?

最佳答案

如果你的问题真的是关于参数类型和参数是否匹配,那么答案是肯定的。 typedef 不引入新类型,它只是为现有类型创建别名。变量 b 的类型为 unsigned int,就像参数一样,即使 b 是使用 typedef-name blatherskite 声明的.

不过,您的示例并不能很好地证明这一点。在 C++ 中,所有整数类型都可以相互转换,因此(忽略范围问题)即使 blatherskite 指定了不同的类型(新类型),代码也会定义行为。但事实并非如此。所以这也是完全有效的

void foo(unsigned int* p);
...
blatherskite *pb = 0;
foo(pb); // <- still valid

关于c++ - 关于C++中类型强制的一个简单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2907473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com