第一:
我们会发现:
#include<bits/stdc++.h>
int main()
{
char ch=getchar();
int x=0;
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
std::cout<<x;
return 0;
}
的运行结果和:
#include<bits/stdc++.h>
int main()
{
char ch=getchar();
int x=0;
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch-48);
ch=getchar();
}
std::cout<<x;
return 0;
}
的运行结果是一样的。
在这里,ch^48=ch-48。
还可以用assert函数测试一下
#include<bits/stdc++.h>
using namespace std;
int main()
{
for(int i='0';i<='9';i++)
{
assert((i-48)==(i^48));
}
return 0;
}
没