問題提出:
(夢的邊緣(注意:不是夢想的邊緣哦,^_^))
Private Sub Form_Click()
Dim sum As Integer, i As Integer, j As Integer
sum = 0
For i = 0 To 1
sum = sum + 1
For j = 0 To 3
If Not (j Mod 2) Then sum = sum + 1
Next j
Next i
Print "sum="; sum
End Sub
運行結(jié)果為什么是sum=10,而不是sum=6
答:
這是一道比較精巧的題目!
首先我們先看一下:
Print Not (0),Not(-1),Not(1)
運行結(jié)果是什么。
估計一部分網(wǎng)友會做成:
0,-1,1轉(zhuǎn)換成布爾型,分別為false,true,true
因此結(jié)果為:true false false
但是實際上運行結(jié)果為:
-1 0 -2
為什么呢?
原來這個是Not的特殊用法。
當Not后為數(shù)值型時,先自動四舍五入后,做位運算。
以Not(0)為例,
0二進制為:00000000,則Not(0)將對該二進制取反,
為:11111111,首位為1,為負數(shù),
則求補碼11111111表示的數(shù)是多少。
由補碼求該負數(shù)絕對值的原碼,規(guī)則為:減一,各位取反。
得:00000001即為1。
(夢的邊緣(注意:不是夢想的邊緣哦,^_^))
Private Sub Form_Click()
Dim sum As Integer, i As Integer, j As Integer
sum = 0
For i = 0 To 1
sum = sum + 1
For j = 0 To 3
If Not (j Mod 2) Then sum = sum + 1
Next j
Next i
Print "sum="; sum
End Sub
運行結(jié)果為什么是sum=10,而不是sum=6
答:
這是一道比較精巧的題目!
首先我們先看一下:
Print Not (0),Not(-1),Not(1)
運行結(jié)果是什么。
估計一部分網(wǎng)友會做成:
0,-1,1轉(zhuǎn)換成布爾型,分別為false,true,true
因此結(jié)果為:true false false
但是實際上運行結(jié)果為:
-1 0 -2
為什么呢?
原來這個是Not的特殊用法。
當Not后為數(shù)值型時,先自動四舍五入后,做位運算。
以Not(0)為例,
0二進制為:00000000,則Not(0)將對該二進制取反,
為:11111111,首位為1,為負數(shù),
則求補碼11111111表示的數(shù)是多少。
由補碼求該負數(shù)絕對值的原碼,規(guī)則為:減一,各位取反。
得:00000001即為1。

