操作符(C语言)—第二期

赋值操作符

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。

c 复制代码
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;

这样的写法是不是更加清晰爽朗而且易于调试。

复合赋值符

+=

-=

*=

/=

%=

'>>=

<<=

&=

|=

^=

这些运算符都可以写成复合的效果。

比如:

c 复制代码
int x = 10;
x = x+10;
x += 10;
//复合赋值
//其他运算符一样的道理。这样写更加简洁。

单目操作符

c 复制代码
!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
(类型)       强制类型转换
c 复制代码
int main()
{
   int a = -10;
   int* p = NULL;
   printf("%d\n", !2);
   printf("%d\n", !0);
   a = -a;
   p = &a;
   printf("%d\n", sizeof(a));
   printf("%d\n", sizeof(int));


   printf("%d\n", sizeof a);//这样写行不行?
   //可以的,计算变量大小可以省略圆括号

   //printf("%d\n", sizeof int);//这样写行不行?
   //是错误的


   return 0;
}

关于sizeof其实我们之前已经见过了,可以求变量(类型)所占空间的大小。

sizeof 和 数组

c 复制代码
#include <stdio.h>

void test1(int arr[])
{
	printf("%d\n", sizeof(arr));//(2)
}
void test2(char ch[])
{
	printf("%d\n", sizeof(ch));//(4)
}
int main()
{
	int arr[10] = { 0 };
	char ch[10] = { 0 };
	printf("%d\n", sizeof(arr));//(1)
	printf("%d\n", sizeof(ch));//(3)
	test1(arr);
	test2(ch);
	return 0;
}

问:
(1)、(2)两个地方分别输出多少?
(3)、(4)两个地方分别输出多少?
c 复制代码
(1)输出:40
    因为int 类型的数组 arr 中有 10 个元素,每个元素占用 4 个字节,所以总共占用 10 * 4 = 40 字节。
    
(2)输出:8
    虽然在 test1 函数中形参是 int arr[],但是在函数内部,数组名被当作指针处理,所以 sizeof(arr) 实际上是指针的大小,即 8 字节。
    
(3)输出:10
    因为char 类型的数组 ch 中有 10 个元素,每个元素占用 1 个字节,所以总共占用 10 字节。
    
(4)输出:8
    与(2)相同的原因,char 数组在函数内部也被当作指针处理,所以 sizeof(ch) 是指针的大小,即 8 字节。

关系操作符

c 复制代码
>
>=
<
<=
!=      用于测试"不相等"
==      用于测试"相等"

这些关系运算符比较简单,没什么可讲的,但是我们要注意一些运算符使用时候的陷阱。

警告: 在编程的过程中== 和=不小心写错,导致的错误。

相关推荐
赴生-3 分钟前
C++进阶 异常
开发语言·c++
黄毛火烧雪下28 分钟前
Java 核心知识点总结(一)
java·开发语言
其实防守也摸鱼36 分钟前
软件安全与漏洞--软件安全编码与防御技术理论题库
开发语言·网络·安全·网络安全·软件安全·软件安全与漏洞
x1387028595738 分钟前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
海兰44 分钟前
【实用程序】电商销售分析仪表盘 — 从零搭建一个AI参与的全栈数据洞察系统
人工智能·学习·算法
iCxhust1 小时前
C#进程管理程序
开发语言·汇编·stm32·单片机·c#·微机原理
凡人叶枫1 小时前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发
努力成为AK大王1 小时前
并发编程的核心挑战、优化方案与核心知识点总结
java·开发语言·数据库
zwenqiyu1 小时前
P5283 [十二省联考 2019] 异或粽子题解
c++·学习·算法
wayz111 小时前
Momentum:TSI(真实强度指数)技术指标详解
算法·金融·数据分析·量化交易·特征工程