| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言学习之关于运算符和表达式 -> 正文阅读 |
|
[C++知识库]C语言学习之关于运算符和表达式 |
目录 (1).按位与:按位与"&"运算符,将两个运算量对应的二进制逐一按位进行逻辑与运算。每一位二进制数都要参与运算,包括符号位。 (2).按位或:按位或"|"运算符,将两个运算量对应的二进制逐一按位进行逻辑或运算。每一位二进制数都要参与运算,包括符号位。 (3).按位异或:按位异或"^"运算符,将两个运算量对应的二进制逐一按位进行逻辑异或运算。每一位二进制数都要参与运算,包括符号位。异或运算的规则为:相异为真,相同为假。 (4).按位取反:按位取反"~"运算符是一元运算符,其结果是将运算量的每个二进制位逐一取反。每一位二进制数都要参与运算,包括符号位。 (5).左移:左移"<<"运算符是一个二元运算符,需要两个运算量参与,且两个都必须是整数。例如a<,其意义是将a按照二进制向左移动n位,变量a二进制的最高位n位舍弃,最低的n位用0补齐。<> ? ? 1.初步认识运算符和表达式运算符:就是表示某种运算功能的符号。按照操作功能运算符大致可分为:算术运算符、关系运算符、逻辑运算符、按位运算符以及其他运算符如赋值运算符、条件运算符、逗号运算符等等。 如果对运算符所需要涉及的操作数的个数对运算符进行分类,可分为以下三种: *单目运算符? 取负运算符(-) *双目运算符? 算数运算符(+) *三目运算符? 条件运算符(?:) 表达式:是由操作数和运算符组成的序列,它和算术中的四则混合运算类似,其中操作数可以是常量,也可以是变量。 优先级:各类运算符在一个表达式中运算的先后顺序。如表达式9+5*8中,先进行乘法运算再进行加法运算。 结合性:当一个运算符两侧的运算符优先级相同时运算的结合方向。如9+4-6中,其加减的结合性是自左向右,因此先做加法再做减法。
表达式求值的步奏:(1).先按运算符的优先级高低次序执行。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2).如果再一个操作数两侧的运算符的优先级相同,则按照C语言规定的结合方向(结合性)进行。 2.运算符和表达式——算式算术表达式:使用算术运算符和括号将运算量链接起来的式子。 例如: 乘法运算符(*)——a*b 结果为a和b的乘积; 除法运算符(/)——a/b 结果为a除以b的商; 求余运算符(%)——a%b 结果为a除以b的余数; 加法运算符(+)——a+b 结果为a和b的和; 减法运算符(-)——a-b 结果为a和b的差;
(1).关于除法运算1/2=0,而1.0/2 =0.5? (注:类型不同的数进行运算,其结果按类型优先级高的类型定义。 类型优先级高低:float<double;char,short<int<unsigned<long<double) (2).关于求余运算求余计算结果的符号与前一操作数的符号相同 3.运算符和表达式——关系关系表达式:用关系运算符链接的两个表达式构成。关系运算符实际上就是比较运算符。 运算符"<"(小于)eg:3<5;结果为1 运算符">"(大于)eg:3>5; 结果为0 运算符"<="(小于等于)eg:3<=5;结果为1 运算符">="(大于等于)eg:3>=5;结果为0 运算符"=="(等于)eg:3==5;结果为0 运算符”!="(不等于)eg:3!=5;结果为1 综上,当结果成立时,结果为1;当结果不成立时,结果为0;而且参与关系运算的两个运算量可以是任意类型的数据。 优先级:(<,<=,>=,>)高于(==,!=) 结合性:自左向右 *算数运算符的优先级高于关系运算符 4.运算符和表达式——逻辑逻辑表达式:用逻辑运算符连接两个表达式构成。参与逻辑运算的操作数叫逻辑量。逻辑量可以是整型、实型、字符型和指针类型等多种类型。 运算符"!"(非)eg:!3;结果为0 运算符"&&"(与)eg:3&&0;结果为0 运算符"||"(或)eg:3||0;结果为1 综上,C语言中,逻辑运算结果用数值1表示真,用数字0表示假。在逻辑运算中,非零的数当作真,0当作假,因此任何类型的数据都可以参与到逻辑运算当中。 优先级:!>&&>||
5.运算符和表达式——位位运算:对整型数据进行的运算,而且符号位需要参与运算。位运算主要用于编写系统软件,完成汇编语言能够完成的一些功能。 运算符"&"(按位与)eg:3&5;结果为1 运算符"|"(按位或)eg:3|5;结果为7 运算符"^"(按位异或)eg:3^5;结果为6 运算符"~"(按位取反)eg:~3;结果为-4 运算符"<<"(左移)eg:3<<1;结果为6 运算符">>"(右移)eg:3>>1;结果为1 *分析位运算结果时,先将运算的整数转换位二进制再进行换位运算。 (1).按位与:按位与"&"运算符,将两个运算量对应的二进制逐一按位进行逻辑与运算。每一位二进制数都要参与运算,包括符号位。(2).按位或:按位或"|"运算符,将两个运算量对应的二进制逐一按位进行逻辑或运算。每一位二进制数都要参与运算,包括符号位。(3).按位异或:按位异或"^"运算符,将两个运算量对应的二进制逐一按位进行逻辑异或运算。每一位二进制数都要参与运算,包括符号位。异或运算的规则为:相异为真,相同为假。(4).按位取反:按位取反"~"运算符是一元运算符,其结果是将运算量的每个二进制位逐一取反。每一位二进制数都要参与运算,包括符号位。(5).左移:左移"<<"运算符是一个二元运算符,需要两个运算量参与,且两个都必须是整数。例如a<<n,其意义是将a按照二进制向左移动n位,变量a二进制的最高位n位舍弃,最低的n位用0补齐。(6).右移:右移">>"运算符与左移运算符类似,都是二元运算符,目的是将运算量的二进制数右移。右移一位时,最低位舍弃。最高位补齐的数值需要根据运算量的类型决定。如果运算量是一个有符号整数则补其符号位,如果是无符号的整数则最高位补0。?6.运算符和表达式——自增自减运算符"++i,--i"? 在使用i之前,先使i的值加1/减1,即先增减,再运算 运算符"i++,i--"? 在使用i之后,使i的值加1/减1,即先运算,再增减
结合性:自右向左
?7.运算符和表达式——赋值赋值运算符:"=",赋值表达式是由赋值运算符连接左边一个变量和右边一个表达式构成。(即[变量]=[表达式]) 优先级:!>算数>关系>&&和||>赋值 结合性:自右向左
复合赋值运算符:由赋值运算符之前再加一个双目运算符构成的。 复合赋值运算符的一般格式为:表达式1 op=表达式2? ?eg:a+=b-1 它等价于:表达式1=表达式1 op(表达式2)? eg:a=a+(b-1) 优先级:与”=“是同一优先级。 结合性:自右向左? 8.运算符和表达式——逗号逗号运算符:","? ,作用:将几个表达式隔开并以此计算。 格式:[表达式1]、[表达式2]、……[表达式n] 优先级:最低 结合性:自左向右 整个表达式的值=最后一个表达式的值
9.运算符和表达式——条件条件运算符:"?:"? 作用:判断一个逻辑表达式的结果,如果为真则指定执行某个表达式,如果为假则指定执行另外的表达式。条件表达式的实质就是起程序控制作用。 格式:表达式1?表达式2:表达式3 求值规则:先求解表达式1的值,若为真(非0),则求解表达式2并把表达式2的值作为整个条件表达式的值;若表达式的值为假(0),则求解表达式3并把表达式3的值作为整个条件表达式的值。 优先级:逻辑>条件>赋值 结合性:自右向左? 10.运算符和表达式——求字节数sizeof()运算符是一个单目运算符,用于计算一个某种类型的运算量所占用的字节数。 使用形式:(1).sizeof(类型标识); ? ? ? ? ? ? ? ? ? (2).sizeof(变量名)? ? 或? ?sizeof 变量名 11.运算符和表达式——类型转换类型转换分为两种:自动类型转换、强制类型转换 其中,自动类型转换指的是:在运行时不需要用户干预,系统自动进行的类型转换。 而强制类型转换指的是:当自动类型转换不能实现目的时,可以用强制类型转换。 自动类型转换又可以分为:赋值转换和运算转换 (1).赋值转换的五个要求: *浮点型赋值给整型,结果将舍弃浮点数的小数部分。 *整数赋值给浮点数,数值不会发生变化,结果以浮点数的方式存在。 *字符型赋值给整型,数值不会发生变化,但以整型的方式存储,内存空间变大。 *整型赋值给字符型,只把整型变量低8位赋值给字符型变量。 *双精度浮点数赋值给单精度浮点数,有效位会减少,丢失的部分四舍五入。 (2).运算转换 C语言允许整型、实型、字符型数据进行混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。转换的过程是C语言编译器自动进行的。 *转换按数据占用字节数增加的方向转换,例如int类型和short类型的变量进行计算时,会把short类型转换成int类型之后再进行计算。 *浮点数运算都是按照双精度进行的,float类型的变量会先转换成double类型再进行计算。(转换特点:由数值存储位少的向多的转换) 强制类型转换:是由程序员通过类型说明符实现的,通过强制类型转换可以将一种类型的变量强制转变为另一种类型。 格式:(类型说明符)[表达式] *类型说明符和表达式都必须加括号,如果表达式是单个变量则可以不加。 *无论是强制类型转换还是自动类型转换,都不改变其原变量的数据类型。即对一个变量进行强制类型转换后得到的一个新类型的数据,原来的变量类型是不变的。 12.代码练习(完善解决找零问题的代码)
该程序使用float定义变量a,b,c;解决了上次只能输入整数的问题且完善了整体需输入的购买金额和收取金额,增加了其可使用性 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 9:51:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |