c/c++语言开发共享如果i> j,为什么ptrdiff_t返回一个正常的差异数字i-j如果i <j则返回一个大的无关数字

printf("%td",ij); 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 正确的。

      以上就是c/c++开发分享如果i> j,为什么ptrdiff_t返回一个正常的差异数字i-j如果i <j则返回一个大的无关数字相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522130.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐