C 的程式方面問題if i mask 0 什麼意思啊

2022-12-04 16:36:11 字數 5563 閱讀 2137

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

c語言程式問題,C語言程式問題?

1.在你打算學習c語言之前,你要下一個狠狠地決心.因為許多電腦愛好者在學習c語言的過程中,都會遇到困難,從而沒有堅持到最後.只有你下定狠狠地決心,才能學會c語言,才能學好c語言.2.要想學習好c語言,就要學會細心,耐心.c語言程式的編寫需要非常細心,因為一個標點符號的錯誤,可能導致程式的無法執行.3...

C程式的問題,一個C程式的問題

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...

c語言程式問題新手,C語言程式問題 新手

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 輸出學生個數 程式比較短,考慮到樓主情況後面追...