我只是在找通过人页printf和某事发生在我身上。我想知道如果有任何"语言的律师"在这里可以回答一个相对较简单的问题:-P.

这样的't'修改定义为

一下整数,转换 相当于一个ptrdiff_t的论点。

是什么 应该 发生,如果你把这个带unsigned integer转换?显然o,u和X的所有所有的旨在将被解释为未签署的价值观,而在d和我签署。

同样,还有签署/unsigned版本的所有改进剂(int/unsigned int, size_t/ ssize_t, 等)除了 ptrdiff_t.

在实践中,没有什么不好的事情发生,因为无符号版本的类型占据相同数量的空间签订的版本。这样的权利有关的字节获得弹出叠。

所以没有什么"坏"的情况,事实上,在印刷品的预计价值为所有的事情进行测试,除了"INT_MIN"(假设 sizeof(int) == sizeof(ptrdiff_t).

printf("%tu %td\n", INT_MIN, INT_MIN);

印刷品

2147483648 -2147483648

在一个32位系统。

不准有任何的意见吗?我想答案是"不确定的行为。" 但我想我会要求;).

有帮助吗?

解决方案

什么都看不到这里。代码你已经写入法律。

只是一些事实,至于为什么:

  • 所有签署整数类型有未签署的对应方,同样的尺寸/准的要求
  • ptrdiff_t 规定须签署整数类型的标准。因此,它有一个未签署的双胞胎。(事实上,类似的逻辑也适用于 size_t 作为良好 ssize_t 不是C,但POSIX)
  • t 长说明必须工作 d, i, o, u, x, X 类型
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top