C语言操作符

算数操作符

1.%不可以作用于整数和浮点数,例如:int % double,必须两个操作数都为整型;
2.对于/操作符,若两个操作数都为整型则进行整型运算,若有一个操作数为浮点型,则进行浮点数运算。

移位操作符

1.左移: num<<1,左边抛弃,右边补0;
2.右移:num>>1
(1)逻辑移位:左边补0,右边丢弃;
(2)算术移位:左边用原本值的符号位填充,右边丢弃。

内存中存储负数为其补码,-1则为32位全1

对于移位操作符,不要移动负数位,这是标准为定义的。

	int num = 10;
	num>>-1//error

位操作符

	& //按位与
	| //按位或
	^ //按位异或
	//以上操作符的操作数都必须为整数

面试题:

不能创建临时变量,实现两个数的交换。

	int main()
	{
		int a = 10;
		int b = 12;
		a = a ^ b;
		b = a ^ b;
		a = a ^ b;
		return 0;
	}

单目操作符

	sizeof      操作数的类型长度(以字节为单位)
	~           对一个数的二进制形式按位取反
	*           间接访问操作符(解引用操作符)
	(类型)       强制类型转换

关系操作符

特别注意==和=不小心写错,造成的弱智bug

逻辑操作符

	int main()
	{
		int i = 0, a = 0, b = 2, c = 3, d = 4;
		//i = a++ && ++b && d++;
		//逻辑与运算,若左操作数为0,则不再进行右操作数的运算;
		i = a++||++b||d++;
		//逻辑或运算,若左操作数为1,则不再进行右操作数的运算
		printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
		return 0;
	}

逻辑与运算,若左操作数为0,则不再进行右操作数的运算;
逻辑或运算,若左操作数为1,则不再进行右操作数的运算。

条件操作符

	exp1 ? exp2 : exp3

逗号表达式

	exp1, exp2, exp3, ...

逗号表达式,从左到右依次执行,结果为最后一个表达式的结果

下标引用、函数调用和结构成员

1.[ ]下标引用操作符

操作数:一个数组名 + 一个索引值 (两个操作数)

2.()函数调用操作符至少有一个操作数(函数名)
3.访问一个结构的成员

. 结构体.成员名
-> 结构体指针->成员名

表达式求值

整形提升

表达式的整型运算要在CPU的相应运算器件中执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度;
因此,即使两个char类型相加,在CPU中执行时实际上也要先转换为CPU内整数操作数的标准长度;
通用CPU是难以直接实现两个8比特位直接相加运算,所以表达式中各种长度可能小于int长度的整型值,都必须先转换为int或unsigned int,然后才能送入CPU执行运算。

	char a, b, c;

	a = b + c;

b和c的值先被提升为普通整型,然后再执行加法运算;
加法运算完成之后,结果被截断,然后再存入a中。

整形提升是按照变量的数据类型的符号位来提升的

	//负数的整形提升
	char c1 = -1;
	c1只有8个比特位:
	11111111
	整形提升后:
	11111111111111111111111111111111

	//正数数的整形提升
	char c2 = 1;
	00000001

	00000000000000000000000000000001

	//无符号整形提升,高位补0
下载前必看:https://pan.quark.cn/s/a4b39357ea24 在本资料中,将阐述如何运用JavaScript达成单击下拉列表框选定选项后即时转向对应页面的功能。 此种技术适用于网页布局中用户需迅速选取并转向不同页面的情形,诸如网站导航栏或内容目录等场景。 达成此功能,能够显著改善用户交互体验,精简用户的操作流程。 我们须熟悉HTML里的`<select>`组件,该组件用于构建一个选择列表。 用户可从中选定一项,并可引发一个事件来响应用户的这一选择动作。 在本次实例中,我们借助`onchange`事件监听器来实现当用户在下拉列表框中选定某个选项时,页面能自动转向该选项关联的链接地址。 JavaScript里的`window.location`属性旨在获取或设定浏览器当前载入页面的网址,通过变更该属性的值,能够实现页面的转向。 在本次实例的实现方案里,运用了`eval()`函数来动态执行字符串表达式,这在现代的JavaScript开发实践中通常不被推荐使用,因为它可能诱发安全问题及难以排错的错误。 然而,为了本例的简化展示,我们暂时搁置这一问题,因为在更复杂的实际应用中,可选用其他方法,例如ES6中的模板字符串或其他函数来安全地构建和执行字符串。 具体到本例的代码实现,`MM_jumpMenu`函数负责处理转向逻辑。 它接收三个参数:`targ`、`selObj`和`restore`。 其中`targ`代表要转向的页面,`selObj`是触发事件的下拉列表框对象,`restore`是标志位,用以指示是否需在转向后将下拉列表框的选项恢复至默认的提示项。 函数的实现通过获取`selObj`中当前选定的`selectedIndex`对应的`value`属性值,并将其赋予`...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值