再問關於C的很簡單的問題,再問乙個關於C的很簡單的問題

2022-02-28 13:05:10 字數 5532 閱讀 5932

1樓:聲琨

n3=((c1==n)||(c1!=n1))

!=是乙個整體,不等號

2樓:駕我

!= 有些語言裡表示不等於

3樓:俏妞妞時尚街

!=是不等於啊

另一、賦值運算子

賦值語句的作用是把某個常量或變數或表示式的值賦值給另乙個變數。符號為『=』。這裡並不是等於的意思,只是賦值,等於用『==』表示。

注意:賦值語句左邊的變數在程式的其他地方必須要宣告。

得已賦值的變數我們稱為左值,因為它們出現在賦值語句的左邊;產生值的表示式我們稱為右值,因為她它們出現在賦值語句的右邊。常數只能作為右值。

例如:count=5;

total1=total2=0;

第乙個賦值語句大家都能理解。

第二個賦值語句的意思是把0同時賦值給兩個變數。這是因為賦值語句是從右向左運算的,也就是說從右端開始計算。這樣它先total2=0;然後total1=total2;那麼我們這樣行不行呢?

(total1=total2)=0;

這樣是不可以的,因為先要算括號裡面的,這時total1=total2是乙個表示式,而賦值語句的左邊是不允許表示式存在的。

二、算術運算子

在c語言中有兩個單目和五個雙目運算子。

符號 功能

+ 單目正

- 單目負

* 乘法

/ 除法

% 取模

+ 加法

- 減法

下面是一些賦值語句的例子, 在賦值運算子右側的表示式中就使用了上面的算術運算子:

area=height*width;

num=num1+num2/num3-num4;

運算子也有個運算順序問題,先算乘除再算加減。單目正和單目負最先運算。

取模運算子(%)用於計算兩個整數相除所得的餘數。例如:

a=7%4;

最終a的結果是3,因為7%4的餘數是3。

那麼有人要問了,我要想求它們的商怎麼辦呢?

b=7/4;

這樣b就是它們的商了,應該是1。

也許有人就不明白了,7/4應該是1.75,怎麼會是1呢?這裡需要說明的是,當兩個整數相除時,所得到的結果仍然是整數,沒有小數部分。

要想也得到小數部分,可以這樣寫7.0/4或者7/4.0,也即把其中乙個數變為非整數。

那麼怎樣由乙個實數得到它的整數部分呢?這就需要用強制型別轉換了。例如:

a=(int) (7.0/4);

因為7.0/4的值為1.75,如果在前面加上(int)就表示把結果強制轉換成整型,這就得到了1。那麼思考一下a=(float) (7/4);最終a的結果是多少?

單目減運算子相當於取相反值,若是正值就變為負值,若是負數就變為正值。

單目加運算子沒有意義,純粹是和單目減構成一對用的。

三、邏輯運算子

邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。

符號 功能

&& 邏輯與

|| 邏輯或

! 邏輯非

例如:5!3;

0||-2&&5;

!4;當表示式進行&&運算時,只要有乙個為假,總的表示式就為假,只有當所有都為真時,總的式子才為真。當表示式進行||運算時,只要有乙個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!

)運算是把相應的變數資料轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。

還有一點很重要,當乙個邏輯表示式的後一部分的取值不會影響整個表示式的值時,後一部分就不會進行運算了。例如:

a=2,b=1;

a||b-1;

因為a=2,為真值,所以不管b-1是不是真值,總的表示式一定為真值,這時後面的表示式就不會再計算了。

四、關係運算子

關係運算子是對兩個表示式進行比較,返回乙個真/假值。

符號 功能

> 大於

< 小於

>= 大於等於

<= 小於等於

== 等於

!= 不等於

這些運算子大家都能明白,主要問題就是等於==和賦值=的區別了。

一些剛開始學習c語言的人總是對這兩個運算子弄不明白,經常在一些簡單問題上出錯,自己檢查時還找不出來。看下面的**:

if(amount=123) ……

很多新人都理解為如果amount等於123,就怎麼樣。其實這行**的意思是先賦值amount=123,然後判斷這個表示式是不是真值,因為結果為 123,是真值,那麼就做後面的。如果想讓當amount等於123才執行時,應該if(amount==123) ……

五、自增自減運算子

這是一類特殊的運算子,自增運算子++和自減運算子--對變數的操作結果是增加1和減少1。例如:

--couter;

couter--;

++amount;

amount++;

看這些例子裡,運算子在前面還是在後面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表示式的一部分,兩者就有區別了。運算子放在變數前面,那麼在運算之前,變數先完成自增或自減運算;如果運算子放在後面,那麼自增自減運算是在變數參加表示式的運算後再運算。這樣講可能不太清楚,看下面的例子:

num1=4;

num2=8;

a=++num1;

b=num2++;

a =++num1;這總的來看是乙個賦值,把++num1的值賦給a,因為自增運算子在變數的前面,所以num1先自增加1變為5,然後賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因為自增運算子在變數的後面,所以先把num2賦值給b,b應該為8,然後num2自增加1變為 9。

那麼如果出現這樣的情況我們怎麼處理呢?

c=num1+++num2;

到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的程式設計當中,應該盡量避免出現上面複雜的情況。

六、復合賦值運算子

在賦值運算子當中,還有一類c/c++獨有的復合賦值運算子。它們實際上是一種縮寫形式,使得對變數的改變更為簡潔。

total=total+3;

乍一看這行**,似乎有問題,這是不可能成立的。其實還是老樣子,'='是賦值不是等於。它的意思是本身的值加3,然後在賦值給本身。為了簡化,上面的**也可以寫成:

total+=3;

復合賦值運算子有下列這些:

符號 功能

+= 加法賦值

-= 減法賦值

*= 乘法賦值

/= 除法賦值

%= 模運算賦值

<<= 左移賦值

>>= 右移賦值

&= 位邏輯與賦值

|= 位邏輯或賦值

^= 位邏輯異或賦值

上面的十個復合賦值運算子中,後面五個我們到以後位運算時再說明。

那麼看了上面的復合賦值運算子,有人就會問,到底total=total+3;與total+=3;有沒有區別?答案是有的,對於a=a+1,表示式a被計算了兩次,對於復合運算子a+=1,表示式a僅計算了一次。一般的來說,這種區別對於程式的執行沒有多大影響,但是當表示式作為函式的返回值時,函式就被呼叫了兩次(以後再說明),而且如果使用普通的賦值運算子,也會加大程式的開銷,使效率降低。

七、條件運算子

條件運算子(?:)是c語言中唯一的乙個三目運算子,它是對第乙個表示式作真/假檢測,然後根據結果返回兩外兩個表示式中的乙個。

《表示式1>?《表示式2>:《表示式3>

在運算中,首先對第乙個表示式進行檢驗,如果為真,則返回表示式2的值;如果為假,則返回表示式3的值。

例如:a=(b>0)?b:-b;

當b>0時,a=b;當b不大於0時,a=-b;這就是條件表示式。其實上面的意思就是把b的絕對值賦值給a。

八、逗號運算子

在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。

假設b=2,c=7,d=5,

a1=(++b,c--,d+3);

a2=++b,c--,d+3;

對於第一行**,有三個表示式,用逗號分開,所以最終的值應該是最後乙個表示式的值,也就是d+3,為8,所以a=8。對於第二行**,那麼也是有三個表示式,這時的三個表示式為a2=++b、c--、d+3,(這是因為賦值運算子比逗號運算子優先順序高)所以最終表示式的值雖然也為8,但a2=3。

還有其他的如位邏輯運算子,位移運算子等等,我們等到講位運算時再說明。

九、優先順序和結合性

從上面的逗號運算子那個例子可以看出,這些運算子計算時都有一定的順序,就好象先要算乘除後算加減一樣。優先順序和結合性是運算子兩個重要的特性,結合性又稱為計算順序,它決定組成表示式的各個部分是否參與計算以及什麼時候計算。

下面是c語言中所使用的運算子的優先順序和結合性:

優先順序 運算子 結合性

(最高) () -> . 自左向右

! ~ ++ -- + - * & sizeof 自右向左

* / % 自左向右

+ - 自左向右

<< >> 自左向右

< <= > >= 自左向右

== != 自左向右

& 自左向右

^ 自左向右

| 自左向右

&& 自左向右

|| 自左向右

?: 自右向左

= += -= *= /= %= &= ^= |= <<= >>= 自右向左

(最低) , 自左向右

在該表中,還有一些運算子我們沒有介紹,如指標運算子、sizeof運算子、陣列運算子等等,這些在以後的學習中會陸續說明的。

乙個有關c語言很簡單的問題

4樓:匿名使用者

#include

main()}

5樓:匿名使用者

要把int a;

char b; 放在while迴圈外面

6樓:匿名使用者

scanf("%c %d", &c ,&a);這樣~

大神.求助關於乙個很簡單的程式

7樓:深圳中宇視通科技****

#include int vowel(char ch)

問乙個關於c語言的問題 很簡單 大家幫忙看看

8樓:匿名使用者

南開一百題吧 看看下邊的** 有乙個 maxline=i

9樓:匿名使用者

確實不可能,建議貼完整**

10樓:天空的期望

不可能呀

可以把程式貼出來嗎

11樓:望風舍

如果你寫成#define maxline 0,那麼maxline的值就不會變了。你那裡的maxline就是個全域性變數,當然會變化

12樓:手機使用者

浮雲啊!不應該當50用啊,而且就算是全域性變數,而你在這裡都付值0了,是按照0算了,你最好不要用重複的變數,看前面是不是有過這個變數了

再問關於脫毛的問題

我認為蜜蠟是不錯的選擇,的蜜蠟是純天然成分,不像脫毛膏那麼傷 一般保持兩周左右,而且我用了以後體毛變少了。我用的牌子是瑪貝拉,蕾沃斯也可以。蜜蠟脫毛部位不能有水,不能擦了乳液之類的潤滑劑之後脫毛,最好先用溫水洗乾淨擦乾後脫毛。蜜蠟脫毛是會有點痛的,但是也要看手法,又快又狠就對了。手法對了基本上就只是...

很簡單的C語言指標問題,乙個很簡單的C語言指標問題

我估計有可能你的問題在於 把char t定義在了for迴圈裡面,而不是開始就宣告。vc裡面,如果寫c檔案而不是cpp 函式裡面所有的變數都要在開頭宣告好。如果僅僅是定義char型,我試過了,沒問題。補充答覆 樓主 我把示例給你看 void testfun char s 只要在子函式裡,在前面宣告好就...

關於C 問題,很簡單的程式為啥總出問題

這個程式有意義嗎?沒有什麼功能啊 如果就按你這上面不改的話,就是先讓你輸入乙個字元和乙個整數,只要不是q,就繼續讓你輸入字元和整數。一旦輸入q,就跳出迴圈,並輸出最後輸入的那個數字 如果改一下你的程式,把whlie n 0 改成while n 0 的話,就是只要不輸入q,就輸出陣列times和tim...