C语言基础知识-运算符与表达式

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.常用运算符分类

1>.算术运算符

    用于处理四则运算。

2>.赋值运算符

    用于将表达式的值赋给变量。

3>.比较运算符

    用于表达式的比较,并返回一个真值或假值。

4>.逻辑运算符

    用于根据表达式的值返回真值或假值

5>.位运算符

    用于处理数据的位运算。

6>.sizeof运算符

    用于求字节数长度。

 

二.算术运算符

运算符          术语           示例          结果
 +           正号            +3           3
 -           负号            -3           -3
 +           加            10 + 5         15
 -           减            10 - 5         10
 *           乘            10 * 5         50
 /           除            10 / 5         2
 %           取模(取余)       10 % 3         1
 ++           前自增          a=2,b=++a;      a=3;b=3;
 ++           后自增          a=2,b=a++;      a=3;b=2;
 --           前自减          a=2;b=--a;      a=1;b=1;
 --           后自减          a=2;b=a--;      a=1;b=2;
   

三.赋值运算符

运算符          术语           示例          结果
=           赋值           a=2;b=3        a=2;b=3;
 +=          加等于          a=0;a+=2;       a=2;
 -=           减等于          a=5;a-=3;       a=2;
*=           乘等于          a=2;a*=2;       a=4;
/=           除等于          a=4;a/=2;       a=2;    
 %=           模等于          a=3;a%2;        a=1;

四.比较运算符

运算符          术语           示例          结果("真"用数字"1"来表示,"假"用数字"0"来表示)
==           相等于          4==3          0
!=           不等于          4!=3          1
<            小于           4<3           0
>            大于           4>3           1
<=           小于等于         4<=3           0
>=           大于等于         4>=1           1

五.逻辑运算符

运算符          术语           示例          结果
 !            非            !=          如果a为假,则!a为真,如果为真,则!a为假。
&&            与           a && b        如果a和b都为真,则结果为真,否则为假。
||            或           a || b        如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

六.运算符优先级

说明:
  同一优先级的运算符,结合次序由结合方向所决定。
  简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符   详情请参考:https://baike.baidu.com/item/%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BC%98%E5%85%88%E7%BA%A7/4752611?fr=aladdin
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[整型表达式]
左到右
 
()
圆括号
(表达式)/函数名(形参表)
 
.
成员选择(对象)
对象.成员名
 
->
成员选择(指针)
对象指针->成员名
 
2
-
负号运算符
-算术类型表达式
右到左
单目运算符
(type)
强制类型转换
(纯量数据类型)纯量表达式
 
++
自增运算符
++纯量类型可修改左值表达式
单目运算符
--
自减运算符
--纯量类型可修改左值表达式
单目运算符
*
取值运算符
*指针类型表达式
单目运算符
&
取地址运算符
&表达式
单目运算符
!
逻辑非运算符
!纯量类型表达式
单目运算符
~
按位取反运算符
~整型表达式
单目运算符
sizeof
长度运算符
sizeof 表达式
sizeof(类型)
 
3
/
表达式/表达式
左到右
双目运算符
*
表达式*表达式
双目运算符
%
余数(取模)
整型表达式%整型表达式
双目运算符
4
+
表达式+表达式
左到右
双目运算符
-
表达式-表达式
双目运算符
5
<<
左移
整型表达式<<整型表达式
左到右
双目运算符
>>
右移
整型表达式>>整型表达式
双目运算符
6
>
大于
表达式>表达式
左到右
双目运算符
>=
大于等于
表达式>=表达式
双目运算符
<
小于
表达式<表达式
双目运算符
<=
小于等于
表达式<=表达式
双目运算符
7
==
等于
表达式==表达式
左到右
双目运算符
!=
不等于
表达式!= 表达式
双目运算符
8
&
按位与
整型表达式&整型表达式
左到右
双目运算符
9
^
按位异或
整型表达式^整型表达式
左到右
双目运算符
10
|
按位或
整型表达式|整型表达式
左到右
双目运算符
11
&&
逻辑与
表达式&&表达式
左到右
双目运算符
12
||
逻辑或
表达式||表达式
左到右
双目运算符
13
?:
条件运算符
表达式1? 表达式2: 表达式3
右到左
三目运算符
14
=
赋值运算符
可修改左值表达式=表达式
右到左
 
/=
除后赋值
可修改左值表达式/=表达式
 
*=
乘后赋值
可修改左值表达式*=表达式
 
%=
取模后赋值
可修改左值表达式%=表达式
 
+=
加后赋值
可修改左值表达式+=表达式
 
-=
减后赋值
可修改左值表达式-=表达式
 
<<=
左移后赋值
可修改左值表达式<<=表达式
 
>>=
右移后赋值
可修改左值表达式>>=表达式
 
&=
按位与后赋值
可修改左值表达式&=表达式
 
^=
按位异或后赋值
可修改左值表达式^=表达式
 
|=
按位或后赋值
可修改左值表达式|=表达式
 
15
,
逗号运算符
表达式,表达式,…
左到右
从左向右顺序结合
 

七.类型转换

数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。

转换的方法有两种:
自动转换(隐式转换):遵循一定的规则,由于编译系统自动完成。
强制类型转换:把表达式的运算结果强制转换成所需的数据类型。 类型转换的原则:
占用内存字节数少(或域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精确度不降低。

1>.隐式转换

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat type_demo.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
int num = ;
printf("s1=%d\n",num/);
printf("s2=%1f\n",num/2.0);
return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o type_demo type_demo.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./type_demo
s1=
s2=2.500000
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#

2>.强制转换

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat type_demo2.c
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/ #include <stdio.h> int main(void)
{
//强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,其基本语法格式为:(类型说明符)(表达式)
float x = ;
int i = ;
x = 3.6f;
i = x; //x为实型,i为整型,直接复制会有告警
i =(int)x; //使用强制类型转换
printf("x=%f,i=%d\n",x,i); return ;
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o type_demo2 type_demo2.c
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./type_demo2
x=3.600000,i=
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]#

C语言基础知识-运算符与表达式的更多相关文章

  1. Golang 入门系列(三)Go语言基础知识汇总

    前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...

  2. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  3. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  4. C语言基础知识-程序流程结构

    C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...

  5. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...

  6. GO学习-(6) Go语言基础之运算符

    Go语言基础之运算符 运算符用于在程序运行时执行数学或逻辑运算. 运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符 描述 + 相加 - ...

  7. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  8. 李洪强iOS开发之OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  9. PHP语言基础知识

    目录 前言 第一章 PHP语言学习介绍 1.1 PHP部署安装环境 1.2 PHP代码工具选择 第二章 PHP代码基本语法 2.1 PHP函数知识介绍 2.2 PHP常量变量介绍 2.2.1 PHP变 ...

随机推荐

  1. PMP ITTO工具

    整合管理 范围管理 进度管理 成本管理 质量 资源管理 沟通管理 风险管理 采购管理 相关方管理

  2. qt model/view/delegate

    Qt Model/View理解(一)---构造model https://blog.csdn.net/weixin_42303052/article/details/89233887 Qt Model ...

  3. 将你的数据导入到json格式

    不知道为什么大家那么偏爱json格式,清晰?跨平台?或许这都是它的优点吧,之前我都是将我的数据放到txt中,今后就用json吧.初步写了一个写入json的模板,就这么用吧. def get_qq_05 ...

  4. ASP.NET Core webapi json 返回时间格式问题

    网站找了几个方案不好使,比如: 1: services.AddMvc().AddJsonOptions(opt => { opt.SerializerSettings.DateFormatStr ...

  5. Python有用的内置函数divmod,id,sorted,enumerate,input,oct,eval,exec,isinstance,ord,chr,filter,vars,zip

    divmod(a, b) 函数接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b) id() 函数用于获取对象的内存地址. sorted(iterable, key ...

  6. 树莓派搭建python环境服务器

    树莓派搭建python环境服务器 服务器结构大致为:django+uwsgi+nginx+python+sqlite 配置python环境 系统本身自带了python2.7和python3.5.在这里 ...

  7. python内存机制与垃圾回收、调优手段

    目录 一.python的内存机制 二.python的垃圾回收 1. 引用计数 1.1 原理: 1.2 优缺点: 1.4 两种情况: 2. 标记清除 2.1 原理: 2.2 优缺点: 3. 分代回收 3 ...

  8. idea 用鼠标滚轮调整代码文字大小

    File > Settings > Keymap > Editor Actions 下,我们可以找到 “Decrease Font Size”和“Increase Font Size ...

  9. C# vb .net实现翻转特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的翻转特效效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  10. 利用jQuery-Word-Export导出word (含ECharts)

      写在前面的话:写博客的初衷是想把自己学到的知识总结下来,在写的过程中,相当于又把知识梳理了一遍.我坚信有输入,有输出,技术才会进步.我一般都会自己写一个小demo,测试没有问题,再进行整理. 在实 ...