gpt4 book ai didi

c - C if 语句条件中 & 符号的使用

转载 作者:行者123 更新时间:2023-11-30 21:00:57 25 4
gpt4 key购买 nike

我是 C 新手,正在尝试理解 NREL available here 中的一些代码。这样我就可以在 R 中编写类似的函数。这是我似乎无法弄清楚的代码部分:

long S_solpos (struct posdata *pdat)
{

if ( pdat->function & L_DOY )
doy2dom( pdat );
}

特别是,评估标准要求是什么:

if ( pdat->function & L_DOY )

我知道pdat是一个指向posdata结构的指针,并且从头文件中我知道“function”是posdata结构中的一个变量,其中包含各种整数代码:

struct posdata
{
int function;

L_DOY 可以是这样的函数之一:

/*Define the function codes*/
#define L_DOY 0x0001
#define L_GEOM 0x0002
#define L_ZENETR 0x0004

我假设 if 语句正在检查 pdat 中的函数变量是否对应于 L_DOY 的代码。但是,我对 C 还很陌生,并且无法找到任何在这样的 if 语句中使用 & 符号的示例或解释。

预先感谢您的帮助。

最佳答案

这意味着bitwise-and 。它测试的值是一组位标志,可以设置一个或多个。它正在检查是否专门设置了 L_DOY 标志,因为按位与保留了两个操作数中都出现的位,因此 0b0101 和 0b0011 将生成 0b0001(两个操作数中唯一设置的位)。由于L_DOY只是一个位,即低位,它会检查该位是否在function中设置;它不关心是否设置了其他位。

关于c - C if 语句条件中 & 符号的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979389/

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