c語言中(a,b)的作用,C語言中(a,b)的作用

2021-03-20 02:44:11 字數 5643 閱讀 5460

1樓:匿名使用者

給你舉個例子

#include

void main()

/*輸出結果是

2,4,7,7

press any key to continue*/ (a++,b=b+a,c=c+b)括號裡面的叫逗號表示式。你可以去仔細看看你的教材。

在(a++,b=b+a,c=c+b)中,

先計算a++;既a=a+1;a變成了2;

再計算b=b+a,b變成了4

再計算c=c+b,c變成了7.。

最後講括號裡面的最後乙個值返回給d;

既d=c=7;

這個函式的作用差不多,是有返回值的。。

其實c=(a,b);也就是b作為最後計算的結果返回給c。

2樓:愛夏的你呀

a是乙個合法符號,a-不是

,所以第1個符號是a。其次,-是乙個合法符號,--也是乙個合法符號,但---不是,所以第2個符號是--。-是乙個合法符號,-b不是乙個合法符號,所以第2個符號是-

剩下乙個字元b,它是乙個合法的符號。所以,a---b,依據貪心法則,得出的結果是:a -- - b ,也就是 (a--) - b。

合法的符號,如變數名,只能有大小寫字母、數字和_下劃線組成,並且不能是數字開頭這裡的a和b都是變數名。

編譯器將源**,從左到右,乙個字元乙個字元地讀入,如果加入下乙個字元依舊可以構成乙個合法符號,則包含該字元,直到不可以為止。

擴充套件資料

#includeint main()

c語言中 \ 的作用

3樓:

在寫**的時候遇到**超長的情況下為了**的美觀及方便測試,故需要涉及到**的換行問題,以下討論了幾種的情況:

1、#define的巨集

巨集定義是以「\」換行,如:

#define max(a,b) \

((a) <(b) ? (b) : (a))2、關鍵字的換行

關鍵字換行支援:(+ - * / % = , | & ^ ~ || && == !=)以及括號等,均能作為換行符號。

3、字串的換行

換行的字串最後,新增雙引號,下一行開頭也加上雙引號就可以。

如:char buf[128];

strcpy(buf, "1234567890ab "

"cdefg ");

上述示例等同於:

char buf[128];

strcpy(buf, "1234567890abcdefg ");

4樓:匿名使用者

變數a的位址是8fa43, 變數的值是25 (存放在記憶體8fa43這個位址中)

定義了變數a, 那麼變數a就和記憶體位址8fa43這個位址掛鉤了, 位址好比你家的門牌號, a的值(25)好比你家裡裝的東西

直接用a, 表示取變數a中的值

5樓:匿名使用者

你貼出來的這段裡,\ 是表示雖然為了顯示方便換行了,但下一行和這一行還是連續一行裡的內容。編譯器處理的時候會視為同一行內容來處理。

6樓:匿名使用者

c語言中&的作用有兩個:

1、作為按位與運算子,是個雙目運算子,比如:5&7=5

2、作為取位址運算子,格式:&指標(或位址) 比如:scanf("%d",&x); 此處就是取x的位址。

7樓:匿名使用者

這是巨集定義中連線上下行的連線符,表示這個巨集定義還沒有結束。

8樓:圍城

這是位運算子,是對乙個數的二進

制進行移位後得到乙個新的數。

例如執行以下語句

int a;

a=3;

a=(a<<2);//a的二進位制是 0000 0011,這是它向左移兩位,a變成了0000 1100,後面補零

現在a就是12了

9樓:匿名使用者

按我的理解,c語言中單獨的[ ]什麼也不是。不是中括號,也不是其他的。。。組合使用時可以定義陣列,如int a[10];表示定義乙個10個元素的陣列,a[3]=5;表示第三個陣列元素的值是5,int a[2][2];表示定義乙個二維陣列。

c語言中,無論是小括號、中括號、大括號,都用()的層數來表示。如(((2+3)*2+5)*3),從裡到外依次為小括號到大括號。。。如果還有更多層數,再加括號就行了。

10樓:唔現場

例如int a[10]=;

int *p;

p=a;//是把陣列中的第乙個元素的位址賦給指標pp=&a[4];//是把陣列中的第五個元素的位址賦給指標p,運算子的作用是在陣列首位址的基礎之上偏移4個位址長度,得到第五個位址,然後賦給p

11樓:匿名使用者

乘,指標 表示乙個字串,這個字串有兩個字元,乙個有效字元 '*' "*"在c語言中代表指向的內容,它與所指內容合在一起構成指標

12樓:白讀

就我理解,\是用來轉義字元用的,就好像\n,\?等等,你在\後面跟回車就是轉義回車符的。這裡並沒有什麼特別的用法,你完全可以寫在一行上,只是寫不下,但是又不能直接回車,所以需要轉義一下

13樓:匿名使用者

轉義字元,告訴編譯器後面的字元需要轉義

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

14樓:學雅思

一、表達意思不同

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

2、(a

二、邏輯順序不同

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

三、執行順序不同

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

15樓:幻翼高達

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。

16樓:魚與鹹魚

1、本質區別

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

2、輸出區別

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

str = 『a』輸出的測試65

3、底層區別

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

17樓:go學龍

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

第二個若a

18樓:匿名使用者

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

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

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

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

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

19樓:匿名使用者

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的值都不發生改變。

20樓:周肆爻

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

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

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

21樓:新來的文盲

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」,因此,你只要給力他首位址,他就知道從**開始,從**結束了。

純手打,望採納。

22樓:

&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語言中ab是什麼意思,c語言中ab和ab分別是啥意思啊

a 異或 bai b 按位異或du 比如zhi a 為 5 0101b 為 7 0111 0010 物件位相dao同回為0,答 不同為1 按位異或運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。c語言中a b和a b分別是啥意思啊 a b是位運算中...

c語言中ab是什麼意思,C語言中ab是什麼意思?

a b 就是 a a b 這是c語言裡面的賦值表示式,a a b 就是 a a a b a b就是 a a b 只是把符號變了位置,前面的東西加減乘除後面的所有。a b 等價於a a b 希望我的回答對你有所幫助哈 a 異或 b 按位異或 比如 a 為 5 0101 b 為 7 0111 0010 ...

c語言裡a b是什麼意思,C語言中語句a b 是什麼意思

首先你要明白什麼是表示式,還有變數。a是乙個變數。a a都是a加了1.比如a原來是1,執行了a 或 a後,a變數的值就是2了 至於a 和 a的區別主要是在表示式上的區別。a是先執行了a加1後,參與表示式的計算。a 是a先參與表示式的計算,後執行自加1.比如 int a,b a 1 如果你想把a的值1...