C++高级进阶 第三季:求余运算符+运算符结合律

简介:
+关注继续查看

一、求余运算符

%用于求余数,优先级与*和/相同,结合律也是从左至右。

要求两个操作数均为整数(或可以隐式转换成整数的类型),故:14.2%3就是错误的,因为double不能隐士转换为整形。

#include <iostream>
using namespace std;

int main() 
{
    char c=253;
    int i=5;
    cout<<c%2<<endl;
    cout<<i%c<<endl;
    cout<<19%10%5<<endl;

    return 0; 
}

输出:
-1
2
4

在c/c++中,char可视作单字节整形,取值范围-128~127,故可以参与求余。

253对应的二进制是0xFD,即-3的补码表示,C99标准规定:

如果%是正数,有 a%(-b) == a%b;如果%左边是负数,有(-a)%b == -(a%b)

有因为%是从左向右结合,所以19%10%5相当于(19%10)%5,结果是4

二、运算符结合律

Operator precedence and associativity-运算符的优先级和结合性,下表是C语言的运算符优先级和结合性表格

这里写图片描述

运算符的结合性是指相同优先级的运算符在同一个表达式中,且没有括号的时候,运算符和操作数的结合方式,通常有从左到右结合和从右到左结合两种方式。举个例子,假设~是一个运算符,又有表达式a~b~c,如果~是左结合的,那么该表达式被解析为(a~b)~c,如果~是右结合的,那么该表达式将被解析为a~(b~c)。比如上表中三目运算符?:是从右向左结合的,那么下面的表达式a > b ? b > c ? 1 : 0 : 2将被解析为 a > b ? (b > c ? 1 : 0) : 2。

相关文章
|
28天前
|
编译器 C++
C++ 模板进阶
我们之前已经简单学习过模板使用,今天我们针对模板更多特性具体来说一说。
|
1月前
|
算法 C语言 C++
探索C++:从入门到进阶
大家好,欢迎来到我们的公众号!今天,我们将一起探索编程世界中的一颗明星——C++。无论您是初学者还是有经验的开发者,本文都将带您从C++的基础知识一路探索到进阶应用。让我们开始吧!
31 0
|
1月前
|
编译器 C语言 C++
【C语言进阶】那些你必须掌握的C/C++要点——动态内存管理(1)
【C语言进阶】那些你必须掌握的C/C++要点——动态内存管理(1)
24 0
|
1月前
|
设计模式 算法 搜索推荐
C++的编程思想和进阶编程
● 一个模式描述了一个不断发生的问题以及这个问题的解决方案;模式是前人的设计经验上总结出来的对于一些普遍存在的问题提供的通用的解决方案;比如单例模式、观察者模式等 ● 软件中有很多模式 面向对象常见的23中设计模式; 反模式;企业应用架构模式等
21 0
|
1月前
|
存储 算法 编译器
【C++】C++ 基础进阶【五】STL 容器进阶
C++ STL 标准模板库中容器相关,以及一些注意事项
43 0
【C++】C++ 基础进阶【五】STL 容器进阶
|
1月前
|
存储 算法 C++
【C++】C++ 基础进阶【四】STL 容器基础
STL 标准模板库 简介 容器基础
26 0
【C++】C++ 基础进阶【四】STL 容器基础
|
1月前
|
自然语言处理 数据库 C++
【C++】C++ 基础进阶【三】英语相关
英语相关内容,以及英语工具和工作习惯,笔记工具等
28 0
【C++】C++ 基础进阶【三】英语相关
|
1月前
|
XML IDE 编译器
【C++】C++ 基础进阶【二】开发技巧
C++基础进阶,关于开发环境开发工具的一些便捷使用方式,提高生产力
35 0
【C++】C++ 基础进阶【二】开发技巧
|
1月前
|
XML Java 编译器
【C++】 C++ 基础进阶【一】易错点
本文章主要分享 C++ 的一些基础和易错点,通过比较好的编程方式和借助编译器,将节省的精力和时间用在重要的事情上。
30 0
|
2月前
|
安全 C++
【C++ 进阶】继承
【C++ 进阶】继承
44 0
相关产品
云迁移中心
推荐文章
更多