① 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、對於邏輯或運算,如果第一個操作數被判定為「真」,系統不再判定或求解第二操作數。