為什麼c語言裡的運算子計算機執行的和書上說的不一樣

時間 2022-03-31 08:05:09

1樓:好名字都被取了

15轉化為二進位制為0 1111,第一位是符號位(0表示正,1表示負)。

對15取反變成 1 0000,這是乙個負數的補碼(計算機儲存負數的補碼而不是原碼),而這個補碼要轉化為原碼才是真生的那個負數,即補碼-1取反變為 10000,這個二進位制對應16,由於符號是負,所以是-16。

建議先學學原碼、反碼和補碼的知識。

2樓:最大的寶寶

01111只有5位數,所以你說的情況是建立在5位字長的計算機的基礎上。

現在是2023年了,計算機儲存單元長度是8的倍數,於是這個數的一種可能寫法是00001111,取反求值,11110000,這是多少呢?套公式太麻煩,目測一下,11110000+00010000=0,就是說這個數加16等於0,所以這個數只能是-16。

從這個過程還可以發現,只要位長在6位以上,15的取反總是-16,用5位來算正好溢位了,所以得到乙個並不符合預期的結果

3樓:智者總要千慮

例如,+(加)、-(減)運算的優先順序相同,結合性為向右結合

這句話有錯,結合性為向左結合

向左結合的例子:++a++,為++(a++)

4樓:中兵勘察海外部

這個整數,是8位,還是16位的。

你跟蹤15這個位址的數,看二進位制,就知道了,看他是幾位的。

c語言中的運算子「=」與數學中的「=」的意義相同嗎?為什麼?

5樓:匿名使用者

不完全相同。比如數學上可以這樣寫:1+1=a,在程式上則寫成a=1+1;(意思是將1+1算術表示式的值賦值給變數a);兩者都有傳遞值的意思在裡面。

在數學中有a=b,這個意思是:a和b的值相等,但在c語言中,寫成a=b,意思是將b的值賦值傳送給a,結果仍然是a和b的值相等。但在其中隱藏著a的值發生了改變。

而在c語言中,a==b意思才是a和b的值相等。

6樓:瞬馭域

不盡相同,在賦值語句(比如int a=0;)裡面意思是將0賦值給a,意思就是使a=0,在if後面的括號裡面就要寫兩個等號,比如if(a==0),意思就是說如果a=0,則執行大括號裡面的語句,如果a不等於0,則直接跳過後面那個大括號裡面的內容,向下執行…

7樓:匿名使用者

不相同,c中「=」是賦值運算子,「==」是等於的意思,兩者有很大區別,經常混淆導致程式除錯時出錯,得多注意,而數學中乙個「=」就有兩種意思。

8樓:我是雁過留聲

不一樣,數學中用=就可以了,c++中需要==才能是等

9樓:匿名使用者

不相同,c中是把右面的值賦給左面的變數,數學是等號,判斷邏輯的

10樓:科技驅動生活

c中等於是==,c中=是賦值

11樓:冼烴秀

c中=的意思是把乙個值或常量送給乙個變數,不是等於的意思

12樓:傅玉蘭似裳

不同c裡面的「=」是賦值

及給它左邊的變數乙個常量值

比如1.23等等

比沒有數學中的等於的概念

c裡面等於要兩個=號

即「==」

13樓:良彩榮宰黛

不同,=是賦值,==是邏輯運算子,意思是等於的意思。

如a=b;就是將b的值賦值給a,

a==b是乙個判斷a,b是否相等的表示式,如果相等,表示式值為真,不相等則為假。

14樓:逮夏趙靜

不相同的

我們平時數學的都是從左往右看的

也就是1+2=

3這樣子

而c語言中的=是從右往左

比如說inta=

3;是把3賦值給a。兩者還是有區別的

c語言中的「!」

15樓:幻翼高達

c語言中的「!」是邏輯運算中的非運算。

「!」是c語言中的非運算子,在變數前面使用它,會構建非運算表示式,表示式的返回結果是個布林值(也就是只有true或false)。對變數使用時,如果變數不是布林資料型別,將會強制轉化為布林型別再使用,如整形變數123將被轉化為true,整形變數0將被轉化為false。

擴充套件資料:

c語言所有運算子列表:

1、算術運算子

用於各類數值運算,包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)共七種。

2、關係運算子

用於比較運算,包括大於(>)、小於(<)、等於(==)、 大於等於(>=)。

、小於等於(<=)和不等於(!=)六種。

3、邏輯運算子

用於邏輯運算,包括與(&&)、或(||)、非(!)三種。

4、位操作運算子

參與運算的量,按二進位制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

5、賦值運算子

用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。

16樓:熱詞課代表

最近」盤「字很流行,盤是什麼意思?為什麼能成為網路熱詞?

17樓:塗智聊璧

1.第一題是以'\0'表示結束符。並不是你輸入的0.它會轉換成ascii碼就不等於'\0'了。你鍵盤是輸入不了'\0'字元的!呵呵!

2.輸出應該是10

28第一次進入時。i

=2,進入函式

fun(),b

=a[i]+b

=3+2

=5函式結束b=

5+b=

10;第二次迴圈:i=

3,進入函式

fun():b=a[

3]+b

=4+10

=14;

出了函式

fun()就是:b=

14+b=28

18樓:厙淑蘭封嬋

這段程式應該是尋找乙個字串的子串,如果找到則返回1,否則返回0

程式中這行**中for(i

=0;str[i];i++)

str[i]的意思是:判斷字串str的第i個字元是否為'\0'即空字元

如果為空則代表已到達字串尾部則退出迴圈,否則繼續執行迴圈

其實這行**for(i

=0;str[i];i++)

與for(i

=0;str[i]!='\0';i++)等價,c語言規定字元'\0'即0,也就是為假

str[i]!='\0'即str[i]不為假,也就是說str[i]為真

substr[k]==str[j]

這句的意思是判斷字串substr的第k個字元是否與str的第i個字元相等,如果相等則繼續迴圈,否則退出迴圈

如果還不清楚可以聯絡我^_^

19樓:酈萱仰黛

外層迴圈中第二個引數str[i]代表什麼

為什麼這麼寫

什麼意思啊?

:str[i]的意思是為真就執行,否則不執行。光個str[i]怎麼知道為不為真?

答:在c語言在以0為假,非0為真。你輸的是字元,所以對應的ascii碼是多少。

所以每段字元以'\0'自動加在字串後,'\0['的ascii=0所以字串都執行完到''\0'後退出迴圈。

內層迴圈substr[k]==str[j]什麼意思?

與上面一樣意思。

for迴圈

括號中不應該是條件嗎

是條件如

if(1)

printf("ok")

else

printf("on")

執行這句一定是

輸出ok

(為非0)

if(0)

printf("0")

else

printf("1")

一定是輸出1

(第乙個為0,非0才為真)

懂了麼?

20樓:忻丹彤雀恬

i%2就是除2取餘數。

inti,sum=1;

for(i=0;i<=40;i+3)

sum=sum*2;

i控制月份數

sum為兔子數

用for迴圈控制對數

每3個月翻一倍

請採納。

21樓:guxuecan劍

「->」是乙個整體,它是用於指向結構體子資料的指標,用來取子資料。

換種說法,如果我們在c語言中定義了乙個結構體,然後申明乙個指標指向這個結構體,那麼我們要用指標取出結構體中的資料,就要用到「->」。

問題中的p=p->next ,意思是將p指向的乙個結構體例項中的自資料next賦值給p。

22樓:雲南新華電腦學校

! 邏輯非運算子,例如:if(!(x<=0))printf("x是正數");

if(x)printf("x不等於0");

if(!x)printf("x等於0");

!= 不等,例如:if(x!=0)y=1.0/x;

23樓:雲南新華電腦學校

!」是c語言中的非運算子,

在變數前面使用它,會構建非運算表示式,表示式的返回結果是個布林值(也就是只有true或false)。對變數使用時,如果變數不是布林資料型別,將會強制轉化為布林型別再使用,如整形變數123將被轉化為true,整型變數0將被轉化為false。

24樓:刁翱釗俐

c語言是一種計算機程式語言,屬於高階語言,伴隨著偉大的unix系統誕生,也因此流傳至今。c語言寫出來的程式執行比其他高階語言的執行更快。

同眾多程式語言一樣,c語言中有著自己的變數定義方式和各種語言普遍具有的順序、條件、迴圈三種結構。指標是c語言的乙個特色,它使得c語言很強大,也增加了危險性。

初學者用得最多的c語言開發工具是vc++6.0(請比爾蓋茨給我廣告費!),雖然是15年前的老東西,但功能十分強大。

學好c語言需要的不止是努力讀書,更重要的是**積累。只有寫過千百行**,才可能談得上入門。另外就是面對無窮無盡的bug所需的那種迎難而上的心態。

任何人,不管他的水平有多高,他寫程式用時最多的部分都會是debug。

祝你學習順利!!

25樓:自我程式設計

'!'表示邏輯非, 在邏輯表示式中使用,取邏輯表示式值的反值。

比如:邏輯表示式 2==2,該表示式肯定成立,其值就是真(1),那麼!(2==2),值就是假(0);

另外c中,數值0可以表示假,非0數值可以表示真。所以!9的值就是0(假)。

26樓:獨日律勇

auto自動。變數預設是自動型別的

char

字元型別

const

常變數enum

列舉sizof

可以獲得變數占用空間大小(位元組)

union

共用體這些識別符號有些是乙個單詞,有些是單詞的一部分,你最好自己系統的去學習一下c語言

27樓:鹹玉花翠午

可能是乙個工作環境還沒有關掉你又建立了另乙個導致宕機了,記得以後每完成乙個程式,要關閉時,一定要把工作環境「workspace」也關掉,即點選「close

workspace」再開啟另乙個

28樓:叢青芬荀女

str[i]表示字串沒有結束的條件,

substr[k]==str[j]表示這兩個字元相等的條件

29樓:滄海雄風

int a =0;

a=fun();

if (!a) 這裡意思就是如果a 等於0 ! 非的意思if(a) 就是a不等於0

if (a!=1) 就是a不等於1

30樓:匿名使用者

!加上條件,取條件反值;!=,不等於

31樓:阮彥尚昊天

k=j;

是賦值。注意staic的用法

32樓:匿名使用者

!= 相當於不等於

c語言中的&運算子和j**a中&運算子規則難道不一樣? 10

c語言中的運算子"="與數學中的"="的意義相同嗎?為什麼? 30

33樓:匿名使用者

意義不同!

在《c primer plus》中的第5.2.1節中是這樣介紹的:

在c中,符號「=」不表示「相等」,而是乙個賦值運算子。賦值運算子的動作時從右到左的。

例如: i=i+1;

在數學上,該語句沒有任何意義,如果您給乙個有限的數加1,結果不會「等於」開始的那個數,但是作為計算機賦值語句它很合理。它意味著「找到名字為i的變數的值,對那個值加1,然後將這個新賦值給名字為i的變數」。

再如:2012=bmw;

在c中是沒有意義的(確切的說是無效的),原因是2012只是乙個常量,不能將乙個值賦給乙個常量;那個常量本身就是它的值了。

下面還有一大堆~~總的來說在c中賦值運算子(也就是「=」)的形式為:

可以修改的左值=運算元

C語言符合賦值運算子,C語言賦值運算子的結合方向是自右向左嗎?

gta小雞 c a b c 2是錯誤的表示式,賦值運算子的左值必須是可解析的變數表示式,而c a不是乙個合法的左值。c語言賦值運算子的結合方向是自右向左嗎? 賦值運算bai符是自右向左結合的。du以如下 為例zhi int a 1,b 2,c 3 a b c printf d,d,d n a,b,c...

C語言運算,C語言 運算子 是怎麼運算的

詳細的給你解釋一下,手打的哦 運算子的大概的優先順序 由高到低排列,分號隔開 非 算數運算子 關係運算子 與 或 賦值運算子 這些事大概常用的,當處在同乙個運算級別的時候,就從左到右計算,當然所有的運算子中,級別的最高的就是括號,有括號就要先計算括號。下面 我們來看這道題 a 前減量操作 a減1之後...

C語言中三目運算子是什麼,C語言 三目運算子

墨汁諾 選擇運算,就是a b?c那個。三目運算子為a?b c即有三個參與運算的量。由條件運算子組成條件表示式的一般形式為 其求值規則為 如果表示式1的值為真,則以表示式2的值作為條件表示式的值,否則以表示式2的值作為整個條件表示式的值。條件表示式通常用於賦值語句之中。 尋涵衍歷氣 就是 和 這2個符...