程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言學習筆記(一)

C語言學習筆記(一)

編輯:關於C語言

1.原碼和補碼

  例子

     '6':原碼:0110;   補碼:0110

     '-6':原碼:1110;  反碼:1001;補碼:1010 = 1001 + 1

  (-6) + 6 = 0110 + 1010 = (1)0000 = 0;

   當對補碼取補時,得到的是他的原碼;

2.編譯過程:

  預編譯——>編譯(匯編語言)——>匯編(機器語言)——>鏈接

3.'chmod -R': 針對目錄,將目錄下的子目錄及文件的權限全部修改。

4. snprintf()和sprintf()的比較:snprintf()要求其第二個參數指定目標緩沖區的大小,可確保緩沖區不溢出。

5.32位UNIX系統的一般編程模型稱為ILP32模型,表示整數(I),長整數(L),和指針(P)都占用32位

  數據類型            ILP32模型           LP64模型

    char                8                8

    short              16                16

     int                 32                32

     long               32                64

     pointer               32                64

6.對整型常數進行類型轉換的後綴有:u或U(unsigned)、l或L(long)、u/U與l/L的組合(如:ul、lu、     Lu等)。例:100u; -123u; 0x123l。

 通過後綴L或l將整數強行存儲在long類型中。

 所有的實數都是以double存儲。

7.常量在內存中的存儲方式:

  1(0x0001): 在內存中以unsigned short(兩字節)存儲;

  '1'(0x31):   一個字節;

  "1":      字符串常量必須以'\0'來結束,占兩個字節。

8.scanf()輸入結束的條件:

  a.遇空格,TAB,或回車

  b.

  c.遇非法字符

  scanf()有返回值,成功返回"1",不成功"0"。

9.

  a: for(i = 0; i < n; i++)

        a[i] = 4;

  b: for(p = a; p < a + n; p++)

       *p = 4;

  (a)以a為首地址,向前移動i個元素,每次賦值都要這樣做,"[]"是個運算符。

  (b)每次都向後移一個單位就行了,(b)的效率明顯要高。

10.%f和%lf

  

(a):

<stdio.h>

int main()

{        

  int a, b, c;        

  double y;        

  a = scanf("%lf",&y);        

   printf("%d,%f,%lf\n",a,y,y); }

輸入1234567891234567890

輸出1,1234567891234567936.000000,1234567891234567936.000000

gdb:

Breakpoint 1, main () at 12_11_4.c:7
7               a = scanf("%lf",&y);
(gdb) s
12345678912345678912
8               printf("%d,%f,%lf\n",a,y,y);
(gdb) p y
$2 = 1.234567891234568e+19

(b):

#include <stdio.h>

int main()

{        

  int a, b, c;        

  double y;        

  a = scanf("%f",&y);        

  printf("%d,%f,%lf\n",a,y,y);

}

輸入123.11

輸出1,0.000000,0.000000

第二次輸出為什麼都是零呢?

看gdb調試:

Breakpoint 1, main () at 12_11_4.c:7
7               a = scanf("%f",&y);
(gdb) s
1234.123
8               printf("%d,%f,%lf\n",a,y,y);
(gdb) p y
$1 = 4.8545332934724682e-270

1234.123是被讀入成功的,但是存放格式是float。

  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved