首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C(在win32上):如何设置大于1的采光值?

C(在win32上):如何设置大于1的采光值?
EN

Stack Overflow用户
提问于 2017-02-08 06:13:20
回答 1查看 55关注 0票数 1

以下是daylight test_daytime.c的示例

代码语言:javascript
复制
#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;
}

使用编译

代码语言:javascript
复制
$gcc test_daytime.c -o test_daytime.exe && ./test_daytime.exe

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

代码语言:javascript
复制
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,同一台机器)

代码语言:javascript
复制
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环境)?

EN

回答 1

Stack Overflow用户

发布于 2017-02-08 07:08:25

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

代码语言:javascript
复制
printf ("tz: \"%40s\" - daylight: %d\n", tzval, !!daylight);

对于任何非零值的日光,将打印1 (如果值为零,则打印0 )。(希望我没弄错你的问题)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42101023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档