小编rto*_*ala的帖子

指针整数强制转换的定义

我对从指针到整数和各种相关操作的转换的定义性(未定义性、实现定义性)感兴趣。我主要对 C11 感兴趣,但欢迎其他标准版本(甚至 C++)的答案。

出于这个问题的目的,假设 C 实现提供了intptr_t.

考虑以下函数:

#include <assert.h>
#include <stdint.h>

int x;
int y;
int z[2];

void f1(void) {
    int *p = &x;
    intptr_t i = p;
}

void f2(void) {
    int *p = &x;
    intptr_t i1 = p;
    intptr_t i2 = p;
    assert(i1 == i2);
}

void f3(void) {
    int *p1 = &x;
    int *p2 = &y;
    intptr_t i1 = p1;
    intptr_t i2 = p2;
    assert(i1 != i2);
}

void f4(void) {
    int *p1 = …
Run Code Online (Sandbox Code Playgroud)

c c++ language-lawyer

5
推荐指数
1
解决办法
135
查看次数

标签 统计

c ×1

c++ ×1

language-lawyer ×1