5. 赋值操作符
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。
int weight = 120;//体重
weight = 89;//不满意就赋值
double salary = 10000.0;
salary = 20000.0;//使用赋值操作符赋值。
赋值操作符可以连续使用,比如:
int a = 10;
int x = 0;
int y = 20; a = x = y+1;//连续赋值
这样的代码感觉怎么样?
那同样的语义,你看看:
x = y+1; a = x;
这样的写法是不是更加清晰爽朗而且易于调试。
#include <stdio.h>
int main()
{
int a = 10;
int b = 0;
b = a = a + 3; //连续赋值
printf("a=%d b=%d", a, b);
return 0;
}
//----------------------
//编译器运行结果为
//a = 13 b = 13
连续赋值从右往左进行运算。
先把a+3的值赋给a,再把a的值赋给b。
缺点:连续赋值的方式是不适合方便调试,调试过程中,变量同时发生变化,不利于观察变量改变的过程。
建议书写方式
#include <stdio.h>
int main()
{
int a = 10;
int b = 0;
a = a + 3; //连续赋值
b = a;
printf("a=%d b=%d", a, b);
return 0;
}
//----------------------
//编译器运行结果为
//a = 13 b = 13
复合赋值符
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
这些运算符都可以写成复合的效果。
#include <stdio.h>
int main()
{
int a = 10;
a >>= 1; //a >>= 1 <==> a = a >> 1
printf("%d", a);
return 0;
}
//------------------------------
//编译器运行结果为
//5
int x = 10;
x = x+10;
x += 10;//复合赋值
//其他运算符一样的道理。这样写更加简洁。
6. 单目操作符
单目操作符只有一个操作数。
int main()
{
//双目:有两个操作数:2和3
2+3;
//单目:有一个操作数
*pa;
+3;
return 0;
}
6.1 单目操作符介绍
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
!
int main()
{
int flag = 0;
if(!flag)
{
printf("1");
}
return 0;
}
//--------------------
//编译器运行结果为
//1
flag 是 0 ,为假 ,!flag则为真
#include <stdio.h>
int main()
{
printf("%d\n", !2);
printf("%d\n", !0);
return 0;
}
//-------------------
//编译器运行结果为
//0
//1
零为假,非零为真。
而计算机表示0为假,1为真。
负号 正号
#includ