c語言,這個程式是怎麼執行的??輸出的數字是怎麼來的

時間 2021-08-30 11:19:49

1樓:王勃啊

你不要管3221216112這個數字

它顯示出來只是希望告訴你差值

3221216112 和 3221216128 的差值的一定的。因為 3221216112 指向的是a的首地址

而3221216128 指向的是a[4]的地址,他們相差 4*4=16個地址。

至於3221216128 是怎麼來的,這是一個隨機又固定的數字。

隨機是說不同的編譯器產生的數字不通,固定是說每次執行都幾乎會產生相同的數字

2樓:西門吹李記

p1,p2分別為陣列a中a[0],a[4]的地址,就是對應變數的記憶體區域在計算機記憶體中的地址。

現在一般電腦的記憶體都有4g左右,約4*10^9個位元組。例程中a[0]實際儲存的地址就是在記憶體中地址從3221216112開始的4個位元組

a[0]地址範圍:3221216112~3221216115,p1指向a[0]首地址就是3221216112

a[1]地址範圍:3221216116~3221216119

以此類推a[2],a[4],

a[5]地址範圍:3221216128~3221216131,p2指向的記憶體區為3221216128

因為p1,p2是同一個陣列的元素的指標,因為元素之間有前後順序,故可相減,差等於陣列元素下標只差,為4。

p1和p2強制型別轉換成int型為x和y後後丟掉了陣列相關的特性,稱為純整數了,相加減就是純數字加減了故y-x=3221216128-3221216112=16

因為y數值比x大,故y>x為1

3樓:飄遙舞者

指標輸出的是地址,變數輸出的是地址的整數值

c語言中實現輸入一個數字字元,然後轉換成整數數字輸出.怎麼做? 10

4樓:匿名使用者

字串轉整數可以有兩種方法:

1.使用c語言自帶的庫函式:atoi。

函式原型:int atoi(const char *nptr);

功能:把字串轉成整型數。

例如:#include

#include

int main(void)

/*輸出:

int = 12345

*/2.可以自己編寫一個轉換函式:

#include

#include

int atoi(char *s)

return(t);

}int main ()

/*輸出:

n = 12345*/

5樓:死亡盛世

我只知道資料型別能相互轉換,但貌似字元和整形無法用一句程式轉換吧,如果你想寫多句程式來轉換,可直接用switch語句,對'0'-'9'進行判斷,直接輸出0-9,不知道這樣行不行的通。

6樓:

char c;

int n;

c = getchar();

n = c;

printf(%d,n);

/*也可以直接輸出c*/

printf(%d,c);

如果要數字對應輸出就這樣寫

char c;

int n;

c = getchar();

n = c-48;/*48是0的ascii碼值*/printf(%d,n);

程式執行後的輸出結果是,c語言,以下程式執行後的輸出結果是

32768正確 乙個整型變數只能容納 32768 32767範圍內的數,無法表示大於32767的數。遇此情況就發生溢位,但執行時並不報錯。數值達到最大值時後,從最小值計數,所以32768 32767 1,在c裡就又回到 32768了 把int b 改成long b b ld 再試試看 根據編譯器的不...

C語言為什麼這個程式執行沒有輸出的結果?與結構體陣列有關

十四行 struct student p stu 中間加個student 二十九行 if strcmp stu i major,t 0 因為是字串,所以要用雙引號,而不是單引號。三十二行 else if strcmp stu i major,w 0 同理 三十五行 else if strcmp st...

C語言為什麼這個程式輸出是這個結果(陣列問題)

第1次迴圈,i 0,a i a 所以執行i1 此時i1 1 第2次迴圈,i 1,a i b 所以執行i2 此時i2 1 第3次迴圈,i 2,a i c 不執行i1 或者i2 第4次迴圈,i 3,a i d 不執行i1 或者i2 第5次迴圈,i 4,a i a 不執行i1 或者i2 第6次迴圈,i 5...