Bootstrap

c语言 乘法除法运算类型转换,C语言从基础 -> 精通 -> 底层 (4) 运算符与类型转换...

一、算术运算符

算术运算符分为单目和双目操作:

单目操作是指对一个操作数进行操作。例如: -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

;