1樓:仲孫金生羊婷
因為sum=a+b;的時候a,b都沒有賦初值。應該先對a
0,b0再參加運算。
2樓:祈蕾杞培
開始定義變數後沒有賦值操作,直接進行了運算。
所以出現這種情況,正確的是。
voidmain()
3樓:網友
順序問題。編譯器是按照循序執行語句。
程式當中你先定義了a,b
並沒有初始化。編譯器給分配了儲存空間但其中的內容並不確定。
所以當執行到sum=a+b的時候就把a,b當中的隨機的值取了出來。
然後你又定義了a,b的值,這是並不影響sum的值。所以可以這樣改。
voidmain()
4樓:魯實丘辛
選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語言這題怎麼計算?
5樓:四季花城廣場
**執行結果:
#include
int main()
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語言計算問題
6樓:湯菊孝嬋
答案是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。。
我只能這樣解釋了。。什麼看不懂的再問我吧。。嘿嘿。
7樓:盤季問浩
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
8樓:實娜夫白
首先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(十進位制)
9樓:燕澹厲採
求反運算。求反運算子~為單目運算子,具有右結合性。
其功能是對參與運算的數的各二進位按位求反。例如~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語言問題求解?
10樓:匿名使用者
簡單的說:由於你的**是非標準方法訪問變數,導致結果非常不確定,沒有固定答案,不同編譯器結果不一樣。
你這樣是故意記憶體訪問越界來計算麼?為什麼要研究這個呢?因為這樣做非常明顯的違背軟體工程的。
問題是這個答案是沒有標準答案的,因為編譯器會對結構內的記憶體布局稍微做調整,不同編譯器和不同編譯條件導致的布局都不一樣,沒法給你確保arr值得準確性。
所以我建議是至少不要現在研究這個,等你學的深入了對記憶體布局及編譯器優化有深刻了解在研究這個。對於初學者而言,養成良好的程式設計習慣很重要,這種東西還是不對的。
c語言計算問題問題
11樓:匿名使用者
a=1,b=0,c=3
首先看運算子的級別:()關係運算子》賦值運算子整個是乙個關係表示式:
從左往右:ik為假 值為0,賦給b,所以b=0
因為是與運算,有乙個為假就整體為假,後面就不做,故c=3
12樓:匿名使用者
ik是假的,所以j>k=0;所以b=0,ijk都!=0,所以c=1;
c語言運算的問題
13樓:乙個愛學習的
// 先執行右邊括號裡面的 從左向右執行,//第一步 執行a = 3 ==a = 3// 第二步 執行 b = a-- 因為--在後,所以a先賦值給b 即b=3 a在--,即a = 2
第三步 x的值,在此執行過程中,x取括號裡面最後一次執行的值,即取b的值。
14樓:匿名使用者
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。
15樓:烏綸奇初珍
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語言關係運算問題
16樓:匿名使用者
&&是從左向右運算的,先算 m=a>b,由於a>b是false,返回0,所以m=0
是的&&運算為false,因為左邊已經是false,右邊就不運算了。
所以n還是=2
17樓:
m=a>b的執行結果,是m的值,是0,所以,&&後面的式子不再執行。
n=c>d未執行。
所以,n仍然是初值,為2
18樓:智遴
因為左邊已是零,所以不需要對右邊進行運算了,因此n的值不變。
19樓:匿名使用者
c的與&&運算有短路功能。當參加與&&運算的第乙個運算元(m=a>b)為假時,直接返回假,而不對第二個運算元(n=c>d)執行處理,即n=c>d沒有被執行。
c語言 基本計算問題?
20樓:網海1書生
x=5>1+2&&2||2*4<4-!0
1 (|後面的不需要計算)
C語言的乙個計算題,c語言這題怎麼計算?
這個問題是乙個運算子優先順序的問題!題目中的優先順序 最高,依次是 所以上一題首先求解的是 第乙個 求解 z y為真,所以結果是1,用它的結果和x比較,1 2,所以括號內的結果是0 第二個 求解 y z為真,結果為1 第三個 求解 x y 2 4 6 第四個 求解 y z 2 所以得到的結果是!0 ...
C語言的問題,這道題怎麼做啊,C語言的問題,這道題怎麼做啊?
考你遞迴的用法 10送入fun 10 void fun int n n 2 5,條件為真,呼叫函式fun 5 printf d 10 2 被壓棧 n 2 2,條件為真,呼叫函式fun 2 printf d 5 2 被壓棧 n 2 1,條件為真,呼叫函式fun 1 printf d 2 2 被壓棧 n...
C語言問題,c語言問題
int a 4 void main int a 2 這種局 bai部變數,會du隱藏掉上一級 定義zhi的同名變數,下面dao 也是一樣回 中有效。所以上面的復合語句中,會輸出0,下面呼叫sub1時,實際上傳入的是main中的int a 2 又有a a 1,所以會輸出1,下面也是一樣的,main中的...