gpt4 book ai didi

比较两种不同类型的指针

转载 作者:行者123 更新时间:2023-12-02 06:50:10 27 4
gpt4 key购买 nike

在 C 编程中,像这样比较两种不同类型的指针:

int i = 1;
double d = 2.5;

int *ip = &i;
double *dp = &d;

if(ip != dp) // is it UB?
printf("Not same\n");

ip != dp 是 C 中未定义的行为吗?

最佳答案

直接比较 ip != dp 在 C 中无效。!= 运算符的规范不允许混合 int *double * 一个比较中的指针。这是 C 中的约束冲突(又名“编译错误”)。符合标准的 C 编译器会通过发出诊断消息来报告您的代码无效。

接下来会发生什么完全取决于您的编译器。与C语言无关。

将此代码称为“产生未定义行为的 C 代码”会产生误导。这在形式上是正确的,但它与说“ war 与碎片”的文本是“产生未定义行为的 C 代码”(在一些接受它的奇怪 C 编译器中)一样有意义。

这里的关键是这个代码语言限制意味着它根本不是C代码。

关于比较两种不同类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230050/

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