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...