1樓:
== 比 & (位運算)優先順序高
所以i&mask ==0
表示i& (mask==0)
if(i&mask==0)
實際表示如果 i 和(mask ==0)的結果,相與,值不為0, 執行 「)"後面的語句;
要想表示i &mask 是否為零
if(i&mask) 如果(i& mask)不為0 即 i是奇數時執行;
if(!(i&mask)) i& mask 為0, 即i是偶數時,執行。
if(0==(i&mask))
i& mask 為0, 即i是偶數時,執行。
if((i&mask)==0)
i& mask 為0, 即i是偶數時,執行。
2樓:匿名使用者
通常, mask是 1 2 4這些二進位制只有一個1的數,這句就是:
如果 i 在 mask為1的那個位也是1, 則條件為真.
比如i=5 // 二進位制 0101
mask=4 // 二進位制0100
則i&mask就是 0100 不為0
表示: i在mask為1的位(第3位)也為1
3樓:看灰過來了
指的是 i 和 mask 進行 按位 與運算,將運算的結果和0進行比較看是否相等
4樓:匿名使用者
變數i 和mask做與運算,&是與運算子,看結果是否與0相等
【c++】在下面一段程式中if( (i>>j)&1)是什麼意思???
5樓:黑夜一吼
i先轉換成而經指數,然後右移
j位,然後和1進行與運算
詳解>> 右移運算子
假設專 i=2,j=1
①i的值 i的二進位制形式 i >> 1(即屬i的二進位制形式右移1位)
2 0010 0001
②& 按位相與運算子
參加運算的兩個資料,按二進位進行「與」運算。如果兩個相應的二進位都為1,則該位的結果值為1,否則為0。即0&0=0;0&1=0;1&0=0;1&1=1
引用①的i>>1的結果
表示式 (i>>1)&1
i>>1 0001
1 0001
結果 0001 即結果為 1(運算邏輯請參考②)希望對你有幫助
6樓:80晴天
i右移j個單位,與1相與
7樓:
i 除以 2的j次方
<< 左移運算子 相當乘2的多少次方
>> 右移運算子 相當除2的多少次方
8樓:匿名使用者
i的二進位制形式右移j位,然後與1相與。
if ((s & 1)==0) then在c++中什麼意思
9樓:
和在c中一個意思。把s和1按位與運算,如果等於0就執行後面語句。
和1按位與只有這個數的最後一位為0才會得出等於0的結果。這個數必然是偶數才會執行then後面語句。
10樓:匿名使用者
這裡的s應該是一個變數吧,那麼就是與啊,應為1就是0000……0001的二進位制形式吧,然後按位與就可以了
11樓:
簡單的說
if ((s & 1) == 0)表示 s的0 bit是否是0。
if ((s & 2) == 0)表示 s的1 bit是否是0。
c++裡的if(a >> i & 1)是什麼意思。。大佬求教
12樓:匿名使用者
a >> i 移位運算,比如二進位制的10,右移一位得到1你可以理解為除以2,除了i次。
&,按位與運算,目的是判斷移位以後最低位是1還是0例如十進位制的3,二進位制是11,11&1 = 13 >> 1 = 3/2 = 1, 1&1 還是=11>>1 = 0 0&1 就是0了,if就不滿足了。
下面c++中 if(a[i]==0) continue; 有什麼用啊,急死了,想不通,求大神
13樓:匿名使用者
在a[0]~a[99]初始化為a[0]=0,a[1]=2,a[2]=3 、、、a[99]=100後,你的判斷是對的,但緊接著開始素數判斷時,你的結論就錯了。
素數的定義是一旦一個數可以被1和它本身以外數整除,該數即為素數,而該程式的素數判斷模型是這樣的,從2至100共99個數,依次作為除數去除2~100,一旦可以整除,即將被除數置為0,排除該數為素數,例如:
以2為除數的迴圈後,2、4、6、8 、、、100所在的a陣列元素被置為0;
以3為除數的迴圈後,3、(6)、9、(12)、15 、、、99所在的a陣列元素被置為0;
、、、最後,將經過上述處理後保持非0的數字,即為素數。
注意到沒有,括號中的被除數(6,12,、、、)在前面的處理中已被置為0了,也就是說代表數字6的a[5]=0、代表數字12的a[11]=0,由於這些數含其它數作為乘積因子,因此沒有必要在後續處理中再將這些數作為除數去測試其它數了。這裡就用到了「 if(a[i]==0) continue; 」,作用有兩點:
1、 跳開不必要的後續判斷;
2、0 不能作為除數;
懂了沒有?
14樓:匿名使用者
for(j=i+1;j 這句的緣故。 如果a[j]被a[i]整除,就把a[j]置為0。 而a[j]是遍歷整個陣列的。如果被置為0,即判定不是素數。所以if(a[i]==0) continue; 如果為零,跳過此次判斷,執行下一次。 ******************************************** 這是巢狀迴圈,可能你是因為這個,所以比較難看懂。 多理解一下邏輯 15樓:愛因斯坦波 continue;的作用是結束本次迴圈,即跳過迴圈體中下面的未執行的語句,接著進行下一次是否執行迴圈的判斷。 16樓:匿名使用者 if(a[i]==0) continue,屬於判定,就是如果a[i]的值等於零,繼續執行下一條指令 17樓:匿名使用者 這裡沒用的,不信你跟蹤試試,if判定一直不會為真,continue根本不會執行,直接執行for去了。 18樓:天枰 ll?lkjf#fllkfrkkknklklkklkklghhkoo:nhjlkkoll?lkk*lk*lkffklkyl if(i==0)和if(i=0)在vc++裡有什麼區別啊?高手請指點下。。。 19樓: i==0:判斷i的值是否為0,是則表示式的值為1,否則為0 i=0:是給i賦值0,並且表示式的值為0,如果用if(i=0)判斷的話,這個條件總是假的,所以寫程式要尤其注意這種難以發現的小錯誤 20樓: i==0是數學上的等於 i=0是給i賦值 21樓:匿名使用者 i==0是判斷i是否=0 i=0是給i賦值0 c++中if(a[i]%2) j+=a[i];和if(a[i]%2==0) continue;分別是什麼意思? 22樓:匿名使用者 if(a[i]%2) j+=a[i];分析: if(a[i]%2):如果a[i]除2餘數不等於0, 則執行j+=a[i];(就等於j =j+a[i]) if(a[i]%2==0) continue;這個在程式中沒看到呀,只能憑空說下了: if(a[i]%2==0):如果a[i]除以2的餘數為0, 則不再執行迴圈語句中這之後的語句, 繼續下一次的迴圈... 23樓:不帥人不愛 if語句懂吧?如果條件真,怎執行下一句,否則執行if外的語句。a[i]%2是對2取模運算,如果a[i]是偶數,怎結果為0,就不執行if後面的語句j+=a[i];也就是隻有a[i]是奇數時才執行該句。 if(a[i]%2==0) continue;跟上面的正好相反,當a[i]是偶數才執行 continue。即跳到最近的迴圈。 24樓:匿名使用者 倒是要問問lz是什麼意思……問的問題不清不楚…… if(a[i]%2) j+=a[i];意思是如果a[i]為奇數就執行下面的語句 if(a[i]%2==0) continue;意思是如果a[i]為偶數就跳過這次迴圈,繼續下一個迴圈 在用c++程式設計時,if(a[i])是什麼意思? 25樓:匿名使用者 if(a[i])是執行if判斷的語copy句體a[i]是一個 值。在c++中,有一個隱式型別轉換,如果說一個數非0,那麼轉換成真,否則轉換成為假。 所以if(a[i])就是判斷a[i]是不是0,是0則if(a[i])為假,否則進入if子語句。 擴充套件資料:c++程式設計中if語句是用於的條件判斷的控制語句,當判斷條件成功時,將執行相應語句,否則跳過。具體形式如下: if(表示式) 語句; [else 語句;](可選) 或if(表示式) 語句; else if(表示式) 語句; else if(表示式) 語句; ……else 語句; 上面的描述當表示式成立時執行語句,而else是可選的,在表示式不成立時將執行此語句,可以不使用。此外if語句支援多層巢狀,可以對多個條件進行判斷。 例子:輸入 一個整數n(-109 <= n <= 109)輸出如果n > 0, 輸出positive; 如果n = 0, 輸出zero; 如果n < 0, 輸出negative 26樓:匿名使用者 a[i]是一個值。 在c++中,有一個隱式型別轉換,如果說一個數非0,那麼轉換成真,否則轉換成為假。 所以if(a[i])就是判斷a[i]是不是0,是0則if(a[i])為假,否則進入if子語句 27樓:匿名使用者 首先要想if()是判斷()裡條件真假的,那就簡單了,說白了就是a[i]這個值真假,我不知道你a是什麼型別,只要a[i]不等於0就返回true否就是false 28樓:★迷彩帽 就是如果a[i]不空 29樓:匿名使用者 支援一樓的回答 他說的不錯 c++中 if (y&1) 是個什麼意思啊? 30樓:匿名使用者 如果成立說明y是奇數? 按位與,就是將y轉成2進位制,如果末位是1,就為真如3為011,末位為1 4為100,末位為0 1.在你打算學習c語言之前,你要下一個狠狠地決心.因為許多電腦愛好者在學習c語言的過程中,都會遇到困難,從而沒有堅持到最後.只有你下定狠狠地決心,才能學會c語言,才能學好c語言.2.要想學習好c語言,就要學會細心,耐心.c語言程式的編寫需要非常細心,因為一個標點符號的錯誤,可能導致程式的無法執行.3... void snake 定義一個2維陣列並且賦值為0 int i 0,j 0,t 2,n,m i,j分別表示行和列printf 輸出蛇行方陣 n printf 請輸入方陣的階數 fflush stdin scanf d n printf 請輸入方陣的起始值 fflush stdin scanf d t... include define n 50 人數 define fl 60 統計分數下限void sort float a,int c 選擇排序return r int main void include stdio.h main printf d num 輸出學生個數 程式比較短,考慮到樓主情況後面追...c語言程式問題,C語言程式問題?
C程式的問題,一個C程式的問題
c語言程式問題新手,C語言程式問題 新手