我试图理解 C99 sect 6.5.6 的第 8 和第 9 段(加法运算符)
第 8 段是否意味着:
int a [4];
int *p = a;
p --; /* undefined behaviour */
p = a + 4; /* okay */
p --; /* okay */
p += 2; /* undefined behaviour */
p = a;
p += 5 - 5; /* okay */
p = p + 5 - 5; /* undefined behaviour */
对于第 9 段,我的理解是 ptrdiff_t 总是大到足以容纳 2 个指针的差异。但是措辞:“只要值适合 ptrdiff_t 类型的对象”似乎表明这种理解是错误的。我的理解是错误的还是C99有别的意思。
您可以在此处找到标准草案的链接:http: //cboard.cprogramming.com/c-programming/84349-c-draft-standards.html