#include<cstdio>
using namespace std;
char s[11];
int main()
{
int n=0,a;
scanf("%s",s);
for(a=0;s[a];++a) {
n=2*n+(s[a]==55);
printf("%d ",n);
}
printf("%d\n",n-1+(1<<a));
}
在这段代码中,我发现难以理解这条线
n=2*n+(s[a]==55);
。
特别是s[a]==55
。请告诉我它是如何运作的?
答案 0 :(得分:2)
与if
语句一样,s[a] == 55
如果字节true
等于55,则评估为s[a]
;否则,它是false
。就是这样。
true
或false
值将分别转换为1
或0
,以便添加到2*n
。
当然,这个代码很可怕,不应该被使用。变量具有非描述性名称,并且总共有零注释,解释了发生了什么以及为什么。
答案 1 :(得分:2)
n=2*n+(s[a]==55);
是一种神秘的写作方式:
if ( s[a] == 55 )
{
n = 2*n + 1;
}
else
{
n = 2*n;
}