一、算术运算符
算术运算符分为单目和双目操作:
单目操作是指对一个操作数进行操作。例如: -a是对a进行一目负操作。
双目操作(或多目操作)是指两个操作数(或多个操作数)进行操作。
1.双目运算符
: 加法运算
: 减法运算
: 乘法运算
/ : 除法运算
% : 求余运算(又叫模运算)
重点说一下后两个运算符:
除法运算符左右两边的数据类型决定了运算结果的类型。两边都是整数结果为整数,有任一方是小数,结果为小数。如果两个整数相除有余数,舍弃余数。运算符右边的数不能为0
整除运算符左右两边的数据必须都是整数,结果是这两个数相除的余数值。如果能整除,结果为0
int a = 3;
int b = 2;
int sum, diff, product, res, mod;
// +
sum = a + b;
printf("sum = %d\n", sum);//5
// -
diff = a - b;
printf("diff = %d\n", diff);//1
// *
product = a * b;
printf("product = %d\n", product);//6
// /
res = a / b;
printf("res = %d\n", res);//1
// %
mod = a % b;
printf("mod = %d\n", mod);//1
接下来我们来看它的本质,在相应的ide应该有对象的汇编代码
(去掉打印后的)
idivl 除数存储在ax寄存器 余数在dx寄存器
Cpluse`main:
0x100000f50 : pushq %rbp
0x100000f51 : movq %rsp, %rbp
0x100000f54 : xorl %eax, %eax
0x100000f56 : movl $0x0, -0x4(%rbp)
0x100000f5d : movl %edi, -0x8(%rbp)
0x100000f60 : movq %rsi, -0x10(%rbp)
0x1000