怒发冲冠,凭栏处,潇潇雨歇抬望眼,仰天长啸,壮怀激烈,三十功名尘与土,八千里路云和月,莫等闲,白了少年头,空悲切;
靖康耻,犹未雪,臣子恨,何时灭,驾长车,踏破贺兰山阙。壮志饥餐胡虏肉,笑谈渴饮匈奴血,待从头,收拾旧山河,朝天阙。
关于快读
今天听了高正大佬的讲课,第一学了快读,冯正桦是不肯跟我讲的。
巨坑!!!!!!!!!!!!!!!!!!!!!!
思想主要是利用getchar比较快来打的;
#include<bits/stdc++.h>
#include<cctype>
#include<string>
using namespace std;
inline int read()
{
int x=0; char ch = getchar();
int ff = 1;
while(!isdigit(ch)) if(ch == '-')
{
ff = -1;
ch=getchar();
}
while(isdigit(ch))
{
x = (x << 1) + (x << 3) + int(ch - '0');
ch=getchar();
}
return x * ff;
}
int main()
{
int n;
n = read();
cout<<n<<endl;
}
这个是主要的代码;
关于"<<“与”>>"
<<的意思是将某个数的二进制向左移动n个位置,后面的不足的用0补齐(相当于乘了二的n次方);
">>的意思与之相反(意为除二的n次方);
#define
今天又学了一种新的实用性技巧:!!define(替换函数)
比如
#define up(i, x, y) for(int i = x;i <= y;i++)
与
#define maxx 10000;
前者意为将for(int i = x;i <=y;i ++)替换为up(i, x, y);
后者意为将maxx替换为10000;
#include<bits/stdc++.h>
using namespace std;
#define up(i, x, y) for(int i = x;i <= y;i++)
#define maxx 10000;
int main()
{
int n;
cin>>n;
up(i, 1, 8)
{
n++;
}
cout<<n<<' '<<maxx;
return 0;
}
输入2,输出10与10000;
但是
这东西存在以下缺陷
#define Add(a,b) a+b;
在一般使用的时候是没有问题的,但是如果遇到如:*c * Add(a,b) * d***的时候就会出现问题,代数式的本意是a+b然后去和c,d相乘,但是因为使用了define(它只是一个简单的替换),所以式子实际上变成了
ca + bd
另外举一个例子:
#define pin (int);*
pin a,b;
本意是a和b都是int型指针,但是实际上变成int* a,b;
a是int型指针,而b是int型变量。
这是应该使用typedef来代替define,这样a和b就都是int型指针了。
所以我们在定义的时候,养成一个良好的习惯,建议所有的层次都要加括号。
作者:benny5609
来源:CSDN
原文:https://blog.csdn.net/benny5609/article/details/2314541
版权声明:本文为博主原创文章,转载请附上博文链接!
(从大佬那里借来的代码与例子);
还有代码风格
从上面的***#define***例子上可以看出在运算符之间加上空格会很舒服.
沐黄沙,敌阵谁敢与我争高下!!