請問c語言中b a1 這條語句是什麼意思?執行過程是怎樣的

2021-05-20 15:19:53 字數 3952 閱讀 4461

1樓:匿名使用者

如果a為0,則邏輯假,後面的邏輯與不再運算,直接給b賦值邏輯假,也就是0

如果a不為0,則邏輯真,與後面的-1(也是邏輯真)進行邏輯與後得到邏輯真,於是給b賦值邏輯真,也就是1

c語言中b=a&&(-1);是什麼意思啊? 1+1=?

2樓:冬天終將過去

2, 1

---------------------因為a= 25/10%9 = 2

b = a&&(-1) ,即 2 ||(-1), 兩個非0值的邏輯與,結果為真,但b是整型 ,一般的編譯器結果為 1(有可能因不同的編譯器,結果會不一樣,但肯定不是0)

3樓:永恆組

-1非零,所以

為真,任何數與1就是它本身,所以只要a不為零,這個b就等於1 只有a=0時,b=0 1+1 數學上算出來是2 數位電路中為1 算錯的時候是除了1和2以外的任何數字

麻煩採納,謝謝!

c語言b=2&&(-1)=?是什麼意思

4樓:天府第一寶

3)。邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。

符號 功能

&& 邏輯與

|| 邏輯或

! 邏輯非

當表示式進行&&運算時,只要有一個為假,總的表示式就為假,只有當所有都為真時,總的式子才為真。當表示式進行||運算時,只要有一個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!

)運算是把相應的變數資料轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。

還有一點很重要,當一個邏輯表示式的後一部分的取值不會影響整個表示式的值時,後一部分就不會進行運算了。例如:

a=2,b=1;

a||b-1;

因為a=2,為真值,所以不管b-1是不是真值,總的表示式一定為真值,這時後面的表示式就不會再計算了。

這是一類特殊的運算子,自增運算子++和自減運算子--對變數的操作結果是增加1和減少1。例如:

--couter;

couter--;

++amount;

amount++;

看這些例子裡,運算子在前面還是在後面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表示式的一部分,兩者就有區別了。運算子放在變數前面,那麼在運算之前,變數先完成自增或自減運算;如果運算子放在後面,那麼自增自減運算是在變數參加表示式的運算後再運算。這樣講可能不太清楚,看下面的例子:

num1=4;

num2=8;

a=++num1;

b=num2++;

a =++num1;這總的來看是一個賦值,把++num1的值賦給a,因為自增運算子在變數的前面,所以num1先自增加1變為5,然後賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因為自增運算子在變數的後面,所以先把num2賦值給b,b應該為8,然後num2自增加1變為 9。

那麼如果出現這樣的情況我們怎麼處理呢?

c=num1+++num2;

到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的程式設計當中,應該儘量避免出現上面複雜的情況。

5樓:匿名使用者

讓你用邏輯運算子和賦值運算子的優先順序

c語言中執行語句:b=a-b?a:b-1;是什麼意思?

6樓:匿名使用者

此表示式和以下**實現是一樣的

if ( a - b != 0 )

b = a;

else

b = b-1;

7樓:隔壁九大爺

這是一個三目運算式,如果b=a-b成立,就等於a,否則等於b-1.

c語言中,d=a>30?b:c 這個語句是什麼意思?

c語言中b=(-1)&&(0,1)是什麼意思?

8樓:示申僉

(0,1)是逗號表示式,這個表示式的值就應該是最右邊這項的值1

b=(-1)&&(0,1)

就相當於b=(-1)&& 1;由於-1和1都是非0值&&運算之後肯定為真,為真則值為1所以b=1;

9樓:匿名使用者

&&是與運算子,如果兩邊都是非0運算結果才是1這應該知道吧。-1就是一個非零常量,(0,1)這個考得主要是「,」運算子,不管括號內有多少個數都取最後一個值作為&&運算右邊的量,所以兩邊都是非0,運算結果為1.基本就是這樣,有問題可以再提問。

10樓:匿名使用者

(-1)就是-1沒什麼特殊含義。

(0,1)就是1,(a,b)=b。小括號運算就是取後面一個。

a&&b,a和b都不為零時結果為1

11樓:夜光隨行

對於一個邏輯表示式,其值只要不是0就被設定為1,(-1)不是0,所以就認為是1,

對於一個逗號表示式,它的值取最後一個表示式的值,即x = (0,1,2,3);

則x的值為3,所以這裡(0, 1)的值為1,所以b = (-1)&&(0, 1)等價於b = 1 && 1

所以b的值為1。

12樓:匿名使用者

(1):

/和%優先順序相同,但是結合順序是從左往右

a=d/100%9

等價於:

a=(d/100)%9

因為d是int  所以

d/100=2,

2%9=2

a=2;

(2):

(0,1)是逗號表示式,結果是1

(-1)&&1結果是1

b=(-1)&&(0,1)=1

13樓:匿名使用者

-1沒什麼意思啊,

(0,1)是逗號表示式。其值等於最後表示式的值。即1;

-1&&1的結果自然是true。

所以b為1;

14樓:匿名使用者

都好表示式 表示式1,表示式1,其求解過程先求表示式1,後求表示式2,整個表示式值是表示式2的值,所以(0,1)的值是1,(-1)加括號是為了調整結合順序。

15樓:匿名使用者

好的,其實這題很簡單的,你不要對數值 過於敏感。看到 && 這個符號 就應該想到 它左右兩邊的值是 」0「 還是」 1「 換句話說 ,是」真「還是」假「。然後很容易明白 -1 ,非0,是 」真「然後 後面的逗號表示式的值是1 就是」真」。

而邏輯表示式&&的意義是 兩個為真 就為真。所以是真 或者說 是 「1」你明白了嗎?

請問一下c語言中(m=a>b)&&(n=c>d)a=1b=2c=3d=4是什麼意思?詳細一下謝謝

16樓:匿名使用者

(m=a>b)&&(n=c>d)

a>b的布林值賦值(1或0)給m,如果為真,繼續執行n=c>d.如果a>b為假,則不執行c=c>d

a=1b=2c=3d=4

這表示式有問題

17樓:匿名使用者

&&是條件與,表示只有前後兩個判斷語句的布林值都為1(判斷結果都為真)的時候才滿足條件。按初a=1b=2c=3d=4來看,&&前後的條件都為假,所以就是 0&&0,最終結果為假。

18樓:手動閥隧道

m=a>b就是把a>b的比較結果賦給m,即a>b成立時,m=1否則m=0

同理n=c>d也是一樣

那麼(m=a>b) && (n=c>d)的意思就是(a>b)&&(c>d),同時把a>b的結果賦給m,c>d的結果賦給n

a=1b=2c=3d=4這個不符合語法規則啊??是不是a=1;b=2;c=3;d=4?

c語言ba1是什麼意思,c語言問題,b11什麼意思

邏輯運算,a 1 是a和 1與,如果a不為0那麼結果就是1,如果a為0結果就為0,結果賦給b 2,1 因為a 25 10 9 2 b a 1 即 2 1 兩個非0值的邏輯與,結果為 真,但b是整型 一般的編譯器結 專果為 1 有可能因屬不同的編譯器,結果會不一樣,但肯定不是0 邏輯與運輸符,就是兩邊...

c語言中語句srandtimenull什麼意思

c語言中 srand time null 的意思是 使用當前時間進行隨機數發生器的初始化。time t time time t t 是c標準庫函式,如果t是空指標 null 直接返回當前時間。如果t不是空指標,返回當前時間的同時,將返回值賦予t指向的記憶體空間。time 是指返回自 unix 紀元起...

C語言for迴圈,c語言中for語句是怎麼用的

為什麼?我想為你為什麼不知道原因,這是很簡單的邏輯推算題,一看就知道你的呼叫的函式返回值就是你的輸入值,我猜你是想要的結果是1,1 2,1 2 3,1 2 3 4,1 2 3 4 5是吧?呼叫函式的形參只是在你用的時候形成,當呼叫完畢就會釋放,j的運算結果不會保留在記憶體當中,因此你想要那種結果的話...