这三种输入函数在编程语言中有什么区别.他们以不同的方式相互输入吗?
1.getchar_unlocked()
#define getcx getchar_unlocked
inline void inp( int &n )
{
n=0;
int ch=getcx();int sign=1;
while( ch < '0' || ch > '9' ){if(ch=='-')sign=-1; ch=getcx();}
while( ch >= '0' && ch <= '9' )
n = (n<<3)+(n<<1) + ch-'0', ch=getcx();
n=n*sign;
}
Run Code Online (Sandbox Code Playgroud)
2.scanf("%d",&n)
3.cin>>n
输入整数时哪一个花费的时间最少?
我在c ++中使用THese头文件,其中所有3个用c ++运行;
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
#include<functional>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<cassert>
Run Code Online (Sandbox Code Playgroud)
Sob*_*nty 28
要考虑两点.
getchar_unlocked
在Windows中已弃用,因为它是线程不安全的版本getchar()
.
除非速度因素太多,否则尽量避免getchar_unlocked
.
现在,就速度而言.
getchar_unlocked > getchar
Run Code Online (Sandbox Code Playgroud)
因为没有输入流锁定检查,getchar_unlocked
这使得它不安全.
getchar > scanf
Run Code Online (Sandbox Code Playgroud)
因为getchar
读取输入的单个字符是char类型,而scanf可以读取c中可用的大多数基本类型.
scanf > cin (>> operator)
Run Code Online (Sandbox Code Playgroud)
因为请检查此链接
所以,最后
getchar_unlocked > getchar > scanf > cin
Run Code Online (Sandbox Code Playgroud)