10.26听课后

怒发冲冠,凭栏处,潇潇雨歇抬望眼,仰天长啸,壮怀激烈,三十功名尘与土,八千里路云和月,莫等闲,白了少年头,空悲切;
靖康耻,犹未雪,臣子恨,何时灭,驾长车,踏破贺兰山阙。壮志饥餐胡虏肉,笑谈渴饮匈奴血,待从头,收拾旧山河,朝天阙。

关于快读

今天听了高正大佬的讲课,第一学了快读,冯正桦是不肯跟我讲的。
巨坑!!!!!!!!!!!!!!!!!!!!!!
思想主要是利用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***例子上可以看出在运算符之间加上空格会很舒服.
沐黄沙,敌阵谁敢与我争高下!!

猜你喜欢

转载自blog.csdn.net/qq_42821571/article/details/83420615