~按位取反--按(二进制)取反
代码1
#include<stdio.h>
int main()
{
int a = 0;
a = ~a;
printf("%d\n",a);
return 0;
}
结果:-1
为什么是-1?
按位取反的原则
int是整型,有四个字节,每个字节有8个bite
那么0的二进制代码为
00000000000000000000000000000000
按位取反--将0变成1,将1变成0,则取反(即取反码)后为
11111111111111111111111111111111(-1的补码)
补充,整数的二进制表示有三种--原码,反码,补码
对于正数,其三码合一,即三码相同
对于负数,三码有区别
例如-1
原码:00000000000000000000000000000001
反码:11111111111111111111111111111110
补码:11111111111111111111111111111111
--,++
前置++,先++,后计算
代码2
#include<stdio.h>
int main()
{
int a = 10;
int b = ++a;
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
结果:
11
11
后置++,先计算,后++
代码3
#include<stdio.h>
int main()
{
int a = 10;
int b = a++;
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
结果:
11
10
(类型),强制转换类型
代码4
#include<stdio.h>
int main()
{
int a = 3.14;
printf("%d\n", a);
return 0;
}
结果:报错,3.14为浮点型,而定义a为整型
修改
代码5
#include<stdio.h>
int main()
{
int a = (int)3.14;
printf("%d\n", a);
return 0;
}
关系操作符
> >= < <= != ==
逻辑操作符
&&--逻辑与
||--逻辑或
代码1
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
int c = a && b;
printf("%d\n", c);
return 0;
}
结果:1(真)
代码2
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
int c = a || b;
printf("%d\n", c);
return 0;
}
结果:1(真)
代码3
#include<stdio.h>
int main()
{
int a = 0;
int b = 5;
int c = a && b;
printf("%d\n", c);
return 0;
}
结果:0(假)
代码4
#include<stdio.h>
int main()
{
int a = 0;
int b = 5;
int c = a || b;
printf("%d\n", c);
return 0;
}
结果:1(真)
代码5
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = a || b;
printf("%d\n", c);
return 0;
}
结果:0(假)
条件操作符
exp1?exp2:exp3
条件操作符--三目操作符
解释
如果exp1成立,exp2计算,整个计算结果为--exp2
如果exp1不成立,exp3计算,整个计算结果为--exp3
如比大小
代码1
#include<stdio.h>
int main()
{
int a = 0;
int b = 4;
int max = 0;
if (a > b)
max = a;
else
max = b;
printf("%d\n", max);
return 0;
}
结果:4
用条件操作符
代码2
#include<stdio.h>
int main()
{
int a = 0;
int b = 4;
int max = 0;
a > b ? max = a : max = b;
printf("%d\n", max);
return 0;
}
结果:4
补充逗号表达式
int a = 0;
int b = 4;
int max = 0;
可该写成如下:
int a = 0,b=4,max=0;
则代码2可改写如下
代码3
#include<stdio.h>
int main()
{
int a = 0,b=4,max=0;
a > b ? max = a : max = b;
printf("%d\n", max);
return 0;
}
结果:4
下标引用,函数调用,结构成员
[] () . ->