c語言ba和ba的區別,C語言中bb,和b語句有什麼區別。

2021-03-04 06:45:28 字數 6306 閱讀 5178

1樓:匿名使用者

這個和()沒什麼關係,我詳細的講一下,你一定要看完啊:)注意理解a++和++a的區別:

a++: 先將a的值代入表示式,在表示式運算完畢後,再將a進行++處理

++a: 先將a進行++處理,再將a的值代入表示式注意對於a++這裡有乙個「在表示式運算完畢後,再將a進行++處理」,b=(a++); 這是乙個賦值表示式,

所以先將a的值代入表示式,必須等到賦值表示式運算完畢後,再將a進行++處理,

也就是說必須等到給b賦值完畢後,才將a進行++處理所以b=3,a=4

2樓:gta小雞

++優先順序高於=,所以沒有區別。

c語言中語句a+=b++是什麼意思

3樓:匿名使用者

先解釋一下 += 和 ++ 是

什麼意思+= 的意思是 左值和右值相加結果賦值給左值如 a=1;b=2;a+=b;後,a=3;b=2。++ 的意思是變數自加1,如a=1;a++;a的值是2,在c中,++有前置和後置如 ++a;a++;,單獨使用的時候是沒有區別的,都是自加1,在有運算時就有區別了,前置的++是自加後才參與運算,後置的++是參與運算後在自加1。如題的畫,假定a=1,b=2,a+=b++的意思就是b=2先參與a+=b運算a=3,然後b自加1,b=3;如果b++換成前置++b,a+=++b就是b先自加1,b=4,然後參與a+=b運算,a=4。

4樓:白蘿蔔

a+=b++要先進行a+=b的運算,然後再進行b的自運算舉例a=1,b=2,則a+=b++,有a=a+b=1+2=3,b=b+1=3.

5樓:匿名使用者

a+=b++的意思是a=a+b,然後b=b+1,就是這樣,你應該是初學c吧!!

6樓:匿名使用者

a+=b++等價於a=a+(b++) 運算時,先計算括號裡面的b++即可。 有疑問提出。 望採納

7樓:哀韶蕭貝晨

要說在c語言中這充其量只能算作是「偽**」。

在vb、pascal等程式語言中,<>是「不等於」的意思。

在c中,「不等於」的關係應表示為「!=」

if(a

!=b+c)

printf("a不等於b+c\n");

else

printf("a等於b+c\n");

c語言中b=b++,和b++語句有什麼區別。

8樓:

是b=b+3 b=b-5的簡略語句

9樓:

b=2;

a=b--;

printf("%d %d\n",a,b);

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

10樓:茆德悟旻

也不算很難理解啊

說的通俗點

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元運算副

具有右綜合性

優先順序高過

邏輯算術

賦值關係等這些運算副

11樓:度浩麗局妙

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);

12樓:閩恨甲瑾

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

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

13樓:匿名使用者

*** = *a++等價於 *** =*a;a++;指標移了一位*** = (*a)++等價於*** =*a;(*a)= (*a)+1;指標沒有移位,內容加1了。

14樓:澤男君

作為單獨的語句,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語言最初的標準。

15樓:夜神月

優先順序 () > ++ > *

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

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

16樓:滄海雄風

*a++ 和(*a)++

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

a = b;

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

過程不一樣而已

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

乙個是你自己移動一格

17樓:

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

c語言中(a>b)?a:b和(a

18樓:學雅思

一、表達意思不同

1、(a>b)?a:b:如果a大於b,則取a,否則取b。

2、(a

二、邏輯順序不同

1、(a>b)?a:b:記憶體邏輯中先執行大於的判斷,之後執行下一步。

三、執行順序不同

1、(a>b)?a:b:在a跟b中取最大值。

19樓:幻翼高達

c語言中,「(a>b)?a:b」和「(a」的區別是當a與b相等時,前者的值是b,後者的值的是a。

條件運算子的表示式為「表示式1?表示式2:表示式3」,先求解表示式1,若其值為真(非0)則將表示式2的值作為整個表示式的取值,否則(表示式1的值為0)將表示式3的值作為整個表示式的取值。

例如:1、max=(a>b)?a:b

就是將a和b二者中較大的乙個賦給max。

2、min=(a就是將a和b二者中較小的乙個賦給min。

20樓:魚與鹹魚

1、本質區別

雙引號裡面的是字串, 而單引號裡面的代表字元。

2、輸出區別

str = 「a」輸出的就是a這個字母;

str = 『a』輸出的測試65

3、底層區別

用單引號引起的乙個字元實際上代表乙個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。

21樓:go學龍

第乙個若a>b為真即執行a,為假及執行b

第二個若a

22樓:匿名使用者

這個和()沒什麼關係,我詳細的講一下,你一定要看完啊:)注意理解a++和++a的區別:

a++: 先將a的值代入表示式,在表示式運算完畢後,再將a進行++處理

++a: 先將a進行++處理,再將a的值代入表示式注意對於a++這裡有乙個「在表示式運算完畢後,再將a進行++處理」,b=(a++); 這是乙個賦值表示式,

所以先將a的值代入表示式,必須等到賦值表示式運算完畢後,再將a進行++處理,

也就是說必須等到給b賦值完畢後,才將a進行++處理所以b=3,a=4

23樓:匿名使用者

1.a=b>c相當於a=(b>c)是乙個賦值表示式,把(b>c)的值賦給a,

(1)如果b>c為真,則把1賦值給a,

(2)如果b>c為假,則把0賦值給a。

(3)執行完該表示式,僅a的值改變,b、c的值不變。

2.a==b>c也相當於a==(b>c)是乙個符合表示式,先判斷(b>c)的真假,

(1)若為真,a為1則該表示式為真,即該符合表示式的值為1。

(2)若為真,a不為1則該表示式為假,即該符合表示式的值為0。

(3)若為假,a為0則該表示式為真,即該符合表示式的值為1。

(4)若為假,a不為0則該表示式為假,即該符合表示式的值為0。

(5)執行完該表示式,a、b、c的值都不發生改變。

24樓:周肆爻

定界符不同,字元常量用的是單直撇,字串常量則用雙引號長度也不同,字元常量只能有乙個字元,也就是說字元常量長度為一,而字串常量可為0,也可為任意數。即使字串常量字元數量為一,長度也不是一。

例如,字串常量"h"(這手機沒雙引號)

則長度為2,字元就是h \0

25樓:新來的文盲

a比a少一維,我具體給你解釋下。

幾個元素可以組成陣列,而幾個一維陣列可以組成二維陣列,如此一直增加維數。

比如說a[0]=2,a[1]=1,a[2]=3,組成乙個一維陣列,這就是a.但是,你要注意,a不是直接把這些東西都存著的,a只存首位址。

假設定義了乙個二維陣列a[3][3].這時候a[0],a[1],a[2]就不再是元素了,而代表的是乙個有三個元素的一位陣列,而此時的a就是乙個二維陣列。如果感覺這個有點困難沒關係,等學習了指標什麼的久很好理解這個了。

再說說你給的程式,你是不是在疑問為什麼gets()直接給str1 就可以了?還有那個輸出函式,為啥只用給str1就可以?

這得給儲存方式有關,字串就是字元的二維陣列,gets()需要輸入字串的首位址,這個還算好理解,因為你應該學過了scanf()了,二者差不多,關鍵是為什麼輸出函式直接就寫了str1呢?printf()之前你學的一般都是(printf("%d",a[1]));這種型別的。這裡為啥要填乙個位址引數呢?

這是因為你前面是%s s代表字串,字串本身就是二維的,因此,你當然不能只給他乙個單獨的元素了,那麼,你給了首位址他如何知道你這個字串是啥呢?因為字串都是順序儲存的,更重要的是字串在結尾處有個標誌「/0」,因此,你只要給力他首位址,他就知道從**開始,從**結束了。

純手打,望採納。

26樓:

&a取址 *p取值這沒有什麼可說的。

int *p; int a;

a的位址1000h,即&a == 1000h. p是指標,它本身也有存放它的位址,設1200h,

即&p == 1200h(win32下,指標本身長度32位即4位元組,可通過sizeof(p)得到). 這樣就是用到兩塊記憶體了。

p = &a; 即p == 1000h. 這是乙個位址值,本質是值,即可以加減等操作的。但是加減後的p, *p可能就無法訪問了,因為它已經不指向a了,比如p == 1004h了,如果這是在某一函式裡操作的,而1004h位址並不本程式的位址空間裡,取*p時那就非法訪問,要崩潰的;但如果1004h位址正好是這函式裡另外乙個int b;變數的位址,那*p的值就是b了。

*p表示取p指向位址的值,也就是1000h上的值; a = 1; 說明1000h上的值為1,所以*p == 1;a, 它本身只是乙個符號而已,這個符號代表了位址1000h起的int型長(4位元組)的乙個記憶體塊, a=1,就是記憶體塊放乙個值1, 如果有彙編的思想,能更形象點:[1000h] = 1,根本不需要a,b,c...之類的字元來表示,直接對記憶體位址進行訪問。

c語言中與的區別,C語言中 與 的區別

區別如復下表 擴充套件資料具體區別制的例子 bai1 c 語言輸入輸出du printf a d,b d zhi,a,b scanf d d d a,b,c 2 vb 語言的輸入輸出 inputbox x 輸入 x 的值dao print x x 而且,這兩種運算子,還分為字首運算和字尾運算 如 i...

c語言中堆和棧的區別?詳細解答,淺析C語言中堆和棧的區別

棧是先入後出 後入先出的儲存區域,對作業系統來說管理比較簡單,只需要記版錄棧底和當前棧 權頂的位置即可,一般用於保護現場。比如呼叫函式時,呼叫點pc位址被壓入堆疊 函式引數被壓入棧,在函式呼叫結束時會被彈出堆疊指令丟棄或被返回語句利用。堆是提供給當前程式執行時刻開設緩衝區 如使用malloc函式 n...

在c語言中pd和x的區別,在c語言中p,d和x的區別是什麼?

x不要前導0,也就說前面的0會被自動去掉也可以用 08x列印出來跟 p一樣的 實際上是一樣的,不過 p是專用來處理指標的吧,而 x對列印的資料都可以,感覺差不多,就是用 p的時候列印出來都是8個資料的 計算機儲存的都是2進製,當然也可以用 d列印位址,列印指標,指標就是用來存放位址的 位址需要符號麼...