當前位置:首頁 » 編程語言 » c語言不用if判斷真假
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言不用if判斷真假

發布時間: 2023-05-06 10:13:25

c語言中「if」跟「if else」感覺用法都是一樣的,都是判斷真假執行語句。

看起來一樣,用eles if的地方好像全部可以替換成if,但實際使用中是有講究的,搞不好就是一個bug。

int水溫=50度
if(水溫>=50度)
{
洗碗
洗澡
做飯
//該處理中,三個動作耗時1小時,水溫降低30度
水溫=20度
}
elseif(水溫<50度&&水溫>=20度)
{
洗碗
做飯
//該處理中,兩個動作耗時半小時,水溫降低10度
水溫=10度
}
elseif(水溫<20度)
{
做飯
//該處理中,一個動作耗時0.25小時,水溫降低5度
水溫=5度
}
printf("%d ",水溫)

把elseif全部改成if後:

int水溫=50度
if(水溫>=50度)
{
洗碗
洗澡
做飯
//該處理中,三個動作耗時1小時,水溫降低30度
水溫=20度
}
if(水溫<50度&&水溫>=20度)
{
洗碗
做飯
//該處理中,兩個動作耗時半小時,水溫降低10度
水溫=10度
}
if(水溫<20度)
{
做飯
//該處理中,一個動作耗時0.25小時,水溫降低5度
水溫=5度
}
printf("%d ",水溫)

修改後做了3次選擇,而且每次都處理了,總共做了三次飯...最後的水溫只有5度了...

看到了吧,bug就是這么產生的。

其次,就算沒有產生bug,我在每一個條件處理中都不會涉及到條件本身的處理,那也可以沒問題。

但是!C語言是一門面向過程的高效率語言,你判斷三次條件和判斷一次條件哪一個更效率?比如判斷一次條件需要1ms,如果我有10個else if全部改成if是不是感覺1ms和10ms區別不是很大,那麼我在外面再套一層循環呢,循環100次是不是突然就從100ms變成1s了?如果循環外面再套循環呢?

② C語言中,如何表示「真」還是「假」系統如何判斷一個量的「真」和「假」

表示真假蠢襪彎可以用1,0或true,false;
判斷真假的方法是:(假定有變數a)
if(a){...}
//判斷如果為真
if(!a){
...}//判斷如果為好彎假
true和false一般用於布爾型變數的判斷,即帶悶
if(a==true){}

if(a==false){}

③ C語言中 if(a>b==c) 判斷框怎麼看什麼時候為真 什麼時候為假

>比==的優先順序高
所以相當於:(a>b)==c
a>b時,a>b表達式的值早賀螞純為1
a<b時,a>b表達式的值為0
所以:
當a>b且c=1時,陸物派或a<b且c=0時,為真
其餘為假

④ 關於if語句中真假的判斷..

自己總是記不清...混淆
第一類已定義的變數但未賦值在if中認為是假;
第二類已定義的變數,賦值為空字元串在if中認為是假,賦值為其他的字元岩薯串,粗此者也就是是字元串中有字元(即使是"空格字元")就認為是真;
第三類已定義的變數,賦值為true在if中認為是真,賦值為false,則為假,這和其他語言中bool的類型的變數是一樣的;
第四類已定義的變數,賦值為0(不管是0,還是0.0)在if中則為假,其他數值認為是真,這和c語言中數值的類型的變數是一樣的;
第五類js中的特殊值null,undefined,都是假(由於在js中未定義的變數默認值是undefined,因此這也就解釋了第一類情況);
第六類已定義的函數,根據調用方式又分為兩種
第一種:不帶括弧的,如果定義了就是真,沒有定義會報錯,
第二種:帶括弧的,其實相當於調用函數,自然是根據函數的返回值判斷真假;
第七類已定義的對象,未賦值時在if中則為假,賦值後是真(其實由於在js中變數在沒有賦值時是沒有類型的,因此和第一種情況是一樣的);
第八類已定義的對象的屬性欄位,和單獨的變數是一樣的,例如數值型為0時是假,其他為真,字元串型是為空值時是假,其他為真;
第九類已定義的對象的方法,和單獨的函數是一樣的
不加括弧是如果沒定義就是假,加了括弧相當於調用方法,就是根據返回值判斷真假;
總結:最基本是null,undefined,if判斷都是假;對於數值類型,0是假,其他為真;對於字元類型空字元串是假,其他為扒液真,對於方法屬性,如果定義了就是真,否則就是假,其他所有都可以看做是這些的變相應用。

借鑒於 關於if語句的真假的判斷

⑤ C語言真假判斷

在C語言中,0值代表假,非0值代表真。

隨著語言的發展,引入了bool類型,定義在頭文件 stdbool.h中。bool類型有兩個值,true代表真值,false代表假值。這兩者之間有等價關系,任何能轉換為0值的表達式,其結果也是false,反之也成立產。

非0即為真,在程序設計裡面會省去很多煩瑣的代碼。

比如:

malloc函數,不成功會返回NULL(實際上就是0),成功返回所分配的連續單元的首地址。那麼在判斷malloc()函數是否成功分配了內存,則可以這么寫:

int *p = (int *)malloc(sizeof(int) * 10);

if (p)

TODO...

else

TODO...

(5)c語言不用if判斷真假擴展閱讀

1、對於邏輯與運算,如果第一個操作數被判定為「假」,系統不再判定或求解第二操作數。

2、對於邏輯或運算,如果第一個操作數被判定為「真」,系統不再判定或求解第二操作數。