【C语言】算数操作符 移位操作符 以及 sizeof单目操作符讲解

news/2024/7/3 5:17:39

目录

  • 1.算术操作符
  • 2. 移位操作符
    • 2.1 左移操作符
    • 2.2 右移操作符
  • 3.sizeof 单目操作符介绍

操作符介绍:
C语言操作符分为: 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员下面我们就一一对这些操作符进行讲解介绍:

1.算术操作符

+ - * / %

  1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
  2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就 是浮点数除法。
  3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。

2. 移位操作符

移位操作符,移动的是二进制位
对于整数的二进制有3中表示形式:原码、反码、补码
正整数 - 原码、反码、补码相同
负整数
原码 - 直接按照数字的正负写出的二进制序列
反码 - 原码的符号位不变,其他位按位取法得到的 (正数的符号位是0,负数的符号位是 1
补码 - 反码+1
整数 在内存中存储的是二进制的补码

<< 左移操作符
>> 右移操作符

2.1 左移操作符

移位规则:左边抛弃、右边补0
在这里插入图片描述
正数左移:
在这里插入图片描述
在这里插入图片描述

负数左移:
在这里插入图片描述
在这里插入图片描述
左移列子如上图,举列子更容易理解。

2.2 右移操作符

移位规则:首先右移运算分两种:

  1. 逻辑移位
    左边用0填充,右边丢弃
  2. 算术移位
    左边用原该值的符号位填充,右边丢弃

在这里插入图片描述

警告⚠ :
对于移位运算符,不要移动负数位,这个是标准未定义的。
例如:

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

3.sizeof 单目操作符介绍

sizeof 是操作符,不是函数
sizeof 是计算变量或者类型创建变量的内存大小,单位是和内存中存放什么数据没有关系
sizeof 内部的表达式不参与运算

列如代码:

int main()
{int   a = 5;short s = 10; printf("%d\n", sizeof(s = a + 2)); //这里s的值属性虽然被赋成7,但是以及是short类型printf("%d\n", s);  // s依旧是一开始赋的10,并没有因为sizeof内部改变而改变                return 0;
}

在这里插入图片描述
再给出一个很好的列子:

#include <stdio.h>
void test1(int arr[])
{printf("%d\n", sizeof(arr));  //实参传入函数的是指针,所以大小是 4 byte (32位平台)
}
void test2(char ch[])
{printf("%d\n", sizeof(ch));  //实参传入函数的是指针,所以大小是 4 byte(32位平台)
}
int main()
{int arr[10] = { 0 };char ch[10] = { 0 };printf("%d\n", sizeof(arr)); // 十个整型元素,结果是 40 byteprintf("%d\n", sizeof(ch));  //  十个字符型元素,结果是 10 bytetest1(arr);test2(ch);return 0;
}

这里的结果为:在这里插入图片描述

以上就是几个需要注意的操作符易错点,如果觉得文章对自己有帮助,欢迎大家点赞收藏~


http://lihuaxi.xjx100.cn/news/284306.html

相关文章

凌晨!科比因坠机离世, 球迷泪崩:凌晨4点,我的青春没了

点击上方“视学算法”&#xff0c;选择“星标”在看|留言|真爱来源&#xff1a;21世纪经济报道综合央视新闻、新浪体育、钱江晚报、开发者技术前线出品等。编辑 可可北京时间1月27日凌晨消息&#xff0c;据媒体报道&#xff0c;湖人队传奇巨星科比-布莱恩特在一起直升机事故中不…

从数据中台到AI中台:一种敏捷的智能业务支持方案( 附视频讲解) | 技术头条...

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑来源 | 宜信技术学院第1期技术沙龙-线上直播原标题为&#xff1a;AI中台&#xff1a;一种敏捷的智能业务支持方案导读&#xff1a;随着“数据中台”的提出和成功实践&#xff0c;各…

Go接口详谈

接口类型的变量可以保存实现接口的类型的值。该类型的值成为接口的动态值&#xff0c;并且该类型成为接口的动态类型。 1.接口 在Go中使用interface关键字声明一个接口&#xff1a; type Shaper interface { Area() float64 Perimeter() float64 } 如果我们直接使用fmt库进行…

【C语言】冒泡排序详解

文章目录前言一、冒泡排序定义以及原理&#xff1f;二、具体代码实现总结前言 冒泡排序&#xff1a;是对一连串数字进行升序排序或者降序排序的一种排序算法&#xff0c;排序算法有很多种&#xff0c;今天我们先来介绍其中的----冒泡排序 一、冒泡排序定义以及原理&#xff1f…

用Python让蔡徐坤在我的命令行里打篮球!|附完整代码

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑来源 | 01二进制&#xff08;ID:gh_d1999add1857&#xff09;编辑 | Jane【导语】作者自称是一个经常逛 B 站的肥宅。最近 B 站上流行的视频素材除了“换脸”&#xff0c;其次就要属…

MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)

前言&#xff1a; 刚刚学完了MVC&#xff0c;根据自己的感悟和理解写了一个小项目。 完全按照MVC模式&#xff0c;后面有一个MVC的理解示意图。 用MVC模式重新完成了联系人的管理系统&#xff1a; 用户需求&#xff1a; 多用户系统&#xff0c;提供用户注册、登录功能&#xf…

介绍java -cp java -jar的区别

java -cp 和 -classpath 一样&#xff0c;是指定类运行所依赖其他类的路径&#xff0c;通常是类库&#xff0c;jar包之类&#xff0c;需要全路径到jar包&#xff0c;window上分号“;” java -cp & java jar格式 java -cp和-classpath一样&#xff0c;是指定类运行所依赖其…