前言:本篇是個人複習基礎知識過程中遇到一些容易混淆的點在此記錄,如有錯誤請指正。如
(int)9
在的原碼為:| 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
-9
的補碼為| 1 | 1 | 1 | 0 | 0 | 1 | 1| 1| + 1 = | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
比如**
int x , y , z ;
一般來說編譯器會把這三個變數分配到一段連續的記憶體裡。但是可能會被編譯器優化。
看下面的例子:
#include int main(void)
執行結果如下所示
如果加上volitale
關鍵字則不會被編譯器優化了。
#include
int main(void)
#include int main(void)
; int *p = (int *)(&a + 1);
int *q = (int *)(*(a + 1));
printf("%d, %d\r\n", *(p - 1), *(q - 1));
}
執行結果如下:
這裡需要清楚幾個概念:
在乙個函式內部,可以再復合語句中定義變數,這些變數只在本復合語句中有效,這種復合語句也稱為「分程式」或「程式塊」。
#incude int main(void)
}
上例程式中變數a
只在中間的符合語句塊內有效。
這裡只討論對整數整數對2
的n
次方的取模和除法。
2
的n
次方的除法。
如22 / 8 = 2
:
可以看到結論:乙個整數除以10110
右移3
位即為10
2
的n
次方等於這個數右移n
位。同理,乙個整數乘以2
的n
次方等於這個數左移n位。整數對2
的n
次方的取模。
如22 % 8 =22 - (22 / 8) * 8 = 6
:
結論:乙個整數對22 / 8 = 2
,2
的二進位制為10
,乘以2
的3
次方是左移3
位,所以是10000
。
22 - (22 / 8) *8 = 10110 - 10000 = 110 = 6
2
的n
次方取模為這個數取低n
位的資料,如上22%8
,22
取低3
位是6
C語言 C語言複習筆記
為什麼要學c語言?1972年,美國貝爾實驗室的 d.m.ritchie 在b語言的基礎上最終設計出了一種新的語言,他取了bcpl的第二個字母作為這種語言的名字,這就是c語言。總所周知,任何東西的盛行都只是乙個階段,語言也是如此。但是,c語言是個例外,乙個矗立了半個世紀的語言,其中好壞,我想應該不難了...
c語言複習筆記
指標部分 1.指標型別說明 main 2.指標加減運算說明 指標的加減運算 只能對陣列指標進行,其他型別的指標變數是無意義的 int pt pt pa 1 陣列後移一位 pt pa 1 陣列前移一位 pt pa pt pa pt pa pt pt 在陣列中!兩個指標變數可以相減,但不能相加!int ...
C語言複習筆記(三)
1 複習指標與陣列 參考2 選擇排序法講解 歸納 1 把0座標的元素與右邊最小的乙個元素交換,達到效果最小的放到0位置 2 把1座標的元素與右邊最小乙個元素交換,達到效果,第2小的放到1位置 3 把2座標的元素與右邊最小的乙個元素交換,達到效果,第3小的放到2位置 以此類推 3 氣泡排序 歸納 兩兩...