① C语言里面除法和乘法怎么运算
答案是不一定。
比如a*2,实现方法很可能是将a向左移动1位,就实现*2了,*1024就移动10位。
如果不是*2,也可能像楼上说的+某个数N次,比如a*5不就是把a自加5次么,但也不一定,编译器会找到一种最“快”的方法运算。
还有就是,这个很可能不是C实现的,是汇编器实现的,因为C编译器只是把C的代码乘除代码翻译成汇编代码,而汇编也有乘、除法,C编译器显然只是翻译成汇编代码,然后由汇编器解决,汇编器的做法就像我上面说的那种,找一种最快的运算次数最少的方法来实现。
② c语言中除法里除数为0,编译器会不会报错么
区分除以常量0,和变量为0时被除两种情况。
1 除以常量0。
编译器除非特别设置,否则会对其检测到,并报一个警告(warning),提醒有除0的情况。
2 除法中变量为0。
由于变量是在运行中赋值的,在编译阶段中,编译器无法预知是否可能为0,所以对于此类情况,编译器不会报错。