① 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,所以對於此類情況,編譯器不會報錯。