1,&和&&短路與和邏輯與的區別spa
邏輯與(&)和短路與(&&)在運算上對條件的結果判斷不會產生影響,但會對條件判斷的運算有影響。關鍵在於,邏輯與(&)在運算時會連續運算全部須要判斷的命令.但短路與當遇到false時就會中止運算。class
二進制運算和邏輯運算數據類型
a.條件操做只能操做布爾型的,而邏輯操做不只能夠操做布爾型,並且能夠操做數值型
b.邏輯操做不會產生短路.運算符||其中任何一個爲true,則結果就返回true,不會執行後面的操做了,這就叫短路。如: int a = 0; int b = 0;
if( (a = 3) > 0 || (b = 3) > 0 ) //操後a =3,b=0. 二進制
if( (a = 3) > 0 | (b = 3) > 0 ) //操後a =3,b=3。float
2,a = a + b 與 a += b 的區別?數據
主要的區別是在運算時精度的問題,固然了-=、*=、/=,%=也都是一個道理類型轉換
這兩種形式的主要區別在因而否進行數據類型的自動轉換,當兩個操做數同類型時這兩種形式的運算結果是沒有差異的,當兩個操做數數據類型不一樣時,且左操做數即保存結果的操做數的數據精度要低。di
3,float的精度問題.強制類型轉換co
3*0.1 == 0.3 將會返回什麼?true 仍是 false?false,由於有些浮點數不能徹底精確的表示出來。浮點數的精度問題浮點數
float型float f=3.4是否正確 答案:不正確。緣由:精度不許確,應該用強制類型轉換,以下所示:float f=(float)3.4 或float f = 3.4f
short s1 = 1; s1 = s1 + 1;有什麼錯?s1+1結果精度轉換爲整形,整形不能賦值給short類型的s1
四、