Bill学C++ 第三季:求余运算符+运算符结合律
2016-03-05 16:05
411 查看
一、求余运算符
%用于求余数,优先级与*和/相同,结合律也是从左至右。要求两个操作数均为整数(或可以隐式转换成整数的类型),故:14.2%3就是错误的,因为double不能隐士转换为整形。
[code]#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。
相关文章推荐
- c\c++中的形参与实参
- C++ 函数的嵌套调用
- c++ const 关键字
- c语言:输入10个数,输出值最大的元素和该数是第几个数。(数组元素作函数实参)
- 2016年的C++常见的面试问题详解~搬至牛客网~strcpy
- C++二分查找法
- 数组写入Txt 与读Txt到数组 C++
- switch语句解析
- C++设计模式之适配器模式
- 复杂链表的复制
- VS2010 VS2012版最常用的快捷键
- 双向链表操作(逆置三种实现以及 冒泡排序 )
- C++异常基础
- c++引用计数实现
- 《编写高质量代码:改善C++程序的150个建议》读书笔记5(关于异常处理的部分)
- 学习C++反汇编-单继承
- 【学习C++】1.开始学习C++
- 1026. Table Tennis (30)
- 【C++学习之路】派生类的构造函数(三)
- 《Effective C++》Rule42: 了解 typename 的双重意义