程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言中的-1/2到底有沒有定義?

C語言中的-1/2到底有沒有定義?

編輯:關於C語言

看到一個網友的簽名上寫的“c語言中的-1/2沒有定義”,無論是表達什麼意思,自己都好奇的寫了幾行代碼測試下。寫在博客上湊湊數吧,希望各位不要見笑了。應該說代碼是這樣的。
#include <stdio.h>

void main(){
    float a = -1/2;
    printf("%s%f",a<0?"this is - ":"this is + ",a);
    return;
}
我用了一個判斷來驗證正負值。表面上看上去代碼沒有任何問題,但是仔細的看或者你執行以下就知道問題大大的出來了。結果居然是"0",為什麼?我們看看float a =-1/2,float a肯定可以表示負數和小數點的,但是-1/2呢?這雖然是一個數字,但是卻代表的是整型數據,2個整形數據的操作結果依然是整形,等同於代碼float a = (int)(-1/2),-1/2取整結果為0(0不分正負),結果自然就是this is + 0。所以說這個問題是在c中已經有說明的。如果想要自己得到的結果符合所想,那麼代碼應該是這樣:
#include <stdio.h>

void main(){
    float a = (float)-1/(float)2;
    printf("%s%f",a<0?"this is - ":"this is + ",a);
    return;
}
使用c的強制性轉換,將-1、2都轉換成float,那麼得到的結果既然也就是float了。這個時候的到底的結果就是this is - -0.5000。閃。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved