gpt4 book ai didi

指针与整数C的比较与赋值

转载 作者:太空狗 更新时间:2023-10-29 14:57:49 25 4
gpt4 key购买 nike

我对这两个陈述有一个理论问题:

假设 p 是一个指向整数的指针,a 是一个整数:

a) if(p==a){.....}if(p>a)..

b) p=a;

它们都是非法的,b 尤其危险,但标准 C 如何考虑它们?

阅读标准,我还没有发现它们是错误,未定义的行为,未指定的行为,约束违反,其中之一是合法的还是其他。

翻了无数类似的问题,没找到解决办法。

最佳答案

都是非法的。为了进行比较,两边大部分都可以转换为通用类型,对于赋值,右侧必须可以转换为左侧的类型,并且:

Conversions that involve pointers, other than where permitted by the constraints of 6.5.16.1, shall be specified by means of an explicit cast.

(6.5.4, 3; 6.5.16.1描述了空指针常量、void指针和_Bool的一些异常情况任务。)

当您添加显式转换以将指针转换为整数时,程序将再次有效,并且您将从比较中获得 bool 值。结果取决于实现。以整数形式存储指针时,请务必使用 uintptr_t

关于指针与整数C的比较与赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640943/

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