C語言中if(!x)什么意思
非X的意思。
!在C語言中有兩種表達,這里邊表示“非”。
取決于X的值,如果X的值為0,!X就是1.
如果X的值不為0,!X就是0的意思。
擴展資料:
C語言中提供了三種邏輯運算符:
&&(與運算)
||(或運算)
!(非運算)
優先級:C語言中,運算符的運算優先級共分為15 級。1 級最高,15 級最低。 在表達式中,優先級較高的先于優先級較低的進行運算。而在一個運算量兩側的運算符 優先級相同時,則按運算符的結合性所規定的結合方向處理。
結合性:C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左后右。如有表達式x-y+z 則y 應先與“-”號結合,執行x-y 運算,然后再執行+z 的運算。
這種自左至右的結合 方向就稱為“左結合性”。而自右至左的結合方向稱為“右結合性”。最典型的右結合 性運算符是賦值運算符。如x=y=z,由于“=”的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
優先級從上到下依次遞減,最上面具有最高的優先級,逗號操作符具有最低的優先級。
參考資料:
C語言更多邏輯運算符
c語言中if和while 有什么區別
一、語法不同 if:IF(logical_test,value_if_true,value_if_false) while:whiledo 二、功能不同 if語句,if( ),括號里的內容和while( )里的內容都是判定句,判定為真則執行語句,假則不執行語句。
不同點就是if沒有循環的性子,一旦執行過后就跳出語句,而while判定為真后執行它下面的語句,執行完后返回括號里繼續判定,判定為真繼續執行語句知道括號里判定為假為止。 三、意思不同 while是循環語句,在C語言中通常用while來表示循環,例如在main()函數中一般都用while(1)來讓主程序循環執行。
while語句叫做循環語句。同樣是判斷條件是否成立。
但是執行完畢后繼續判斷該條件,直到該條件不成立則轉入下一條語句。
C語言if語句的嵌套 和 提供一些關于if else的小程序
三、if--else if--else結構。
if(表達式1) 語句1; else if(表達式2) 語句2; else if(表達式3) 語句3; . . . else 語句n; 這種結構是從上到下逐個對條件進行判斷,一旦發現條件滿點足就執行與它有關的語句, 并跳過其它剩余階梯;若沒有一個條件滿足,則執行最后一個else 語句n。最后這個else常起著缺省條件的作用。
同樣,如果每一個條件中有多于一條語句要執行時,必須使用{和}把這些語句包括在其中。條件語句可以嵌套,這種情況經常碰到,但條件嵌套語句容易出錯,其原因主要是不知道哪個if對應哪個else。
例如: if(x>20||x<-10) if(y<=100&&y>x) printf(Good); else printf(Bad); 對于上述情況, Turbo C2.0規定: else語句與最近的一個if語句匹配, 上例中的else與if(y<=100&&y>x)相匹配。為了使else與if(x>20||x<-10)相匹配, 必須用花括號。
如下所示: if(x>20||x<-10){ if(y<=100&&y>x) printf(Good); } else printf(Bad); 下面舉幾個例子:1.輸入一個數,如果大于0,輸出plus;如果是負數,輸出negative;如果正好是0,則輸出zero。main(){float num;scanf(%f,&f);if(num>0)printf(plus\n);else if(num<0)printf(negative\n);elseprintf(zero\n); }先定義兩個變量,然后輸入一個數,然后判斷這個數的范圍,輸出對應的字符串。
2.輸入一個數x,輸出y。其中y是x的絕對值。
main(){float x,y;scanf(%f,&x);if(x>=0) y=x;else y=-x;printf(%f\n,y);}程序比較簡單,這兒就不分析了。其實Trubo C 2.0把一些常用的功能都寫好了,我們只需要使用就可。
例如求絕對值的功能在C的庫里面就有。看下面的:#include *(){float x,y;scanf(%f,&x);y=fabs(x); /*求x的絕對值,然后賦值給y*/printf(%f\n,y);} 這個程序和上面的程序完成的功能是一模一樣的,都是求絕對值。
可以看出,用下面這個方法比上面就要好一些。由于fabs()是一個函數,系統自帶的,所以在使用它的時候,我們必須把它所在的庫文件math.h包含都程序中,即程序最前面一行。
類似的還有求開方sqrt(),求指數冪exp()等等,這些與數學方面有關的函數都在math.h里面。具體哪些有哪些沒有,在什么庫里面,可以查看一些手冊。
3.輸入x,輸出y,x和y滿足關系:x<-5 y=x;-5<=x<1 y=2*x+5;1<=x<4 y=x+6;x>=4 y=3*x-2;程序如下:main(){float x,y;scanf(%f,&x);if(x<-5)y=x;else if(-5<=x&&x<1)y=2*x+5;else if(1<=x&&x<4)y=x+6;elsey=3*x-2;printf(%f\n,y);} 這里要說明兩點:(1).-5<=x&&x<1不能寫成-5<=x<1;1<=x&&x<4也不能寫成1<=x<4;在C語言中,不能認識連續不等式。(2).y=2*x+5不能寫成y=2x+5;y=3*x-2也不能寫成y=3x-2;這與我們平時所寫的方法不一樣。
4.輸入三個數x,y,z,然后按從大到小輸出。main(){float x,y,z;scanf(%f%f%f,&x,&y,&z);if(x>=y&&x>=z){printf(%f\t,x);if(y>=z) printf(%f\t%f\n,y,z);else printf(%f\t%f\n,z,y);}else if(y>=x&&y>=z){printf(%f\t,y);if(x>=z) printf(%f\t%f\n,x,z);else printf(%f\t%f\n,z,x);}else{printf(%f\t,z);if(x>=y) printf(%f\t%f\n,x,y);else printf(%f\t%f\n,y,x);}}說明:這是一個典型的if語句嵌套結構,如果不使用括號,那么if和else的對應關系就亂了。
C語言中if(!x)和if(x) 的等價結構是什么
if(!x)等價于 if(x==0||x=='\0'); if(x)等價于 if(x!=0||!x==0)。
如果布爾表達式為 true,則 if 語句內的代碼塊將被執行。如果布爾表達式為 false,則 if 語句結束后的第一組代碼(閉括號后)將被執行。
“!”:(邏輯非)邏輯運算符。“邏輯非”就是指本來值的反值。
例如:" !0" 這個邏輯表達式的值為1.(判斷的這個數為0,成立,則其表達式的值為1) " !1" 這個邏輯表達式的值為0.(判斷的這個數非0,不成立,則其表達式的值為0) C 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false。 擴展資料: 優先級從上到下依次遞減,最上面具有最高的優先級,逗號操作符具有最低的優先級。
表達式的結合次序取決于表達式中各種運算符的優先級。優先級高的運算符先結合,優先級低的運算符后結合,同一行中的運算符的優先級相同。
相同優先級中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先級是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
基本的優先級需要記住: 指針最優,單目運算優于雙目運算。如正負號。
先算術運算,后移位運算,最后位運算。請特別注意:1 << 3 + 2 & 7等價于 (1 << (3 + 2))&7. 邏輯運算最后結合。
參考資料: 百度百科-運算符優先級。
C語言中if(!x)和if(x) 的等價結構是什么
if(!x)等價于
if(x==0||x=='\0');
if(x)等價于
if(x!=0||!x==0)。
如果布爾表達式為 true,則 if 語句內的代碼塊將被執行。如果布爾表達式為 false,則 if 語句結束后的第一組代碼(閉括號后)將被執行。
“!”:(邏輯非)邏輯運算符。“邏輯非”就是指本來值的反值。
例如:" !0" 這個邏輯表達式的值為1.(判斷的這個數為0,成立,則其表達式的值為1)
" !1" 這個邏輯表達式的值為0.(判斷的這個數非0,不成立,則其表達式的值為0)
C 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false。
擴展資料:
優先級從上到下依次遞減,最上面具有最高的優先級,逗號操作符具有最低的優先級。表達式的結合次序取決于表達式中各種運算符的優先級。優先級高的運算符先結合,優先級低的運算符后結合,同一行中的運算符的優先級相同。
相同優先級中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先級是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
基本的優先級需要記住:
指針最優,單目運算優于雙目運算。如正負號。
先算術運算,后移位運算,最后位運算。請特別注意:1 << 3 + 2 & 7等價于 (1 << (3 + 2))&7.
邏輯運算最后結合。
參考資料:
百度百科-運算符優先級
轉載請注明出處華閱文章網 » C語言if語句and