C語言中,為什麼表示式12的值為0,52的值為

2021-03-04 01:01:31 字數 4742 閱讀 6906

1樓:冉涵陽翁雋

c語言中,整數相除,結果還是整數,取整,不進行四捨五入,直接丟掉小數部分

數學中1/2=0.5,c語言取整為0,同理:

數學中5/2=2.5,c語言取整為2

2樓:仰以彤浦婉

整數除法,0.5捨棄小數,就是0了,如果想得到0.5,那麼在c語言中可以這樣寫1.0/2

這樣就是浮點數除法了

在c語言中,表示式5>3&&2||8<4-!0的值為多少?

3樓:帝鎍

正常思路:由於邏輯運算子優先順序別低於

比較運算子同時這兩種都低於算術運算子,因此先考慮後半部分,4-!0真值為1,而8<1的真值為0.再考慮或左邊的表示式,5>3&&2顯然真值為1最終結果為1||0當然結果為12)有||將表示式分成兩部分左邊的是5>3&&2顯然其真值為1因此1||任意真值都為1不用算後面的了。

真值為1

4樓:奧宇斯汀

你這個看運算子的優先順序以及短路運算。結果是 1

> 的優先順序 高於 && , &&高於 ||

優先順序 運算子 名稱或含義 使用形式 結合方向 說明

1 陣列下標 陣列名[常量表示式] 左到右

() 圓括號 (表示式)/函式名(形參表)

. 成員選擇(物件) 物件.成員名

-> 成員選擇(指標) 物件指標->成員名

2 - 負號運算子 -表示式 右到左 單目運算子

(型別) 強制型別轉換 (資料型別)表示式

++ 自增運算子 ++變數名/變數名++ 單目運算子

-- 自減運算子 --變數名/變數名-- 單目運算子

* 取值運算子 *指標變數 單目運算子

& 取地址運算子 &變數名 單目運算子

! 邏輯非運算子 !表示式 單目運算子

~ 按位取反運算子 ~表示式 單目運算子

sizeof 長度運算子 sizeof(表示式)

3 / 除 表示式/表示式 左到右 雙目運算子

* 乘 表示式*表示式 雙目運算子

% 餘數(取模) 整型表示式/整型表示式 雙目運算子

4 + 加 表示式+表示式 左到右 雙目運算子

- 減 表示式-表示式 雙目運算子

5 << 左移 變數《表示式 左到右 雙目運算子

>> 右移 變數》表示式 雙目運算子

6 > 大於 表示式》表示式 左到右 雙目運算子

>= 大於等於 表示式》=表示式 雙目運算子

< 小於 表示式《表示式 雙目運算子

<= 小於等於 表示式<=表示式 雙目運算子

7 == 等於 表示式==表示式 左到右 雙目運算子

!= 不等於 表示式!= 表示式 雙目運算子

8 & 按位與 表示式&表示式 左到右 雙目運算子

9 ^ 按位異或 表示式^表示式 左到右 雙目運算子

10 | 按位或 表示式|表示式 左到右 雙目運算子

11 && 邏輯與 表示式&&表示式 左到右 雙目運算子

12 || 邏輯或 表示式||表示式 左到右 雙目運算子

13 ?: 條件運算子 表示式1? 表示式2: 表示式3 右到左 三目運算子

14 = 賦值運算子 變數=表示式 右到左

/= 除後賦值 變數/=表示式

*= 乘後賦值 變數*=表示式

%= 取模後賦值 變數%=表示式

+= 加後賦值 變數+=表示式

-= 減後賦值 變數-=表示式

<<= 左移後賦值 變數<<=表示式

>>= 右移後賦值 變數》=表示式

&= 按位與後賦值 變數&=表示式

^= 按位異或後賦值 變數^=表示式

|= 按位或後賦值 變數|=表示式

15 , 逗號運算子 表示式,表示式,… 左到右 從左向右順序運算

c語言,為什麼表示式1/2的值是0

5樓:匿名使用者

整數除法,0.5捨棄小數,就是0了,如果想得到0.5,那麼在c語言中可以這樣寫1.0/2

這樣就是浮點數除法了

6樓:匿名使用者

等於6.為什麼我寫在下面

你有書的話查最後面的優先值表和結合性.記 住有些是從右往左算的

7樓:匿名使用者

以為兩旁都是整數

所以結果為整數

捨棄小數

8樓:匿名使用者

對的...

int

若1.0/2=0.5

c語言中為什麼1.0/2的值為0.5,而1/2的值為0 ?

9樓:匿名使用者

自動轉換功能,第一個1.0是浮點型,第二個1是整形。

10樓:匿名使用者

1.0/2為浮點運算,1/2為整數運算,所以1/2取整為0。

在c語言中怎樣才能讓1/2的結果為0.5,而不是0

11樓:匿名使用者

c語言中如果你將變數定義為int型別,做除法後只會取小數點以前的整數部分,若要顯示為0.5,將其定義為float型別即可,然後用

printf("%f",變數名);輸出其可,還可以在f前面加上數字(小於8)來控制輸出位數。

如果想實現1/2=0.5的話,可以變為1.0/2或1/2.0或1.0/2.0,這些都可以的

樓上的方法我試了,根本不行,會提示錯誤的:

printf:floating point farmats not linked

abnormail program termination

12樓:匿名使用者

樓上的行,輸出用浮點就行了

13樓:匿名使用者

printf ("%f",1/2);

為什麼c語言表示式中 5+1/2 等於5

14樓:匿名使用者

5+1/2在c語言中確實等於5。

原因如下:

該符號同時具有整數除和實數除的功能,當兩個運算物件都是整數就做整數除,有一個運算物件是浮點數時就執行實數除。

所謂整數除就是捨棄餘數,只留下商;因此5/2的結果是2,而5.0/2的結果是2.5。

顯然1/2是整數除,商位0,所以5+0還是等於5。

15樓:匿名使用者

1/2為整除,值為零,所以式子等價於5+0,結果為5 。

之所以會出現這樣的情況是因為1和2都為整型數,直接相除其結果也為整形,而0.5轉換為整形後為0,所以最終值為5。如果想要得到5.

5這個值的話可以通過一個格式的自動轉換過程,讓除數與被除數中的一個成為浮點型資料,即5 + 1.0 / 2 或者 5 + 1 / 2.0。

16樓:匿名使用者

這個四則運算中,除法的優先順序是高於加法的,先做1/2,由於1和2都是整數,所以除法的結果也是整型,為0. 0+5=5,所以最後的結果是5

17樓:我若在床邊

5+1/2

1/2優先順序高先執行,執行後因為1和2被系統預設整形,隱式轉換0.5->0

5+0=5

18樓:張新香

在這裡5、2、1都是整型、、1/2=0.5,變成整型的話就是0,所以結果為5、、

19樓:匿名使用者

都是整型的,5+1.0/2就可以了..

在c語言中,為什麼1/2的運算結果為0;1.0/2.0的結果為0.5謝謝了,大神幫忙啊

20樓:白諾大好人

因為除號兩邊都是整數,1/2的結構是0.5,取整數以後就是0 第二個是因為除數與被除數有一個是小數結果不會取整數,就是0.5

21樓:久野杏子

1和2是整型,1/2也是整型,0.5取整為0; 1.0和2.0是浮點型,所以1.0/2.0也是浮點型,等於0.5

22樓:景愉玉幼霜

輸出*#pq

下面為程式,偽碼為解釋

void

main()

case

2://由於case

1沒有break,故繼續case

2switch(z)

//即switch(3)

}switch(k)

//即switch(1)}

在c語言中,為什麼1/2的運算結果為0;1.0/2.0的結果為0.5

23樓:滑映寒愈霽

因為除號兩邊都是整數,1/2的結構是0.5,取整數以後就是0

第二個是因為除數與被除數有一個是小數結果不會取整數,就是0.5

C語言環境中,表示式9883198a的值為

a 的ascii碼值為97,所以98 a 1,那麼 連線起來的所有值都為真,所有結果為真,也就是為1 這是c語言中的與運算,98 a 1,所以98 8 31 98 a 的值為1 c語言只要數值不為0就是真 那麼 你這裡的答案是 1 答案是1,c語言中 98 8 31 55是什麼意思,其值為多少?等價...

c語言中表示式必須是可修改的左值是什麼意思

意思是賦值號左側的是隻能是變數,不能是表示式。通過變數名來訪問變數,是一種 相對安全 的方式。因為只有你定義了它,你才能夠訪問相應的變數。這就是對記憶體的基本認知。但是,如果光知道這一點的話,其實還是不知道記憶體是如何存放變數的,因為底層是如何工作的,依舊不清楚。要繼續深究的話,就需要把變數在記憶體...

c語言中for迴圈中裡的表示式分別省略

for 單次表示式 條件表示式 末尾迴圈體 其中,表示式可以省略,但是分號不可省略。for迴圈是開界的。它的一般形式為 for 條件表示式 語句 初始化總是一個賦值語句,它用來給迴圈控制變數賦初值 條件表示式是一個關係表示式,它決定什麼時候退出迴圈 增量定義迴圈控制變數每迴圈一次後 按什麼方式變化。...