gpt4 book ai didi

c - 如何使用左移按位运算符获取输入?

转载 作者:行者123 更新时间:2023-11-30 18:43:49 26 4
gpt4 key购买 nike

#include<stdio.h>

long scan()
{
long int t = 0;
char c;
c = getchar_unlocked();
while (c < '0' || c>'9')
c = getchar_unlocked();
while (c >= '0' && c <= '9')
{
**t = (t << 3) + (t << 1) + c - '0'; **
c = getchar_unlocked();
}
return(t);
}

int main()
{
int t, a[110], n, i; long long int c, sum;
t = scan();
while (t--)
{
sum = 0;
scanf("%d%lld", &n, &c);
for (i = 0; i < n; i++)
{
a[i] = scan();
sum += a[i];
}
if (sum <= c)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

请帮我理解“**”中的那一行。我知道左移运算符 n 将数字乘以 2^n。所以 t 首先乘以 8,然后乘以 2。但这如何帮助我们获得输入呢?

scan() 函数获取输入并返回它。

最佳答案

您用星号指示的行并不能帮助获取输入,它所做的只是根据 c 的当前值更新变量 t 的值。

这是对 getchar_unlocked() 的调用从 stdin 获取下一个字符并返回它,程序将该值存储在变量 c 中。

程序期望字符为 ASCII 数字,因此 (c-'0') 的计算值将在 0 到 9 之间(包括 0 和 9)。对于每个值,它的作用相当于 t = (t*8) + (t*2) + the_compulated_value; ——我不确定其意图是什么,但这就是目的它正在做。

关于c - 如何使用左移按位运算符获取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59979843/

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