C语言运算符和表达式

参考链接:http://blog.csdn.net/qq_31059475/article/details/51195091

 

概述

   C语言一共有34种运算符,10种运算类型:算术运算符(+、-、*、/、%)、关系运算符(>、>=、==、!=、<、<=)、位运算符(>>、<<、==、!=、<、<=)、逻辑运算符(!、||、&&)、条件运算符、(?:)指针运算符(&、*)、赋值运算符(=)、逗号运算符(,)、求字节运算符(sizeof)、强制类型转换运算符((类型名))、其他(下标[]、分量、函数);

  若按参与运算的对象个数,C语言运算符可分为单目运算符(如!)、双目运算符(如+、-)和三目运算符(如?:)

  1. 运算符的结合性

    在C语言的运算符中,所有的单目运算符、条件运算符、赋值运算符及其扩展运算符,结合方向都是从右向左,其余运算符的结合方向是从左向右。

  2.运算符的优先级

    初等运算符(圆括号()、下标运算符[]、结构体成员运算符->) > 单目运算符 > 算术运算符(先乘除后加减)> 关系运算符 > 逻辑运算符(不包括!)条件运算符 > 赋值运算符 > 逗号运算符

强制类型转换运算符和赋值运算中的类型转换

  1.强制类型转换运算符

    (1).作用:可以利用强制类型转化运算符将一个表达式转换成所需类型。

    (2).一般形式:(类型名)(表达式);例如:(char)(x+y);(将(x+y)的值强制转换成字符型)

  2. 赋值运算中的类型转换

    (1).如果赋值运算符两侧的类型不一致,在赋值前系统将自动先不右侧表达式的数值按赋值号左边变量的类型进行转换(也可以用强制类型转换的方式),但这种转换仅限于某些“赋值兼容”的数据之间。对于另一些“赋值不兼容”的数据,如:地址值,就不能赋值给一般变量。

    (2).常用的转换规则:

    1>.当实型数据赋值给整型变量时,将实型数据的小数部分截断,只取整数部分

    例:int x;执行“x=5.21;”后,x的值为5

    2>.当整型数据赋值给实型变量时,数值不变,但以浮点形式存储到实型变量中

    例:float x=45;输出x的结果为45.00000

    3>.当double类型数据赋值给floa型变量是,取前面7位有效数字,存放到float型变量的存储单元中,这是数值可能溢出

    4>.当字符型数据赋值给整型变量时,由于整型变量占4个字节,而字符只占一个字节,需将字符数据(8位)放到整型变量低8位中,对给该整型变量最高位进行符号扩展,其他位补零。

    5>.当整型、短整型、长整型数据赋值给一个char类型变量时,将其低8位原封不动地送到char类型变量中(即截断)。

运算符优先级顺序

参考以下链接:http://bbs.fishc.com/thread-67664-1-2.html

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

 

()

圆括号

(表达式)/函数名(形参表)

 

.

成员选择(对象)

对象.成员名

 

->

成员选择(指针)

对象指针->成员名

 

++

后置自增运算符

++变量名

单目运算符

--

后置自减运算符

--变量名

单目运算符

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

 

++

前置自增运算符

变量名++

单目运算符

--

前置自减运算符

变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

 

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

 

/=

除后赋值

变量/=表达式

 

*=

乘后赋值

变量*=表达式

 

%=

取模后赋值

变量%=表达式

 

+=

加后赋值

变量+=表达式

 

-=

减后赋值

变量-=表达式

 

<<=

左移后赋值

变量<<=表达式

 

>>=

右移后赋值

变量>>=表达式

 

&=

按位与后赋值

变量&=表达式

 

^=

按位异或后赋值

变量^=表达式

 

|=

按位或后赋值

变量|=表达式

 

15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序运算

转载于:https://www.cnblogs.com/wangsens/p/7612335.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle对查询结果求和_Oracle 闪回技术详解

概述闪回技术是Oracle强大数据库备份恢复机制的一部分&#xff0c;在数据库发生逻辑错误的时候&#xff0c;闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成)。需要注意的是&#xff0c;闪回技术旨在快速恢复逻辑错误&#xff0c;对于物理损坏或是…

html整人js代码大全,Fool.js恶搞整人网页特效jQuery插件

Fool.js是一个 jQuery 插件&#xff0c;包含了几种页面特效&#xff0c;可以用来在愚人节的时候整人&#xff0c;来实现更多的更变态的愚人功能&#xff0c;当然你也可以使用这个插件完成更多好看的效果。支持的特效消失的滚动条莫名其妙播放的音乐随机消失的页面元素不间断的弹…

HDU - 5934

tarjan 视频讲解 /*** 题目链接&#xff1a;https://vjudge.net/problem/HDU-5934* 题意&#xff1a;给你n个炸弹&#xff0c;引爆每个炸弹会有一定的花费。每个炸弹给出坐标x&#xff0c;y&#xff0c;半径r&#xff0c;引爆花费&#xff1b;* 引爆一个炸弹会把范围内的炸…

Centos7-Lvs+Keepalived架构实验详解

Centos7-LvsKeepalived架构 LVSKeepalived 介绍 1 、 LVS LVS 是一个开源的软件&#xff0c;可以实现 LINUX 平台下的简单负载均衡。 LVS 是 Linux Virtual Server 的缩写&#xff0c;意思是 Linux 虚拟服务器。目前有三种 IP 负载均衡技术&#xff08; VS/NAT 、 VS/TUN 和 …

python调用matlab环境配置、非常详细!!!_[python][matlab]使用python调用matlab程序

问题引入 在做实验的时候&#xff0c;需要用到python和matlab工具来进行不同的处理&#xff0c;比如在run神经网络的时候&#xff0c;需要使用pytorch框架得到网络的各个参数&#xff0c;在得到参数后需要使用matlab进行聚类规划。之前的做法是用python脚本耦合其联系&#xff…

html里写js ajax吗,js、ajax、jquery的区别是什么?

js、ajax、jquery的区别1、JS是一门前端语言。2、Ajax是一门技术&#xff0c;它提供了异步更新的机制&#xff0c;使用客户端与服务器间交换数据而非整个页面文档&#xff0c;实现页面的局部更新。3、jQuery是一个框架&#xff0c;它对JS进行了封装&#xff0c;使其更方便使用。…

Flask 基础

Flask是一个基于Python开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架&#xff0c;对于Werkzeug本质是Socket服务端&#xff0c;其用于接收http请求并对请求进行预处理&#xff0c;然后触发Flask框架&#xff0c;开发人员基于Flask框架提供的功能对请求进行相应…

IIS 部署asp.net Core程序注意事项

Install the .NET Core Windows Server Hosting bundleInstall the.NET Core Runtime修改应用程序池的.net framework版本为无托管代码转载于:https://www.cnblogs.com/Qos8/p/7616036.html

泰安第一中学2021年高考成绩查询,等级考第一天结束 泰安部分考生已完成2021年高考...

6 月 9 日&#xff0c;山东新高考进入第三天&#xff0c;也是学业水平等级考试的第一天&#xff0c;物理、思想政治、化学三门选考科目的考试已全部完成。由于选考科目不同&#xff0c;考生结束高考的进程也不同&#xff0c;9 日下午&#xff0c;选考物理、思想政治、化学的考生…

基于FFMPEG 的跨平台视频编解码研究

第33卷 第11期2011年11月武 汉 理 工 大 学 学 报JOURNALOF WUHANUNIVERSITYOFTECHNOLOGY Vol.33 No.11췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍Nov.2011DOI:10.3963/j.issn.1671-4431.2011.11.029基于FFMPEG 的…

python逻辑型数据也叫什么_Python入门 | 运算符和数据类型

自用总结。 零散知识 1.Python的计算方法&#xff1a;运算符、函数、方法 1) 方法与函数的区别&#xff1a; 方法与特定类型的对象有关&#xff0c;是属于某个对象的函数&#xff0c;对象始终是该方法的第一个参数。e.g. islower()方法是检查字符串中字符是否为小写形式的方法&…

Flask 第三方组件之 WTForms

简介 WTForms是一个支持多个web框架的form组件&#xff0c;主要用于对用户请求数据进行验证。 安装&#xff1a; pip3 install wtforms 用户登录注册示例 1. 用户登录 当用户登录时候&#xff0c;需要对用户提交的用户名和密码进行多种格式校验。如&#xff1a; 用户不能为…

机器学习原理与算法(六) 支持向量机

版权声明&#xff1a;本系列文章为博主原创文章&#xff0c;转载请注明出处&#xff01;谢谢&#xff01; 本章索引&#xff1a; 从第3章的Logistic回归算法开始&#xff0c;我们一直在讨论分类问题。在各种不同的分类算法中&#xff0c;...&#xff0c;我们一直在讨论如何分类…

读《程序员的SQL金典》[2]--函数

一、数学函数 1.RAND SELECT RAND () ---0.302870228294199取0-1之间的随机小数。 2.小数取整 CEILINT(data)舍掉小数部分并向上取整。FLOOR(data)舍掉小数部分并向下取整。SELECT TOP 3 FWeight, CEILING(FWeight ),FLOOR( FWeight) FROM T_PersonRound(m,d)&#xff1a;四舍…

html div模块前留空白,html – 3个DIV彼此相邻,中间填充空白

您好我想问你如何将3 DIV放在一起,而中间一个填补第一和第三DIV之间的空白.我想在第一个NAD第三个DIV中有动态按钮,我需要中间DIV来填充第一和第三个DIV之间的空间.我会破坏纯CSS / HTML(没有JavaScript)这是我的尝试&#xff1a;http://jsfiddle.net/4smx3627/#wrapper{height…

mplayer安装记录 源码分析

mplayer源码下载地址&#xff1a; http://www.mplayerhq.hu/MPlayer/releases/ 下载最新的MPlayer-1.0rc4 #mkdir /usr/local/mplayer #mkdir /usr/local/codecs #cd MPlayer-1.0rc4 #./configure --prefix/usr/local/mplayer --codecsdir/usr/local/ codecs --langua…

python人脸识别代码百度ai_python百度AI人脸识别API测试

1、注册账号 2、创建应用 3、得到AK和SK 4、用AK SK获取access_token 可用下面的代码&#xff1a; #!/usr/bin/python3.5 # encoding:utf-8 import requests # client_id 你的AK client_secret 你的SK host https://aip.baidubce.com/oauth/2.0/token?grant_typeclient_crede…

Flask 第三方组件之 SQLAlchemy

一、介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上&#xff0c;使用关系对象映射进行数据库操作&#xff0c;简言之便是&#xff1a;将类和对象转换成SQL&#xff0c;然后使用数据API执行SQL并获取执行结果。 安装&#xff1a;pip3 install sqlalc…

httpservlet获取请求端IP地址

request.getRemoteAddr(); 转载于:https://www.cnblogs.com/panxuejun/p/7623850.html

html 中怎样显示enum,JavaScript如何枚举?

JavaScript中对象的属性分为两种&#xff1a;数据属性和访问器属性。然后根据具体的上下文环境的不同&#xff0c;又可以将属性分为&#xff1a;原型属性和实例属性。原型属性是定义在对象的原型(prototype)中的属性&#xff0c;而实例属性一方面来自构造的函数中&#xff0c;然…