c++冷门知识

  1. 表达式计算方向
    printf和cin是从右往左计算.
    其他表达式从左往右计算,比如逗号表达式,但是逗号表达式返回值是最右边的值。逗号运算符优先级最低,所以要加括号。
int b[5] = { 1,2,3,4,5 };
int* p = b;
printf("%d, %d\n", *(p), *(++p));//输出2, 2

int i = 1;
int a = (2,i=3, i);
cout << a; //输出3
  1. sizeof
    sizeof是宏不是函数,是在编译期间执行的。
    sizeof参数类型:类型(类)还是变量(对象)是等价的,可同意按照类型或变量来计算。
    sizeof参数类型:函数,按照返回值类型计算。而且函数并不会在编译期间运行。

注意数组和指针区别:
sizeof只有参数为数组类型或者数组引用类型大小的时候计算整个数组大小,参数为指针类型的时候计算指针大小。

void func(int a[])
{
	cout << sizeof(a); 
	//因为计算sizeof是在编译器函数不运行,所以a是指针类型,所以输出8(64bit系统).
}
int main(void)
{
	int a[10];
	int* p = a;
	sizeof(a);//40数组类型
	sizeof(p);//8指针类型
	return 0;
}

typedef int(&Arr)[10];// sizeof(Arr) 40
typedef int(*Arr)[10];//sizeof(Arr) 8
typedef int Arr[10];//sizeof(Arr) 40
  1. 负数补码

计算机中负数以补码表示。原码—(除符号位取反+1)–>补码—(-1除符号位取反)–>原码

-8:原码 1000 1000
	补码 1111 1000

你可能感兴趣的:(C++小记)