~ 按二进制取反//把所有二进制位中数字,1变成0,0变成1
注意:整数在内存中存储的是补码。
一个整数的二进制表示有3种:原码、反码、补码
正整数的原码、反码、补码都相同
负整数的计算:
例如 -1
10000000000000000000000000000001(原码)
11111111111111111111111111111110(反码)//原码除符号位(最高位)以外其它位按位取反
11111111111111111111111111111111(补码)//反码加一
int main()
{
int a=0;//a的补码为: 000000000000000000000000
printf("%d",~a);//取反:111111111111111111111111
return 0;
}
输出结果为:-1//输出为十进制,上面的相当于输出结果的补码
负整数的补码求原码:(1)可以根据上面的过程倒过去求(2)可以再经历一次上面的过程可以得到原码
++ (1)前置++:先++,再使用(2)后++:先使用再++
例如:
(1)
int a=10;int b=++a;//先a++,再得出b
printf("%d\n",a);//11
printf("%d\n",b);//11
(2)
int a=10;int b=a++;//先得出b,再a++
printf("%d\n",a);//11
printf("%d\n",b);//10
关系操作符:> >= < <= !=(用于测试“不相等”) ==(用于测试“相等”)
逻辑操作符:&&(逻辑与) ||(逻辑或)
条件操作符(三目操作符): exp1 ? exp2 : exp3
(1)exp1成立,exp2计算,整个表达式的结果是:exp2的结果
(2)exp1不成立,exp3计算,整个表达式的结果是:exp3的结果
例如:
int a=0;int b=3;int max=0;
max=a>b?a:b;
printf("%d\n",max);
输出结果为:3
逗号表达式:exp1,exp2,exp3,……expN
(1)逗号表达式是逗号隔开的一串表达式
(2)逗号表达式是从左向右依次计算的
(3)整个表达式的结果是最后一个表达式的结果
例如:
int a=0;int b=3;int c=5;int d=(a=b+2,c=a-4,b=c+2);
printf("%d\n",d);
输出结果为:3
下标引用、函数调用和结构成员:[] () . ->
总结:今日总学习时长4.5小时,现在的知识都是初步了解,后面会有详细的讲解,今天用了两个半小时去敲代码,依旧容易犯些低级错误,一定要细心再细心,再接再厉