1. 程式人生 > >C語言階段——需要注意的小細節

C語言階段——需要注意的小細節

持續更新。。。。。。。

1.       int  a;

      定義全域性變數                 如果不給初值    系統自動給a賦0

   但定義區域性變數時             如果不給初值    就是一個隨機值

2.scanf()函式 裡  別放多餘的東西   就放一個標準輸入格式符就好

                    試一試:
                                scanf("%f\n", &temp1);
                                scanf("%lf\n", &temp2);
     
                     就知道了

3.逗號表示式作為一個整體,從左到右逐個計算;它的值為最後一個表示式的值

    逗號表示式的優先順序在所有運算子中最低

4.賦值表示式  =    *=    -=    /=      運算順序是從右往左運算

                    例如  int temp = 2;  if( x= 2 * temp = 3 ) ……   首先算2 * temp 得常數 4,   4 = 3  語法錯誤  x仍然沒有賦值

優先順序:!    算術符     關係符         &&        ||          賦值             逗號   

5.    假設a 的初值為2   運算完  a 的值為多少?     a 為 2 原因: 第一個if   沒有加 {}   沒有標明作用域

6.   Ubuntu啟動出錯  啟動不了  可以試一下 刪除下面兩個資料夾

  

     至於為什麼  我不知道。。   大家也可以評論告訴我。。。

7.  C語言中         0 == '\0' == NULL       !=          '0' == 48

8.   '\n' sizeof('\n') 的結果為4  ==> 為什麼?    '\n'  字元型佔用一個位元組沒錯   

      但是'\n'的值是整型的ASCAII值 10  所以  sizeof(10)  結果為 4

      sizeof()           雖然長得像函式     但其實            是運算子

      typeof( '1' )    同理  他代表的型別並不是char     而是 int  原因就是函式

      處理的時候把    '1'  轉換成整型數字 49  處理了

9.前置++      後置++

10.等價的表示式

11.資料在記憶體中的儲存形式    整型 :   資料的補碼儲存            浮點型:    資料的補碼儲存

                                              字元型:  按字元的ASCII碼儲存      有疑問看第8點

                                              有符號:按資料的補碼儲存

                                              無符號型:按資料的原始碼儲存

    有符號資料的表示                最小值在記憶體中的儲存 符號位為 1 其他位為0
                                               最大值在記憶體中的儲存 符號位為 0 其他位為1

12.      "\\\065a,\n"

          字串長度為?       5

分析下:"\\\065a,\n"第一個字元\\,第一個\表示轉義,
第二個\代表該字元第二個字元\065,八進位制表達(有點湊巧啊)
第三個字元a
第四個字元,
第五個字元\n
所以答案是5

13.
%s列印字串  後接地址     %c列印字元  接值         

            char ch[] = "123456";   //系統給常量ch指向的變數陣列  分配記憶體空間存 字串"123456" 
            char *str = "abcdef";    //系統給變數str 分配記憶體空間存 常量字串"123456"的地址

            注意:變數的值可以變   但是常量的值不可改變
                  也就是說 變數陣列 的值"123456"可以變                      

                           變數str的值(存放的地址)可以變成另外的地址

                  但是常量指標ch的指向不可更改    常量字串"abcdef"不可更改

14.

15.

16.

17.

18.

19.

20.