为什么如果我> J,ptrdiff_t返回带有 i - j 的名义差数字,如果我< J,则返回一个大的不相关数字

  • 本文关键字:返回 数字 如果 不相关 一个 ptrdiff c
  • 更新时间 :
  • 英文 :

printf("%td",i-j); when `*i > *j`  the type of both `i` and `j` is `int`

如果我们采取, i = &a; j = &b;

我们会得到一个正常的整数差,即 42-23 = 19

但是如果我们使用此代码,

printf("%tdn",i- j);   if `*i < *j`

在相同的情况下,答案是一个不相关的整数。为什么?

根据 6.5.6 加法运算符,C 标准第 9 段(强调我的(:

当减去两个指针时,两个指针都应指向相同的数组对象,或者一个超过最后一个元素的数组对象数组对象...

因此,您的结果是未定义的行为。

代码的行为未定义。

指针算术,包括计算两个指针之间的差异,仅在数组中定义(包括一个超过数组末尾的对象,为此目的,不是数组元素的对象被视为单个元素数组(。

您的格式说明符%td是正确的

相关内容

  • 没有找到相关文章

最新更新