gpt4 book ai didi

c - 我不明白逆变器组串的操作

转载 作者:行者123 更新时间:2023-11-30 15:22:35 24 4
gpt4 key购买 nike

我正在研究两个投资字符串的函数,问题是我发现很难理解它们是如何工作的,我在代码中看到了奇怪的东西,这部分

return b = c & '\n';

另一件事是使用三元运算符的方式

b + e ?: f(0);

省略第一个表达式,保留两个函数

int b, e;
void f(c)
{
e = 13 & c;
if(isspace(c)) return;

b++, f(getchar());
b--, putchar(c);
b + e ?: f(0);
}

int f(c)
{
static int b;
if(isspace(c))
return b = c & '\n';
f(getchar());

printf("(%c)\n", b);

return putchar(c) == b && f(c);
}

有人向我解释一下这是怎么回事吗?

最佳答案

你的第一个表达:

return b = c & '\n';

将表达式c & '\n'的值赋给变量b并返回它。c & '\n' 是按位运算,对 c\n 的二进制表示进行逻辑 AND 运算。

为了使它更显着,让我们使用 ASCII 表并解码这些字符:c:十进制 99 -> 二进制 01100011'\n' : 十进制 10 -> 二进制 00001010

所以我们只需将它们一点一点进行AND,结果我们得到00000010,即十进制2。b变量被赋值该值,并返回相同的值。

b + e ?: f(0);

是一个三元条件语句,它将首先检查b+e的逻辑值,如果其计算结果为true,则不会执行任何操作(因为之前没有任何内容) code>:),否则将调用函数f

关于c - 我不明白逆变器组串的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29187628/

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