欢迎分享,转载请注明来源:内存溢出
2021-10-17
3.5
*** 作符
算术 *** 作符:
+ - * / %
移位 *** 作符:
>>(
右移 *** 作符)
<<
int a = 9/2;
float a = 9/2;
float a = 9/2.0;
int main()
{
int a = 2;
int b = a << 1;
printf("%d",b);
return 0;
}
位操作符:
&
(按位与)
两个位都为
1
时,结果才为
1
|
(按位或)
两个位都为
0
时,结果才为
0
^
(按位异或)
两个位相同为
0
,相异为
1
赋值操作符:
=, +=, -=, *=, /=, &=, ^=, |=, >>=, <<=
a = a+5 —— a += 5
a = a-3 —— a -= 3
a+b:
+
有
2
个操作数,双目操作符
单目操作符:只有
1
个操作数的操作符
!
逻辑反操作
-
负值
+
正值
&
取地址
sizeof
操作数的类型长度(以字节为单位)
~
对一个数的二进制按位取反
--
前置、后置
--
++
前置、后置
++
*
间接访问操作符
(
解引用操作符
)
(
类型
)
强制类型转换
int main()
{
int a = 10;
printf(
“
%dn
”
,!a);
return 0;
}
语法:
用法:
If(a)
{
//
如果
a
为真,做事
}
If(!a)
{
//
如果
a
为假,做事
}
sizeof
操作数的类型长度(以字节为单位)
int arr[10] = {0};
printf (“%dn”, sizeof(arr));
--40:
计算的是数组的总大小,
单位是字节
printf (“%dn”, sizeof(arr[0]));
计算数组大小:
int sz = sizeof(arr)/sizeof(arr[0])
语法:
int a = 10;
printf(“%dn”, sizeof(int));
printf(“%dn”,sizeof a);
括号可以省略表示不是函数,
但一般不会省略
语法:
int a = 0;
printf(“%dn”, ~a);
~
对一个数的二进制按位取反
把所有二进制位中的数字,
1
变成
0,0
变成
1
整数
a
0
二进制:
00000000000000000000000000000000
1111111111111111111111111111111111111
为何输出的结果是
-1
?
整数(负数)
在内存中存储的是
补码
一个整数的二进制表示有
3
种(以
-1
为例):
原码:
10000000000000000000000000000001
反码:
1111111111111111111111111111111111110
(符号位不变,其他按位取反)
补码:
1111111111111111111111111111111111111
(反码
+1
)
整数(正数)
原码、反码、补码相同
内存值
1
、所有正整数的按位取反是其本身
+1
的负数;
2
、所有负整数的按位取反是其本身
+1
的绝对值;
3
、零的按位取反是
-1
(
0
在数学界既不是正数也不是负数)
++
前置、后置
++
语法:
int a = 10;
int b = a++;//
后置
++
,先使用,后
++
printf(“%dn”, b);
printf(“%dn”, a);
语法:
int a = 10;
int b = ++a;//
前置
++
,先
++
,后使用
printf(“%dn”, b);
printf(“%dn”, a);
(
类型
)
强制类型转换
#include
int
main()
{
int
a = 3.14;
printf(
"%dn"
, a);
return
0;
}
//warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
int
a = (int)3.14;//强制类型转换
关系 *** 作符
>, >=, <, <=, !=(用于测试不相等), ==(用于测试相等)
逻辑操作符
&& 逻辑与
|| 逻辑或
条件操作符
exp1 ? exp2 : exp3
int
main()
{
int
a = 3;
int
b = 7;
int
max = 0;
if
(a>b)
{
max = a;
}
else
{
max = b;
}
max = a > b ? a : b;
printf(
"%d"
, max);
return
0;
}
max = a > b ? a : b;
逗号表达式
exp1,exp2,exp3 … expN
int
main()
{
int
a = 3;
int
b = 7;
int
c = 0;
int
d = (a = b - c, b = c + a, c = a - b);//结果为最后一个的结果
printf(
"%d"
, d);
return
0;
}
下标引用、函数调用和结构成员
[] () .
->
[]
:下标引用 *** 作符
int arr[10] = {1,2,3,4,5,6,7,8,9,10}
printf(“%dn”, arr[5] ); //[ ]
下标引用 *** 作符
()
:函数调用 *** 作符
printf(“hehen”)//()
函数调用 *** 作符
//
调用函数的时候,函数名后边的()就是函数调用 *** 作符
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
学习日记week13
上一篇
2022-10-21
opencv快速入门—图像色彩空间转换
下一篇
2022-10-21
评论列表(0条)