C語言中,a 5和a a 5,有什麼區別

2022-09-22 02:06:44 字數 2673 閱讀 2478

1樓:明承業奈桐

對於常規c程式設計師,是沒差異的。

但實際上大有玄機!

如果你學過編譯原理,就應該知道「逆波蘭式**」,採用a+=5這類**實際會讓編譯器少費一箇中間變數,編譯出來的**效率更高。

簡單的說,a=b+5和a=a+5的區別能看出來麼?如果用a=a+5其實和a=b+5的處理是一樣,都花了中間變數,但是其實對於a=a+5這類只有一個變數的表示式是可以不用中間變數的,所以a+=5是高效的。

不過現在的編譯器你都不用考慮兩者區別,因為編譯器的優化非常好,自動就可以識別這種差別,所以是沒區別的。但早期的c編譯器沒這種功能,所以形成了兩種語法。

不知道你能不能聽懂,如果站在彙編的高度去看c的這種差別就很簡單了,無非就是儘量讓值在暫存器中,減少一次記憶體的讀寫罷了。

2樓:葛芳洲威贊

'a'代表的是字元常量

可以單獨使用

沒有引號的時候

只是一個字元,可以用作識別符號

比如int

a;也可以和其它字元連用

如0xa

表示16進位制常量。

c語言中int *a[5]和int(*a)[5]有什麼區別嗎

3樓:飄棉絮絮

int*a[5]是指標陣列,int(*a)[5]是陣列指標,前者表示一個陣列,陣列元素都是指向int型變數的指標,後者表示一個指標,該指標指向一個int型有5個元素的陣列,希望對你有所幫助

4樓:匿名使用者

第一個a是個陣列名,裡面儲存的是int指標。

第二個a是個指標名,它指向一個包含5個資料的int陣列。

c語言中*a++和(*a)++有什麼不同?

5樓:茆德悟旻

也不算很難理解啊

說的通俗點

a++就是先把a當前的值

進行輸出或運算啥的

然後a在自增1

就是加1

++a也就先把a當前的值自增1

然後在輸出或運算啥的

好比a的值是1

b=++a

先把a當前的值1

自增1然後運算就是賦值給b

所以b=2

a=2b=a++

先把a當前的值1運算

就是賦值給b

所以b=1

然後a在自增1所以a=2

++--是1元運算副

具有右綜合性

優先順序高過

邏輯算術

賦值關係等這些運算副

6樓:度浩麗局妙

1,表示式的

值不同,++a的值是原a的值加1,a++是原a值例1int

a=1,

b;b=++a;

printf("%d",b);

例2int

a=1,

b;b=a++;

printf("%d",b);

2,++a可以做左值,a++不可以

例1int

a=1,

b=5;

++a=b;

printf("%d",a);

例2int

a=1,

b=5;

a++=b;/*這裡是個編譯錯誤*/

printf("%d",a);

7樓:閩恨甲瑾

hahugo88的回答很正確,這個意義必須掌握好哦!

我就是因為這個概念模糊考試丟了10分

8樓:澤男君

作為單獨的語句,a++;與++a;並沒什麼區別

但是b = a++;和b = ++a就有區別了

a++這個式子的返

回值是a,所以b = a++相當於b = a,然後a = a+1;

++a的返回值是a+1;所以b = ++a相當於a = a+1;然後b = a;

c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

9樓:夜神月

優先順序 () > ++ > *

*a++ 先執行++ 再執行 * 即指標先移動一個位置,在對移動後指標所指位置解引用取值。

(*a)++ 先執行*a 再執行++ 即先對指標所指位置解引用取值,再對這個值自增加1.

10樓:滄海雄風

*a++ 和(*a)++

區別 一個是 指標後移 一個是指標指向的內容自加舉例int *a, b[2]=,c;

a = b;

c=*a++ 那麼 a 指向1 則c等於2c=(*a)++ 那麼 c 等於2

過程不一樣而已

舉例子 一個是別人讓你移動一格

一個是你自己移動一格

11樓:

優先順序的關係自增的級別要高

c語言a和a有什麼區別,C語言中 a 和 a 有什麼區別

1 本質區別 雙引抄號襲 裡面的是字串,而單引號裡面的代表字元。2 輸出區別 str a 輸出的就是a這個字母 str a 輸出的測試65 3 底層區別 用單引號引起的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。1 用 對包bai含的du 代表字元常量,其zhi值為...

C語言中 c和 h有什麼區別,C語言中標頭檔案中 h 和「 h」的區別?

c語言的原始檔分為兩種 1 c檔案,以c為副檔名,一般儲存具體功能的實現 2 h檔案,稱為標頭檔案,一般儲存型別的定義,函式的宣告等。通常,標頭檔案被.c檔案包含,使用 include 語句。但值得注意的是,這只是一種約定,而非強制。事實上,將宣告寫在.c檔案,比如a.c,然後 include a....

c語言中float與int用法有什麼區別

樓主問復的是用法的區別.int 是精製確的整數,因此相關的數學常識都可以在int上得到實現 float 是不精確的浮點數,因此很多要求精確的數學常識在float上不成立.舉例 假設 a b c 都是 int 那麼 a b c 和 c b a 的結果永遠是相等的 哪怕溢位了也相等 而如果 a b c ...