gpt4 book ai didi

C(在 win32 上): How to fix value of daylight greater than 1?

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:47 27 4
gpt4 key购买 nike

daylight 的以下示例test_daytime.c

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int
main (void)
{
char *tzval;

tzval = "TZ=";
putenv(tzval);
tzset();
printf ("tz: \"%40s\" - daylight: %d\n", tzval, daylight);

tzval = "TZ=EST+5EDT,M3.2.0/2,M11.1.0/2";
putenv(tzval);
tzset();
printf ("tz: \"%40s\" - daylight: %d\n", tzval, daylight);

tzval = "TZ=AEDT";
putenv(tzval);
tzset();
printf ("tz: \"%40s\" - daylight: %d\n", tzval, daylight);

return 0;
}

编译为

$gcc test_daytime.c -o test_daytime.exe && ./test_daytime.exe

在 Cygwin(uname:CYGWIN_NT-10.0-WOW)和 MSYS2(uname:MSYS_NT-10.0)上产生以下输出

tz: "                                     TZ=" - daylight: 0
tz: " TZ=EST+5EDT,M3.2.0/2,M11.1.0/2" - daylight: 1
tz: " TZ=AEDT" - daylight: 0

这是在 MSYS 上的结果(uname:MINGW32_NT-6.2,同一台机器)

tz: "                                     TZ=" - daylight: 1
tz: " TZ=EST+5EDT,M3.2.0/2,M11.1.0/2" - daylight: 69
tz: " TZ=AEDT" - daylight: 84

我假设这是因为 MinGW 中使用的 MSVCRT,请参阅 MinGW MSYS, MSVCRT, and the TZ environment variable ,但值 > 1 不是完全错误的吗(我知道联机帮助页上说“不为零”,但是否有任何系统不会将值设置为不同于 0/1 的值)?

知道如何解决这个问题(不改变 MSYS 环境)吗?

最佳答案

如果要确保任何 true(即非零)值变为 1,最简单的方法是使用 !! :

printf ("tz: \"%40s\" - daylight: %d\n", tzval, !!daylight);

将为日光的任何非零值打印1(如果值为零则打印0)。(希望我正确回答了你的问题)

关于C(在 win32 上): How to fix value of daylight greater than 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101023/

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