sách gpt4 ai đã đi

Câu hỏi 3: NULL - NULL có được định nghĩa không? (uintptr_t)NULL - (uintptr_t)NULL có được định nghĩa không?

In lại 作者:行者123 更新时间:2023-12-05 01:09:57 32 4
mua khóa gpt4 Nike

  1. 是否定义了NULL - NULL?

  2. (char *)NULL - (char *)NULL 定义了吗?

  3. 是否定义了(uintptr_t)NULL - (uintptr_t)NULL?

我知道它适用于我使用的所有实现。但是从标准的角度来看它是什么样子的呢?我找不到明确的答案。

编辑:从欺骗我假设问题的一个答案是:是的。

第二个和第三个问题呢?

1 Câu trả lời

C 标准文档 VÔ GIÁ TRỊ被定义为一个宏,它扩展为一个实现定义的空指针常量

根据实际定义,表达式NULL - NULL可能有一个定义的值,也可能没有。例如:

  • nếu như VÔ GIÁ TRỊ定义为 #define NULL 0 ,Sau đó NULL - NULL实际上是 số nguyên 类型的常量表达式值为 0 .
  • nếu như VÔ GIÁ TRỊ定义为 #define NULL ((void *)0) , 表达式 VÔ GIÁ TRỊ是违反约束的,因为算术没有在 void 指针上定义。

第二个问题:Đúng(char*)NULL - (char*)NULLhoặc (uintptr_t)NULL - (uintptr_t)NULL定义?。这些表达式不再违反约束:

  • 自从 trống rỗng * 转换后算术类型是实现定义的,没有什么可以说 (uintptr_t)NULL - (uintptr_t)NULL 的值.它将是 0在大多数当前系统上,但 C 标准没有定义它。

  • 转换为 (char *)是一个稍微不同的问题:两个指针的差异仅在它们指向同一个数组或数组最后一个元素之后的位置时才定义,在本次讨论中,一个对象被认为是一个元素的数组。 (char *)NULL 中的情况并非如此。 ,它是一个空指针,因此不指向任何数组或对象。

关于c - 三问 : Is NULL - NULL defined? (uintptr_t)NULL - (uintptr_t)NULL 定义了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64739189/

32 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com