当前位置: 首页 > news >正文

详解C++编程中运算符的使用

C的运算符十分丰富使得C的运算十分灵活方便。例如把赋值号()也作为运算符处理这样abc4就是合法的表达式这是与其他语言不同的。C提供了以下运算符算术运算符(加) -(减) *(乘) /(除) %(整除求余) (自加) --(自减)关系运算符(大于) (小于) (等于) (大于或等于) (小于或等于) !(不等于)逻辑运算符(逻辑与) ||(逻辑或) !(逻辑非)位运算符(按位左移) (按位右移) (按位与) |(按位或) ^(按位异或) ~(按位取反)赋值运算符 (及其扩展赋值运算符)条件运算符 (?:)逗号运算符 (,)指针运算符 (*)引用运算符和地址运算符 ()求字节数运算符(sizeof)强制类型转换运算符( (类型) 或类型( ))成员运算符 (.)指向成员的运算符 (-)下标运算符 ([ ])其他 (如函数调用运算符())基本的算术运算符在本章中主要介绍算术运算符与算术表达式赋值运算符与赋值表达式逗号运算符与逗号表达式其他运算符将在以后各章中陆续介绍。需要说明两个整数相除的结果为整数如5/3的结果值为1舍去小数部分。但是如果除数或被除数中有一个为负值则舍入的方向是不固定的。例如-5/3在有的C系统上得到结果-1有的C系统则给出结果-2。多数编译系统采取“向零取整”的方法即5/3的值等于1-5/3的值等于-1取整后向零靠拢。如果参加, -, *, / 运算的两个数中有一个数为float型数据则运算的结果是double型因为C在运算时对所有float型数据都按double型数据处理。算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象也称操作数连接起来的、符合C语法规则的式子称C算术表达式。运算对象包括常量、变量、函数等。例如下面是一个合法的C算术表达式1a*b/c-1.5aC语言规定了运算符的优先级和结合性。在求解表达式时先按运算符的优先级别高低次序执行例如先乘除后加减。如有表达式a-b*cb的左侧为减号右侧为乘号而乘号优先于减号因此相当于a-b*c。如果在一个运算对象两侧的运算符的优先级别相同如a-bc则按规定的“结合方向”处理。C规定了各种运算符的结合方向结合性算术运算符的结合方向为“自左至右”即先左后右因此b先与减号结合执行a-b的运算再执行加c的运算。“自左至右的结合方向”又称“左结合性”即运算对象先与左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”即右结合性例如赋值运算符。关于“结合性”的概念在其他一些高级语言中是没有的是C和C的特点之一希望能弄清楚。表达式中各类数值型数据间的混合运算在表达式中常遇到不同类型数据之间进行运算如110a1.5-8765.1234*b在进行运算时不同类型的数据要先转换成同一类型然后进行运算。转换的规则按图所示。假设已指定i为整型变量f为float变量d为double型变量e为long型有下面表达式110ai*f-d/e运算次序为进行10a的运算先将a转换成整数97运算结果为107。进行i*f的运算。先将i与f都转换成double型运算结果为double型。整数107与i*f的积相加。先将整数107转换成双精度数小数点后加若干个0即107.000…00结果为double型。将变量e转换成double型d/e结果为double型。将10ai*f的结果与d/e的商相减结果为double型。上述的类型转换是由系统自动进行的。C自增和自减运算符(--和)在C和C中常在表达式中使用自增和自减--运算符他们的作用是使变量的值增1或减1如i在使用i之前先使i的值加1如果i的原值为3则执行ji后j的值为4--i 在使用i之前先使i的值减1如果i的原值为3则执行j--i后j的值为2i 在使用i之后使i的值加1如果i的原值为3则执行ji后j的值为3然后i变为4i--在使用i之后使i的值减1如果i的原值为3则执行ji--后j的值为3然后i变为2i是先执行ii1后再使用i的值;而i是先使用i的值后再执行ii1。正确地使用和--可以使程序简洁?清晰?高效。请注意自增运算符和自减运算符--只能用于变量而不能用于常量或表达式。和--的结合方向是“自右至左”。自增运算符和自减运算符--使用十分灵活但在很多情况下可能出现歧义性产生“意想不到”的副作用。自增减运算符在C程序中是经常见到的常用于循环语句中使循环变量自动加1。也用于指针变量使指针指向下一个地址。
http://www.gsyq.cn/news/1411117.html

相关文章:

  • 基于RISC-V架构的商业航天级MCU国产化技术路径与产业生态研究
  • 【408考研·数据结构专题】二叉树、树与森林、线索树及哈夫曼树核心考点与秒杀技巧深度总结
  • LLM应用工程化:将提示词与任务流视为代码管理的实践指南
  • 别再乱调参了!用sklearn的MLPClassifier/Regressor,这3个隐藏层配置技巧让你模型效果立竿见影
  • CGA老年综合评估MMSE量表标准化应用规范
  • 别再死记硬背Sarsa公式了!用Python手搓一个‘贪吃蛇’AI,5分钟搞懂On-Policy策略
  • GEO软件代理服务商推荐:5家主流机构哪个更适合你?
  • 智赋医者,守护健康:AI技术赋能医疗行业革新与升级
  • 2026年彩涂板卷源头厂家推荐榜:宝钢/马钢/鞍钢/首钢/宝武钢铁品牌实力与品质质保书深度解析 - 品牌企业推荐师(官方)
  • 告别查表!用Excel和C语言搞定NTC103和PT100的温度换算(附完整代码)
  • 保姆级教程:在Ubuntu 22.04上通过apt和源码两种方式安装Mosquitto MQTT Broker
  • 多项土壤指标挨个测太麻烦?一台土壤多参数测定仪就能全部检测完成
  • PCIe 5.0显卡/网卡PCB设计避坑:金手指Layout里那些容易忽略的GND孔和禁布区
  • GaussDB(DWS) SQL性能问题案例集
  • R语言glmnet包避坑指南:从安装、标准化到交叉验证,新手常犯的5个错误及解决方法
  • Simulink仿真卡住了?检查下你的Pulse Generator配置!基于时间与基于采样模式的避坑实战
  • DCGAN训练总崩?手把手教你用WB监控损失、可视化生成过程,告别“炼丹”黑盒
  • 如何高效获取Zenodo科研数据:专业开发者的完整解决方案
  • CH582低功耗实战:从1.2mA降到5uA,我的蓝牙广播功耗优化笔记
  • Multisim主数据库无法访问的解决办法
  • 避开上电“雷区”:手把手教你配置RFSoC Gen3的电源时序与Tile重启(附寄存器操作详解)
  • 反馈电路可以怎么区分
  • 光载多带超宽带系统中数字信号处理算法改进【附代码】
  • 在Linux中使用Vim编辑文本
  • 保姆级教程:用串级PID手把手教你调参,搞定多旋翼无人机姿态控制
  • 完全掌握Forza Mods AIO:免费解锁《极限竞速》游戏修改工具的全部潜力
  • 如何 批量下载微信公众号文章 windows 系统
  • 从语音识别到心电图分析:AR模型谱估计在5个真实场景中的避坑指南
  • I/O 2026 搜索 25 年最大改版:Gemini 3.5 重塑搜索,独立站必须改这 3 点
  • 2026年精炼渗透剂厂家推荐榜单:耐碱渗透剂、JFC、OEP98、AEP、快T、SAS、磷酸酯、AOS、混纺专用源头工厂深度解析 - 品牌企业推荐师(官方)