C语言超全面覆盖操作符知识点
目录
- 算术操作符
- 赋值操作符
算术操作符
主要是 (+ - * / %) 五种算数操作符。
1、除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
2、对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除 法。
3、% 操作符的两个操作数必须为整数。返回的是整除之后的余数。
当除数为小数时,int类型只会截取整数部分。
移位操作符
<< 左移操作符
>> 右移操作符
左移操作符 移位规则: 左边抛弃、右边补0
右移操作符 移位规则:
首先右移运算分两种:
1. 逻辑移位 左边用0填充,右边丢弃
2. 算术移位 左边用原该值的符号位填充,右边丢弃
警告 :对于移位运算符,不要移动负数位,这个是标准未定义的。
例如:
int num = 10;
num>>-1;//error
位操作符
& 按位与:1 1为1;1 0为0;0 0为0。
| 按位或 :1 1为1;1 0为1;0 0为0。
^ 按位异或 :1 1为0;1 0为1;0 0为0。
注:他们的操作数必须是整数。
练习一下:
#include <stdio.h> int main(){ int num1 = 1; int num2 = 2; num1 & num2; num1 | num2; num1 ^ num2; return 0; }
不能创建临时变量(第三个变量),实现两个数的交换。
#include <stdio.h> int main(){ int a = 10; int b = 20; a = a^b; b = a^b; a = a^b; printf("a = %d b = %d\n", a, b); return 0; }
赋值操作符
"="
注意:这是赋值操作符,并不是等于。c语言中的等于是"=="。
复合赋值符
+= -= *= /= %= >>= <<= &= |= ^=
符合赋值操作符与其他运算符一样的道理。这样写更加简洁
单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
* 间接访问操作符(解引用操作符)
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
//++和--运算符 //前置++和-- //前置++和--: #include <stdio.h> int main() { int a = 10; int x = ++a; //先对a进行自增,然后对使用a,也就是表达式的值是a自增之后的值。x为11。 int y = --a; //先对a进行自减,然后对使用a,也就是表达式的值是a自减之后的值。y为10; return 0; } //后置++和-- #include <stdio.h> int main() { int a = 10; int x = a++; //先对a先使用,再增加,这样x的值是10;之后a变成11; int y = a--; //先对a先使用,再自减,这样y的值是11;之后a变成10; return 0; }
(类型) 强制类型转换
强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。例如: (float) a 把a转换为浮点型,(int)(x+y) 把x+y的结果转换为整型。
关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
这些关系运算符比较简单,但是我们要注意一些运算符使用时候的陷阱
警告: 在编程的过程中 == 和 = 不小心写错,导致的错误。
逻辑操作符
&& 逻辑与 || 逻辑或
区分 逻辑与 和 按位与 区分 逻辑或 和 按位或
#include <stdio.h> int main(){ int i = 0,a=0,b=2,c =3,d=4; i = a++ && ++b && d++; //i = a++||++b||d++; printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d); return 0; }
条件操作符
exp1 ? exp2 : exp3
到此这篇关于C语言超全面覆盖操作符知识点的文章就介绍到这了,更多相关C语言操作符内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
C语言实例上手深入理解操作符的使用
目录 1.闰年练习 2.绝对值练习 3.字符转换练习 4.四则表达式练习 5.隐式类型转换 1.闰年练习 编写逻辑表达式判断用户给定的年份是否是闰年,年份可以被4整除但不能被100整除:年份可以被400整除. #include <stdio.h> int main(){ int year = 0 ,res = 0; printf("请输入年份数字:"); scanf("%d",&year); res = (!(year % 400)) || (!
-
C语言各类操作符全面讲解
目录 1 算术操作符 2 移位操作符 3 位操作符 4 赋值操作符 5 单目操作符 5.1 ! 逻辑反操作 5.2 sizeof 和数组 6 关系操作符 7 逻辑操作符 8 条件操作符 9 逗号表达式 10 下标引用函数调用和结构成员 10.1 [ ]下标引用操作符 10.2 ()函数调用操作符 10.3 访问一个结构的成员 11 表达式求值 11.1 整形提升 11.2 优先级和结合性 总结 1 算术操作符 + - * / % +,-和*操作数我就不多说了,这里我们重点来 / 和% /操作数
-
C语言操作符超详细讲解上篇
目录 前言 1.操作符的分类 2.算术操作符 3.移位操作符 3.1 左移操作符 3.1.1 正数左移1位 3.1.2 负数左移1位 3.2 右移操作符 3.2.1 正数右移1位 3.2.2 负数右移1位 3.3 移位操作符说明 4.位操作符 4.1 练习 1 4.2 练习 2 总结 前言 操作符主要内容包括:各种操作符的介绍,用表达式求值. 1.操作符的分类 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用.函数调用和结构成员
-
C语言操作符进阶教程(表达式求值隐式类型转换方法)
目录 结构体 表达式求值 隐式类型转换 意义: 方法 算术转换 操作符属性 结构体 结构体变量的声明需要在主函数之上或者主函数中声明,如果在主函数之下则会报错,而且c语言中的结构体不能直接进行强制转换,只有结构体指针才能进行强制转换. 涉及结构体的操作符这里讲两个:. (结构体访问操作符)-> () 首先写一段代码: int main() { struct Stu s = {"me",19,60}; prinft("%s %d %lf",s.who,s.age
-
C语言 操作符#与##使用方法详解
目录 一.# 运算符 二.## 运算符 三.小结 一.# 运算符 # 运算符用于在预处理期将宏参数转换为字符串 # 的转换作用是在预处理期完成的,因此只在宏定义中有效 编译器不知道 # 的转换作用 用法: #define STRING(x) #x printf("%s\n",STRING(Hello World!)); 下面通过一个示例感受一下: test.c: #include <stdio.h> #define STRING(x) #x int main() { pri
-
C语言操作符超详细讲解下篇
目录 前言 赋值操作符 单目操作符 单目操作符介绍 sizeof 和 数组 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用与函数调用和结构成员 [ ] 下标引用操作符 ( ) 函数调用操作符 访问一个结构的成员 表达式求值 隐式类型转换-整形提升 算术转换 操作符的属性 总结 前言 本文接着学习操作符的内容. 赋值操作符 赋值操作符就是能够重新赋值 int weight = 120;//体重 weight = 89;//不满意就赋值 double salary = 10000.0; s
-
C语言全面细致精讲操作符的使用
目录 前言 一.算术操作符 二.移位操作符 1.左移操作符 2.右移操作符 三.位操作符 四. 赋值操作符 复合赋值符 五.单目操作符 单目操作符介绍 1.sizeof 和 数组 2.++和–运算符 六.关系操作符 七.逻辑操作符 八.条件操作符 九.逗号表达式 十.下标引用与函数调用和结构成员 1. []下标引用操作符 2. ()函数调用操作符 3. 访问一个结构的成员 前言 本次文章我们要讲各种操作符的介绍,内容非常详细,大家拭目以待哦! 首先介绍操作符的种类 操作符分类: 算术操作符 移位
-
C语言选择、循环、函数、数组与操作符
目录 1.选择语句 2.循环语句 3.函数 4.数组 5.操作符 5.单目操作符 6.关系操作 7.逻辑操作符 8.条件操作符 9.逗号表达式 10.下标引用.函数调用和结构成员 1.选择语句 如果你好好学习,校招时拿一个好offer,走上人生巅峰.如果你不学习,毕业等于失业,回家卖红薯.这就是选择! #include<stdio.h> int main() { int a = 0; printf("1:好好学习,拿大厂offer 2.宿舍摆烂,毕业即失业\n
-
C语言简明讲解操作符++和--的使用方法
目录 一.++与--操作符的本质 二.++与-- 操作符使用分析 三.小结 一.++与--操作符的本质 ++ 和 -- 操作符对应两条汇编指令 前置 变量自增(减)1 取变量值 后置 取变量值 变量自增(减)1 下面看一段神奇的代码: #include <stdio.h> int main() { int i = 0; int r = 0; r = (i++) + (i++) + (i++); printf("i = %d\n", i); printf("r =
-
C语言超全面覆盖操作符知识点
目录 算术操作符 赋值操作符 算术操作符 主要是 (+ - * / %) 五种算数操作符. 1.除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数. 2.对于 / 操作符如果两个操作数都为整数,执行整数除法.而只要有浮点数执行的就是浮点数除 法. 3.% 操作符的两个操作数必须为整数.返回的是整除之后的余数. 当除数为小数时,int类型只会截取整数部分. 移位操作符 << 左移操作符 >> 右移操作符 左移操作符 移位规则: 左边抛弃.右边补0 右移操作符 移位规则: 首
-
易语言中的命令及操作符知识点总结
命令由运行支持库提供给用户在程序中使用,它们被分为很多类.有些命令的最后一个参数可以被扩展,譬如"相加",它的"加数"参数可以被无限制地扩展,用作支持连续相加.这些命令在录入到程序中后在编辑窗口内其首部会显示出一个右双箭头作为标志.命令中的某些参数也有可能可以被省略,即调用时可以不提供参数数据.具体情况请参阅<支持库手册>. 下面列出所有具有操作符的命令及其操作符运算优先级,值越小运算优先级越高.优先级高的命令在计算表达式时将被先执行,同优先级的命令按顺
-
C语言超详细讲解栈与队列实现实例
目录 1.思考-1 2.栈基本操作的实现 2.1 初始化栈 2.2 入栈 2.3 出栈 2.4 获取栈顶数据 2.5 获取栈中有效元素个数 2.6 判断栈是否为空 2.7 销毁栈 3.测试 3.1测试 3.2测试结果 4.思考-2 5.队列的基本操作实现 5.1 初始化队列 5.2 队尾入队列 5.3 队头出队列 5.4 队列中有效元素的个数 5.5 判断队列是否为空 5.6 获取队头数据 5.7 获取队尾的数据 5.8 销毁队列 6.测试 6.1测试 6.2 测试结果 1.思考-1 为什么栈用
-
C语言超全面define预处理指令的使用说明
目录 前言 #define 定义宏(无参) #define 定义宏函数 宏的更多规则特性 宏的缺点 常见预处理指令 前言 C语言中源代码到可执行文件的第一阶段,也就是预处理阶段,会检查源文件中的预处理指令语句和宏定义,并对源代码进行相应的替换,预处理过程还会删除程序中的注释和多余的空白符号. 预处理指令是以#开头的代码行,#必须是该行除了空白符外的第一个字符,#后是指令关键字,在#和指令关键字之间允许存在若干个空白字符,define是宏定义命令.在C语言程序中允许用一个标识符来表示一个字符串,称
-
C语言超详细讲解宏与指针的使用
目录 1.关于define 2.初识指针 (1)内存 (2)示例 (3)指针的使用示例 (4)指针变量的大小 1.关于define define是一个预处理指令,有两种用法,一种是用define定义常量:另外一种是define定义宏. 下面的例子为利用define定义常量 #define _CRT_SECURE_NO_WARNINGS #define MAX 1000 #include <stdio.h> int main() { printf("%d\n",MAX); r
-
c语言与c++基础知识点(必看)
1.后缀名: C++/C程序的头文件以.h为后缀,C程序的源文件以.c为后缀,C++程序的源文件通常以.cpp为后缀(有些书中介绍有一些系统以.cc或.cxx为后缀的源文件). 在Linux系统下的gcc,.C(部分),.cc或.cxx 为后缀的源文件, 它们也是C++源代码文件. 2.extern关键字:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern有两个
-
C语言中的操作符优先级的详细介绍
C语言中的操作符优先级的详细介绍 C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. OperatorsAssociativity(结合性) 1. () [] -> . 左->右 2. ! ~ ++ -- + - *(type)sizeof 右->左 3. * / % 左->右 4. + - 左->右 5. << >> 左->右 6
-
java语言与平台基础知识点
使用Java之前,我们要先弄清楚Java语言和Java平台之间的区别.然而,有时候不同的作者对语言和平台的构成会有不同的定义,所以人们有时不太清楚两者之间的区别,分不清是语言还是平台提供了代码使用的编程特性. 因为本书的大部分内容都需要你理解两者的区别,所以这里需要说明一下.以下是我们给出的定义. Java语言 在"关于本书"中,我们提到Java语言是静态类型.面向对象的语言,希望你对这种说法已经非常熟悉了.Java语言还有一个非常明显的特点,它是(或者说应该是)人类可读的. Java
-
c语言动态内存分配知识点及实例
c语言怎么实现动态内存分配 我们经常会预先给程序开辟好内存空间,然后进行操作. int arr[5] ; 对这个数组我们在定义的时候必须给提前开辟好空间,并且在程序执行的过程中,这个开辟的内存空间是一直存在的,除非等到这个函数执行完毕,才会将空间释放.有个问题就是这个数组在程序中无法被修改. 这些问题给我们造成了一些使用上的不方便,所以,C中提供了malloc()函数. 关于malloc()函数,这个函数它接受一个参数:就是所需的内存的字节数.然后malloc()找到可用内存中那一个大小适合的块
-
c语言常量定义规则知识点总结
c语言常量定义规则 常量的定义:常量是指在程序运行过程中其值不能被改变的量. C语言中常量可分为直接常量和符号常量. 直接常量是指直接用具体数据表达的一种形式,直接常量又分为整型常量.实型常量.字符常量和字符串常量: 符号常量则是指用C语言标识符定义的常量. 整型常量就是整常数,10进制数.8进制数和16进制数三种.如:10.012.0x0A 实型常量也称为浮点型常量.如:3.14 . 1.2E-4 字符型常量必须用单引号括起来.如:'M' , '\n' 字符串常量应用双引号括起来.如:"abc
随机推荐
- DEDECMS如何为文章添加HOT NEW标志图片
- Spring事务管理只对出现运行期异常进行回滚
- 如何显示一个文本文件?
- jQuery取得iframe中元素的常用方法详解
- JQuery的常用选择器、过滤器、方法全面介绍
- Docker-compose的安装和设定详细步骤
- 实例解析iOS app开发中音频文件播放工具类的封装
- 分享一段PHP制作的中文拼音首字母工具类
- PHP.MVC的模板标签系统(二)
- PHP使用array_multisort对多个数组或多维数组进行排序
- Python简单操作sqlite3的方法示例
- 自定义RadioButton和ViewPager实现TabHost带滑动的页卡效果
- js实现拖拽效果(构造函数)
- Mysql 忘记root密码和修改root密码的解决方法(小结)
- 简单说说STL的内存管理
- 无聊-中国各省省名之由来
- jQuery的slideToggle方法实例
- easyui datagrid 键盘上下控制选中行示例
- Adobe说:Google是唯一竞争对手
- java去除集合中重复元素示例分享 java去除重复
其他
- raiserror函数
- power shell 批量加前缀
- js ios 拍摄视频上传
- java请求接口返回301
- textarea文本颜色不一样
- python 文本时间抽取
- mac vs2019配置.net core
- idea整合gethub
- git 子模块没有同步
- RadioButton需要使用适配器显示数据吗
- sp_addlinkedserver 改服务器
- python正则匹配字符串中的数字
- cmake $美元符号代表什么意思
- vbs脚本病毒生成器1.0版
- python连通域滤波
- django静态页面图片404
- 兄弟组件之间调方法无法赋值
- layui获取表单的所有信息
- pycharm marketplace加载不出来
- 解决bootstreap.yml文件失效的依赖