c語言-常量變量筆記

程序編譯鏈接原理
預處理:.c -> .i
gcc -E  hello.c -o hello.i


編譯:.i / .c -> .s
gcc -S hello.i -o hello.s


彙編:.s  -> .o
gcc -c hello.s -o hello.o


鏈接:.o  -> 可執行程序app
gcc hello.o -o app


gedit hello.c


小端存儲法——高地址存高字節,低地址存低字節(高存高,低存低)
(intel/ARM)
0x表示十六進制


數值:0x12 34 56 78在小端存儲器裏如何存儲


0x8003 0x12
0x8002 0x34
0x8001 0x56
0x8000  0x78
          
1 BYTE = 8bit


大端存儲法——高地址存低字節,低地址存高字節(高存低,低存高)
(IBM大型機/網絡字節序)
數值:0x12 34 56 78在小端存儲器裏如何存儲


0x8003 0x78
0x8002 0x56
0x8001 0x34
0x8000  0x12


進制轉換
10進制: 0,1,2,3,4,5,6,7,8,9,10
2進制: 0,1
8進制: 0,1,2,3,4,5,6,7
16進制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F


百   十    個
1    2     3


1x10^2  +  2x10^1  + 3x10^0  


0          1           0
0x2^2  +   1x2^1   +  0x2^0  = 2


1100 1010
0+2+0+8+64+128=202


二進制:  000   001   010  011  100  101  110  111  001000
十進制:  0 1      2    3    4    5    6    7    8
八進制:  0 1      2    3    4    5    6    7    10




二進制:  0000   0001   0010  0011  0100  0101  0110  0111  1000   1001   1010   1011   1100   1101   1110  1111
十進制:  0 1      2     3     4      5     6     7     8      9      10     11     12     13     14    15
十六進制: 0   1 2     3     4      5     6     7     8      9      A      B      C       D     E     F




二進制:1010 0001 1000
十六進制:A     1    8


十六進制:3D7
二進制: 0011  1101 0111


八進制:11
二進制:001 001


37
八進制開頭:0
十六進制開頭:0x
十進制開頭:什麼都不跟




八進制:0777
十六進制:0xffff8000


5進制:23  =   3x5^0 +  2x5^1 = 13


8         4        2        1


2^3       2^2      2^1      2^0




1000     0100      0010     0001


0111


十進制:89 對應的二進制  1011001
    89  ....    1
    44  ....    0
    22  ....    0
    11  ....    1
    5   ....    1
    2   ....    0
    1   ....    1




   1011001
1+0+0+8+16+0+64 = 89


49    ...    1
24    ...    0
12    ...    0 
6     ...    0
3     ...    1
1     ...    1


0011 0001
0x31




0567
101  110  111


bit位


8bit =  1BYTE  =》每個字節擁有一個地址


0x8003
0x8002
0x8001
0x8000    




1   和  -1


原碼 反碼 補碼


1 0000 0001 0000 0001 0000 0001 正數的反碼,補碼都等於原碼
-1 1000 0001 1111 1110 1111 1111 負數的補碼等於把反碼加1


0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000


如果(0 等於  -0)
執行aaaa;
否則
執行bbbb;






97 =》  97  ... 1  => 0110 0001
48  ... 0
24  ... 0
12 .... 0
6   ... 0
3   ... 1
1   ... 1
原碼     反碼          補碼
-31 =>  => 31  =>  31 ... 1  => 0001 1111 => 1001 1111 =>  1110 0000  => 1110 0001
  15 ... 1
   7 ... 1
   3 ... 1
   1 ... 1




char  b = 1;              => (-128~127)
unsigned char a = 129;    => (0~255)
  s
  0000  0000
  1000  0001
  1111  1111
int          
unsigned int  ->  (0~2^32-1)




char b = 'x';
int c = 10;
 
'x' => 120  => 0111 1000
 10 => 1010
.
.
.
0x8003
0x8002
0x8001
&b  => 0x8000   1BYTE   0111 1000  
.
.
.
0x7003 0000 0000 => 0x00
0x7002 0000 0000 => 0x00
0x7001 0000 0000 => 0x00
&c => 0x7000   0000 1010 => 0x0A
printf("&c = %p\tc = %d", &c, c);


'x' => 120
'\a'
'"'
345


"hello"   =>  'h' 'e' 'l' 'l' 'o' '\0'




'a'   ==  "a"
"a" = "c";


"123"   =>  123


'1'  '2'  '3' '\0'


'1' - '0' = 1
1*10 + '2'-'0' = 12
12*10 + '3'-'0' = 123




int a = 5;
a % 3 => 2
a / 2 => 2


float a = 5.0
a % 3 => ???報錯
a / 2 => 2.5


1.打印基本數據類型sizeof大小
2.利用vs2013學會查看內存, 查看變量地址和地址裏的數值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章