1樓:九劍之上
這個問題涉及到結構體位元組對齊的問題,在vc中地址按4位元組對齊,即32位。上面的程式long型的變數佔4個位元組,char* 指標型別為4個位元組,short int 和char共3個位元組補齊為4個位元組,一共12個位元組,後面的陣列10個位元組補齊為12個位元組,12+12=24。如有疑問請參考http:
//blog.csdn.net/arethe/article/details/2548867
2樓:匿名使用者
結構體的對齊問題:
對於char型資料,其自身對齊值為1,對於short型為2,對於int,float,double型別,其自身對齊值為4,單位位元組。也就是說如果 地址能對這個型別的對齊值整除,才能把資料放這裡。
首地址是dd10,那麼依次放8個位元組(long),地址就是dd17。char *s對齊值為1,所以放在了dd18的位置。接著放short int i ,對齊值是2,因為接下來得地址是dd19不能被2整除,所以空出dd19,放在了dd20和dd21這兩個地址上。
char c的對齊值是1,放在了dd22上。short int 的對齊值是2,空出了dd23,放在dd24及以後的10位元組,所以是24
0x18就是24啊,你是以十六進位制輸出的
為什麼 bfff-a000+1=1fff+1=2000h 而不是 bfff-a000+1=2fffh, 那個f不是=15嗎? f-015應該=15才是啊!!
3樓:匿名使用者
16進位制的數其實和十進位制是一樣的,區別在於一個以10的n次方作為計數單位,一個以16的n次方作為計數單位
bfff-a000 = 1fff這個很好理解吧 b-a = 1,f-0=f 每一位的減法都不需要向前一位借位
1fff+1 = 1fff+0001 f+1=15+1 = 16所以要進位,進位3次結果就是2000啊
c語言題 編寫程式要求使用者輸入12小時制的時間,然後用24小時制顯示該時間
4樓:風若遠去何人留
因為這裡有一個特殊點
12:00 pm
這個是中午12點 而不是晚上12點。
所以24小時制 這個要轉換成12:00
第一個程式做不到這一點。
5樓:聽不清啊
下圖肯定不可以,因為變數am_pm沒有定義,定義的是ap
二個程式中使用有,上面是p,下面是p。如果程式中不相符的話,它會不認的。
6樓:匿名使用者
就是邏輯判斷不周全~~~
7樓:匿名使用者
如果是在12點以前,你的hour24就是隨機數
c語言問題,下面這個程式執行得到24,可是我覺得不應該是13+13=26麼,**不對呢
8樓:快樂的快樂人
func(func,func),func中呼叫了兩次第一次返回值是13沒錯,
然後第二次呼叫得11,因為第一次x++,y++實在這個「語句」結束後進行自增,及求出z後再運算,即第二個func呼叫前x仍是6,y仍是7。而後面的自減運算是在呼叫前,為5,6。
你可以試試,m=func(x++,y++);(注意是分號隔開)n=func(--x,--y);
然後執行z=func(m,n),應該就是26了。
9樓:娉枸
你設定斷點看看x++,y++,--x,--y是什麼結果,應該是這裡的問題,有時候你腦子裡裡想的過程跟程式實際執行是不一樣的。
一個c語言問題,為什麼不報錯,但程式執行到一半
10樓:桃花運退還給
遇到已停止工作一般是指標問題 問題可能出在野指標 空指標呼叫 越界多種 不好下結論,但是問題出在 指標 或者連結串列中指標位置
關於sdl和c語言,都說sdl是用c編寫的,在c程式中可以呼叫sdl庫,就這點搞不明白,這意思是c
11樓:無上陽光
sdl我不瞭解,但是聽說過是一個多**庫。其實是這樣,sdl是c寫的,但是不能說是混用,我的理解就是一個用c寫的庫而已,就好像我們最常用的c++的stl庫一樣。這就類似於sdl是一個用c開發的元件,可以供你呼叫一樣
c語言,1000以內的完數,為什麼會有24!!!! 10
12樓:
#include
int main()
{int x = 2, y, z, s;
printf("完數有下列數字:\n");
for (x; x <= 1000; x++){s = 0;
for (y = 1; y
13樓:
24不是完數
可能是你程式寫的有錯誤
for (int x = 2; x <= 10000; x++)if (i == x - 1)}}}
C語言下面程式執行結果為什麼是0而不是1 mainint n
因為迴圈的時候當i等於k的時候退出迴圈了,根本沒有執行迴圈體n i n i 1 這一句,所以n k 的值為初始化的值,初始化的值為0.故輸出0,因為當i k時,for迴圈的條件已經不滿足,不會執行n i n i 1。故n k 還是0.選cn 4 相當於是這樣 intn 0 while n 2 先進行...
C語言,我的程式為什麼執行不對,c語言中輸入一個程式後顯示無錯誤,為什麼不能執行
是陣列,本身就是地址,不必用 2 b進位制,每位上的數字最大值是b 1,因此,應該先檢視3個數各位的數字,取最大值 1作為b的最小值.3 注意,base在每次求1個數之前,要重新歸1。你求sum1,sum2,sum3前,都沒有歸1,base累積,越來越大。第一個base 1 應該在for i len...
請教個C語言程式大家幫下,謝謝了
先把數字轉換成字串,再來比較 在stdlib.h中有個函式itoa itoa的用法 itoa i,num,10 i 需要轉換成字元的數字 num 轉換後儲存字元的變數 10 轉換數字的基數 進位制 10就是說按照10進位制轉換數字。還可以是2,8,16進位制型別 原形 char itoa int v...