C/C++基础知识

来源:互联网 发布:阿里云 宽带 编辑:程序博客网 时间:2024/05/29 15:16

逗号表达式:
(表达式1,表达式2):等表达式1完全计算完再算表达式2。
X=1;y=(x++,c=x);c的值为2。

位运算符优先级: ~ (<< >>) & ^ |

位运算二进制末尾加n个0相当于对应的十进制乘以2的n次方。
二进制左移相当于对应十进制乘以2的n次方,无符号数右移是对应十进制除以2的n次方.
左移时总是移位和补零。右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位和补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移。

二进制的奇数和偶数有什么区别?最后一位为0(偶)和1(奇)

X&1?”奇数”:”偶数”;

判断是不是小数
Double n;
如果(n - (int)n !=0)
n为小数;

#include<iomanip>//头文件   cout<<setprecision(n)<<a;//n为要输出数字的前a位数

Int型与char 运算,结果为int
整型提升:当小类型所有的数据包括在大类型的范围之内时,自动提升为大类型的(先提升,再运算出结果)
当无符号的数与带符号的数进行运算时,
无符号的类型不小于带符号的类型,带符号的自动转换成无符号的

‘\010’单个字符
“\010”字符串
\后面跟8进制或者16进制
:八进制(最多只能有3位) 十六进制 (最多只能2位)
八进制范围到177 十进制127

S.empty() s为字符串 空则返回值1,否则返回0

‘\0’ NULL 在条件判断中代表假
空格(或者其他空白\t \n) 在条件判断中代表真

常量指针:可以指向任何变量,但不能通过此指针修改此变量的值 int const *p;
指针常量:指针本身的值不能被修改,所指向的值可以被修改 int *const p;
const int *const pn指向常量的常量指针

Int const a=4;
Int *const p=&a;//错误,本身是个常量的指针所指向的值不能是const型常量
Const int *const=&a;//正确
int b = 5;
int const *q = &b;//正确,可以指向一个变量,但是不能通过指针改变其值
b = 6;//正确,可以通过变量名修改其值,此时*q=6;

定义变量时不能连续赋值,不能inta=b=0;

辗转相除法:下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。

 int r,m,n; scanf("%d%d",&m,&n); r=m%n; while(r)     {m=n;n=r;r=m%n ;} printf("%d\n",n);

Continue只能用于循环语句,注意switch语句中的陷阱。
break可用于循环语句和switch语句

Switch的case里面一般不需要打{ },如果里面定义了变量,则需要打花括号;

strcmp函数(字符串比较大小)
Strcmp(a,b)
该函数接受两个字符串地址作为参数,参数可以是指针、字符串常量或字符数组名。
如果两个字符串完全相同,该函数将返回0;如果从第一个字符串左边第一个不相同的字符开始比, 按字母顺序排在第二个字符串相对应的字符之前,该函数返回一个负数;否则返回一个正数值。

悬空指针:指针指向的内存空间已经被释放了,指针有可能已经无法指向正确的值(栈区)
野指针:指针指向的内存里还没有存储任何值,最好将指针置空NULL
迷途指针:new分配的内存delete后没有置空的话,有可能随机指向一个值(堆区)
delete p;p=NULL;释放后请立即置空

char *p = NULL;
cout<