目录
int及long long的最大值
int (long) 231-1;
long long 263-1;
int (long) -2147483648~2147483647
unsigned int (unsigned long) 0~4294967295
long long (__int64)的最大值:9223372036854775807
long long (__int64)的最小值:-9223372036854775808
unsigned long long (unsigned __int64)的最大值:18446744073709551615
注意:
- 正溢出后值小于零,负溢出后值大于等于零
- int 类型占4个字节,每个字节占8位,所以一共有32位,除去一位符号位,也就31位,能表示整数大小是-231到231-1,已知210约等于103多一点(1024),所以 231约等于2*109
- 一般的long long为64位,由于负数补码的bai原因,第一位作为符号位,因此有63位可用。则取值范围为-263到263-1 , 已知210约等于103多一点(1024),则long long大概为9x1018这么多,9后面18个0,建议大于这个数就考虑高精度相关
数据类型不匹配
int main(){
int a,b;
scanf("%lld%lld",&a,&b);
cout<<a<<endl;
cout<<b<<endl;
cout<<a+b;
return 0;
}
输入:3 4
输出:
0
4
4
字符串大小比较的规则
比较的时候,从字符串左边开始,一次比较每个字符,直接出现差异、或者其中一个串结束为止。
比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,(按ASCII值大小相比较) 所以不再继续比较,结果就是后面个串大。
再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。
所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。
strcmp函数:
strcmp是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
getline函数
getline函数读取标准字符串
此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为换行符,此函数并不保留结束符,它通过结束符确定结束,但不保存结束符,它用空字符来替换结束符。其语法为:
c
i
n
.
g
e
t
l
i
n
e
(
字
符
指
针
(
c
h
a
r
∗
)
,
字
符
个
数
N
(
i
n
t
)
,
结
束
符
(
c
h
a
r
)
)
;
cin.getline(字符指针(char*),字符个数N(int),结束符(char));
cin.getline(字符指针(char∗),字符个数N(int),结束符(char));
#include <iostream>
using namespace std;
int main()
{
char a[30];
cin.getline(a, 10);
for( int i=0; i<10; i++ )
cout << a[i] << " ";
return 0;
}
输入:1234567890123
输出:1 2 3 4 5 6 7 8 9 _ (第10位存放字符串结束符’\0’)
getline函数读取string
处理文件结束(EOF)
- while (cin >> n >> m)
cin是C++的标准输入流,其本身是一个对象,并不存在返回值的概念。不过经常会有类似于while(cin>>a)的调用,这里并不是cin的返回值,而是>>操作重载函数istream& operator>>(istream&, T &);的返回值,其中第二个参数由cin>>后续参数类型决定。其返回值类型为istream&类型,大多数情况下其返回值为cin本身(非0值),只有当遇到EOF输入时,返回值为0 - while(scanf("%d%d",&a,&b)!=EOF)
- while(~scanf("%d%d",&a,&b)!=EOF)
gets特点
- gets的输入分割符只有回车,因此gets能够读入空格
- scanf在读取非空白符之前会忽略回车,读取之后如果遇到空白字符会停止输入,将其留着缓冲区里;gets只要一遇到回车就输入结束,并把这个回车从缓冲区里移走(gets可以读取空回车,但是scanf不能),所以gets会偷回车,可能使程序莫名炸掉
- gets()函数读取到
\n
时停止读取,但是它不会把\n
包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行 - gets在C11标准中被删除,可用C标准库中的fgets代替.
c t y p e . h ctype.h ctype.h常用函数
头文件:<ctype.h>
isalpha()检测一个字符是否是字母:65-90&&97-122
isdigit()检测一个字符是否是十进制数字:48-57
islower()检测一个字符是否是小写字母:97-122
isupper()检测一个字符是否是大写字母:65-90
isxdigit()检测一个字符是否是十六进制数字
tolower()将大写字母转换为小写字母
toupper()将小写字母转换为大写字母
取整函数
头文件:<cmath>
- ceil的英文意义是天花板,该方法就表示向上取整,ceil(11.3)为12,ceil(-11.3)为-11;
- floor的英文意义是地板,该方法就表示向下取整,floor(11.6)为11,Math.floor(-11.6)为-12;
- round方法表示“四舍五入”,即floor(x+0.5),round(11.5)为12,round(-11.5)为-11;
<cmath>
其他常用函数 - double fabs(double x)返回 x 的绝对值
- double sqrt(double x)返回 x 的平方根
- double pow(double x, double y)返回 x 的 y 次幂
- double log(double x)返回 x 的自然对数(基数为 e 的对数)
- double log10(double x)返回 x 的常用对数(基数为 10 的对数)
- double cos(double x)
- double sin(double x)(math无tan())
数组从1开始输入
int a[maxn]; foo(i,1,n)scanf("%d",a+i);