12

size_tとして宣言されてunsigned intいるため、負の値を表すことはできません。
ではssize_t署名されたタイプのsize_t権利はどれですか?
これが私の問題です:

#include <stdio.h>
#include <sys/types.h>

int main(){
size_t a = -25;
ssize_t b = -30;
printf("%zu\n%zu\n", a, b);
return 0;
}

なぜ私が得たのか:

18446744073709551591
18446744073709551586

結果として?これは符号なし型であるため可能である可能性があること
を私は知っていますが、なぜ私は??でも間違った結果を得たのですか?size_tssize_t

4

4 に答える 4

21

最初のケースでは、符号なしの型に割り当てています - a。2 番目のケースでは、間違った書式指定子を使用しています。2 番目の指定子は、%zdの代わりにする必要があり%zuます。

于 2012-08-29T10:01:18.503 に答える