1樓:匿名使用者
第一問 假設x為0 則!x為1,而!(!x)即!(1)所以結果為0,反之,x為1時結果也為1,即 是判斷x的值是否為 1等價, 所以應該結果為c,布林型的話 答案也可以是b
第二問:這是個優先順序的問題 +=等符號運算是自右向左執行的,優先順序小於加減乘除,執行後賦值,因此a+=a-=a*a 為 a為-6 2.
a+=a即a=a+a=(-6)+(6)=-12 所以答案為d
補充問題1:(m=a==b)||n=c==d) 注意:a||b 這個表示式 當a為1時,即表示式為真 不會再進行b的運算,只有當a=0時 才會進行b的運算,你可以試試將題目中a的初始值設為1 那麼 就會執行到n=c==d 這 ,n就會被賦值了; &與 也是一樣的運算順序。
問題2:同上的道理 , a &&b 需要是a為1 時才能往下執行 b是否為1,否則直接返回表示式的結果為 0
2樓:d調唯美
c語言是遵循右優先的,就是從右面開始運算。
a+=a的意思是說a=a+a,就是說將a+a的值賦給a。
首先運算3*3的9,表達是變成了a+=a-=9.
a-=9相當於a=a-9;a+=a-9相當於a=a+(a-9)then,看好這一步,到目前為止a的值還是3,a=a+(3-9)得到式子。
a=a+(-6)此時a被賦值為-6,then最後一步,a=-6+(-6)=-12;
我說的夠清楚了吧?
第一個問題我真的沒看明白!我寫的可不少啊,純手打,正好我也在。
研究c++順便幫你一下,希望有幫助!
3樓:匿名使用者
第一題 !(x)是雙重否定等同於x,在c語言中,x不為0時表示式x為真,所以第一題選c
第二題 a+=a-=a*a是按照從右到左的順序。
a-=a*a使得a的值由3變成3-3*3=-6,這個表示式的值也就是-6
a+=a-=a*a也就等同於a+=(6),此時a=-6,所以整個表示式執行完畢後a=-12
第三題。首先看m=a==b
a==b這個表示式很明顯值為真,則m=1,m=a==b這個表示式的值也就是m的值為1
那麼整個表示式的值也就為真了(或運算「||滿足條件),後面的n=c==d不執行判斷,此時m=1,n=0
第四題。首先看m=a>b
a=1且b=1,那麼a>b顯然不滿足,則m=0,同理m=a>b也為0,則整個表示式的值就為假(與運算「&&滿足否定條件),後面的n=a>b系統不執行,此時m=0,n=1
c語言這題怎麼計算?
4樓:四季花城廣場
**執行結果:
int left = 0;//左下標變數。
int right = 0;//右下標變數。
int arr[10] =陣列。
int lsarr[10] =臨時陣列。
right = sizeof(arr) /4 - 1;//獲取陣列位數。
while (right !=0)//進行迴圈。
lsarr[left] =arr[right];/將arr右下標賦值給lsarr左下標。
right--;
left++;
for (int i = 0; i < 10; i++)列印出來。
printf("%d ",lsarr[i]);
return 0;
c語言計算問題
5樓:湯菊孝嬋
答案是22.。
t=(+i)+(i)+(i)=6+8+8=22。。
為什麼呢。這是v
c++編譯器。
的特性。就是最後兩個數的優先順序是相同的。。這樣說起來有點抽象。舉幾個例子您自己去琢磨吧。。
這是因為31=6+7+9+9。。
這是因為41=6+7+8+10+10
這是因為52=6+7+8+9+11+11。。
我只能這樣解釋了。。什麼看不懂的再問我吧。。嘿嘿。
6樓:盤季問浩
c語言裡以0開頭的數表示是八進位制數,那麼,八進位制轉換成二進位制的方法是,一個八進位制位佔3個二進位制位。
如果用二進位制表示那麼。
x=001011
y=010101
z=000001
z=111110
的優先順序高於^,,優先順序高於|
y&z=000001,.x|y&z=001011,即十進位制的11,所以第一個用%d輸出的是11
y&~z=010100,.x|y&~z=011111,十進位制的31y&~z=010111,x^y&~z=011111,十進位制的31
7樓:實娜夫白
首先x,y,z都是八進位制的數,這裡面的運算都是用二進位制的所以化為二進位制是x=00001011,y=0010101,z
00000001(用八位表示,不足八位的用0補足)(1)先進行與運算再進行或運算即(x|(y&z))11(十進位制)
2)先進行取反再進行與運算,最後或運算即(x|(y&(~z))31(十進位制)
3)先進行取反再進行與運算,最後進行異或運算即(x^(y&(~z))
00001011^(00010101&(~00000001))=00011111=31(十進位制)
8樓:燕澹厲採
求反運算。求反運算子~為單目運算子,具有右結合性。
其功能是對參與運算的數的各二進位按位求反。例如~9的運算為:
0000000000001001)結果為:1111111111110110
按位或運算。
按位或運算子「|」是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。
例如:9|5可寫算式如下:
十進位制為13)可見9|5=13
按位與運算。
按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下:
9的二進位制補碼)&00000101
5的二進位制補碼) 00000001
1的二進位制補碼)可見9&5=1。
c語言問題計算
9樓:仲孫金生羊婷
因為sum=a+b;的時候a,b都沒有賦初值。應該先對a
0,b0再參加運算。
10樓:祈蕾杞培
開始定義變數後沒有賦值操作,直接進行了運算。
所以出現這種情況,正確的是。
voidmain()
11樓:網友
順序問題。編譯器是按照循序執行語句。
程式當中你先定義了a,b
並沒有初始化。編譯器給分配了儲存空間但其中的內容並不確定。
所以當執行到sum=a+b的時候就把a,b當中的隨機的值取了出來。
然後你又定義了a,b的值,這是並不影響sum的值。所以可以這樣改。
voidmain()
12樓:魯實丘辛
選b*(p+8)
過程見下:*p=a;//初始時陣列a的首元素的地址賦給了指標變數p說明:在c語言裡陣列名代表陣列首元素,這句話你必須得記住。
推論:*(p+8)
括號裡的優先順序比*號要高,所以先執行。
p+8(p+8與a[8]等價)p+8是地址。
通過上述可知:*(p+8)//其中「
表示「指向」,*p+8)表示「指標變數p所指向的變數」即a[8]元素的值9
c語言運算
13樓:紫禮辜婉
設x=6;執行語句y=(x=5)?(x-2):(x+2);
確認一下你的題是不是這樣?
如果是這樣,請看解題過程:
首先執行(x=5)?(這句的意思是在問x是不是等於5)如果上面是對的,則執行?和:之間的(x-2);
如果是錯的,則執行:後面的(x+2)。
顯然此題x不等於5,執行(x+2),結果y=6+2=8
c語言運算的問題
14樓:一個愛學習的
// 先執行右邊括號裡面的 從左向右執行,//第一步 執行a = 3 ==a = 3// 第二步 執行 b = a-- 因為--在後,所以a先賦值給b 即b=3 a在--,即a = 2
第三步 x的值,在此執行過程中,x取括號裡面最後一次執行的值,即取b的值。
15樓:匿名使用者
b=a--,先將a的值賦給b,a再自減1
a=3,b=a=3,然後a自減1,a=2
x=(a=3,b=a--)右邊為逗號運算子,從左至右執行各語句,並將最後一個語句的計算結果賦給x,對於本題,也就是將b的值賦給。
因此,執行語句x=(a=3,b=a--)後,x的值是3,a的值是2,b的值是3。
16樓:烏綸奇初珍
0/3=0
對於除法運算子的運算屬於算術運算的範疇。
進行算術運算的資料型別一般為:整型(int),長整型(long),短整型(short),字元型(char),實型《實型又分單精度實型(float)雙精度實型(double)>
1.當運算雙方是同型別的話,那麼結果也是一樣的型別,比如如果都為整型(int),那麼結果也是整型。
例:2/4=0;7/2=3;-5/3=-1
採取向0取整的原則。如果雙方是float型,那麼結果也是float型(小數部位是7個有效數字)
2.當運算雙方不是同型別的話,那麼機器就會自動地進行型別轉換。
double<--float
longunsigned
int<--char,short
橫向向左的箭頭是必定轉換的,如果資料型別是char的話必須先轉換為int型,對於縱向的越往上級別越高,也就是兩個資料間低等級的型別要先轉化到那個高等級的資料型別,然後再進行計算,當然結果也就是那個高等級資料型別的形式。
3.還有種強制轉化計算的方式,就是為了得到自己想要的資料型別,而將一個不符合標準的資料型別進行強制轉換,比如float型的資料不能進行求餘運算,所以必須要將他強制轉化為int型方可運算,否則出錯。例:
floata=;(int)a%2=1;
c語言計算問題問題
17樓:匿名使用者
a=1,b=0,c=3
首先看運算子的級別:()關係運算子》賦值運算子整個是一個關係表示式:
從左往右:ik為假 值為0,賦給b,所以b=0
因為是與運算,有一個為假就整體為假,後面就不做,故c=3
18樓:匿名使用者
ik是假的,所以j>k=0;所以b=0,ijk都!=0,所以c=1;
c語言關係運算問題
19樓:匿名使用者
&&是從左向右運算的,先算 m=a>b,由於a>b是false,返回0,所以m=0
是的&&運算為false,因為左邊已經是false,右邊就不運算了。
所以n還是=2
C語言運算問題,C語言運算的問題
include int main printf llf ans 不過接連除了2018次5,答案太小了,輸出0.000000 scanf 是c語言中的一個輸入函式。與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上 include 在有一些實現中,printf...
c語言問題條件運算子選擇題,C語言問題 條件運算子選擇題
這個是三目運算子。這個是條件表示式,表示如果a為真,則表示式值為b,如果a為假,則表示式值為c 條件表示式具體說明如下 條件語句 if a b max a else max b 可用條件表示式寫為 max a b a b 執行該語句的語義是 如a b為真,則把a賦予max,否則把b 賦予max。使用...
c語言問題題,C語言問題答案
沒考慮邊界資料,給你改了下 int prime int p int primesum int m,int n return sum c語言問題答案 9 a 1,b 3,c 2 必須按scanf格式輸入 10 a 1 1 的值是0 初值賦值只給了每行第一個元素,其餘元素未指定值,預設0。11 1 邏輯...