gpt4 book ai didi

c - 意外的无符号最大结果

转载 作者:行者123 更新时间:2023-12-01 16:26:32 26 4
gpt4 key购买 nike

我正在尝试执行 K&R C 的练习 2-1,但是当我运行该程序时,结果是这样的:

        UNSIGNED TYPES
UNSIGNED CHAR: 0 255
UNSIGNED SHORT: 0 65535
UNSIGNED INT: 0 -1
UNSIGNED LONG; 0 -1

UNSIGNED INTUNSIGNED LONG 的结果不应该是 -1,它应该是引用。 (附录 B.11 第 213 页)

/* UNSIGNED TYPES */
printf("\n\tUNSIGNED TYPES\n");
printf("UNSIGNED CHAR: %d %d\n", 0, UCHAR_MAX);
printf("UNSIGNED SHORT: %d %d\n", 0, USHRT_MAX);
printf("UNSIGNED INT: %d %d\n", 0, UINT_MAX);
printf("UNSIGNED LONG: %d %d\n", 0, ULONG_MAX);

奇怪的是,我不认为我的代码有问题,最小范围是 0 因为我读到 unsigned 类型是非负的。我已经包含了 limits.hfloat.h

如何解决这个问题?

完整节目链接为here .

更新1:我尝试将最大范围的%d替换为unsigned long,这似乎有效,但是unsigned int4294967925 而不是 65535。感谢您帮助我解决 unsigned long 问题,希望你们能帮助我解决 unsigned int 问题。

更新 2:我将 ULONG_MAX 的字符序列从 %ul 更改为 %lu

这是代码和结果:

代码:

/* UNSIGNED TYPES */
printf("\n\tUNSIGNED TYPES\n");
printf("UNSIGNED CHAR: %d %u\n", 0, UCHAR_MAX);
printf("UNSIGNED SHORT: %d %u\n", 0, USHRT_MAX);
printf("UNSIGNED INT: %d %u\n", 0, UINT_MAX);
printf("UNSIGNED LONG: %d %lu\n", 0, ULONG_MAX);

结果:

        UNSIGNED TYPES
UNSIGNED CHAR: 0 255
UNSIGNED SHORT: 0 65535
UNSIGNED INT: 0 4294967925
UNSIGNED LONG; 0 4294967925

最佳答案

%d 用于有符号整数,对于无符号 int 和 long 分别使用 %u%lu

关于c - 意外的无符号最大结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com