淺談C語言中if語句

2020-12-11 C語言知識傳播者
請看正文

我們知道,C語言提供了三種基本流程控制結構,分別為順序結構、選擇結構和循環結構。對於選擇結構,則是程序根據輸入條件或中間執行結果的不同而選擇執行不同的語句塊。選擇結構分為if語句和switch語句兩種。本文僅談一談if語句基本用法與使用技巧。

1、 if語句基本用法

if語句基本用法有如下四種形式,我們分別來看。

1) 簡單的if語句形式

if(表達式)

語句塊;

該語句形式的語義是:如果表達式為真,則執行語句塊;否則,將跳過該語句塊,執行整個if分支語句後面的其它語句。上述語句塊,可以是一條語句,也可以是多條語句組合。(下同)

2) if-else語句形式

if(表達式)

語句塊1;

else

語句塊2;

該語句形式的語義是:如果表達式為真,則執行語句塊1;否則,執行語句塊2。也就是說語句塊1和語句塊2兩者必執行其一。然後,再執行整個if分支語句後面的其它語句。

3) if-else-if語句形式

if(表達式1)

語句塊1;

else if(表達式2)

語句塊2;

……

else if(表達式m)

語句塊m;

else

語句塊n;

該語句形式的語義是,如果依次判斷各表達式,若表達式為真,就執行對應的語句塊,然後跳出整個if分支語句,執行後面的語句;如果前m個表達式均不為真,則會執行語句塊n,然後再跳出整個if分支語句,執行後面的語句;也就是整個if分支語句的n個語句塊,程序必定會執行其一。

4) if語句嵌套形式

所謂的if語句嵌套形式是指if語句某一分支裡又是一個if語句。通俗的理解是,前三種用法形式裡的語句塊,又是一個if語句,而且可以是前三種用法形式的任一種。C語言的C89標準指明,編譯程序必須最少支持15層嵌套;C99標準把限度提升到127層。不過雖然支持這麼多層嵌套,但實際編程應用時,為了保持程序的可讀性及簡潔程度,應儘量減少嵌套層次。

2、 if語句用法技巧

1) 合理調整if分支順序

在編程應用時,應合理調整if分支順序,把大概率為真對應情況的語句塊直接放在if後面,不要放在else後面。這樣做有利於減少程序的判斷次數,提高執行效率。

例如,我們把學生成績分成60分及以上、40-60分、40分以下三個分數段。很顯然,及格的學生是大多數,也就是某個學生及格的可能性較大,低於60分較少,低於40分的更少。在編程處理學生成績的應用時,通常用if-else-if語句形式,就應該把60分及以上的學生處理情況直接放到if語句之後,40-60分段放到else if語句後面,低於40分的情況放到else語句後面處理,這種安排很符合大家的邏輯思維習慣。如果把順序顛倒,if語句處理40分以下,else if語句處理40-60分段,60分及以上放到else語句後面,無形中增加了成倍的成績比較次數。

2) else結合問題

C語言if語句編程應用時,應該注意else的配對問題,它始終與最近的未匹配的if相結合。如果不注意該問題,有可能程序執行結果與預期相去甚遠。請看下面的例子說明。

if(表達式1)

if(表達式2)

語句塊1;

else

語句塊2;

上面的例子我們來看,作者的意圖是,如果表達式1與表達式2均為真的情況下,執行語句塊1;如果表達式1為假,則執行語句塊2。這裡雖然else與表達式1的if對齊,但它們並不能配對;事實上else是與表達式2的if相結合。實際執行邏輯是:在表達式1為真的情況下,繼續判斷表達式2,若表達式2為真則執行語句塊1,若表達式2為假則執行語句塊2。可見與作者的意圖相差太遠。

要想實現作者意圖,解決辦法是合理使用「{}」,將上述表達式修改成如下形式即可。

if(表達式1)

{

if(表達式2)

語句塊1;

}

else

語句塊2;

3) 避免if/else語句後面加分號「;」

C語言中,分號「;」組成的語句稱為空語句,它什麼都不做,通常被用來做空循環體。如果不小心在if/else語句後面加了分號「;」,程序執行有可能違背了你的意圖,導致意外結果。例如:

if(表達式);

語句塊;

本來意圖是表達式為真就執行語句塊,現在不小心在if後面加了個分號「;」,則上述表達式實際上變成了如下形式:

if(表達式)

;

語句塊;

也就是說如果表達式為真,則執行一個空語句。然後再執行語句塊。此時上述語句塊不再是在表達式為真的條件下執行,而是會無條件的執行。

可見,一個分號「;」誤用會帶來不可預計的後果。而且,此種錯誤在程序編譯時是發現不了的,不會有任何錯誤提示。因此,建議大家編程時一定要細心。

好了,關於if語句的用法今天就總結到這,如果大家有任何疑問請留言探討。我是「C語言知識傳播者」,志在瞄準C語言,挖掘和總結C語言的難點和痛點,給C語言編程愛好者和本領域從業人員提供參考,我會用心總結C語言知識的點點滴滴,您的關注是我持續創作的動力,請收藏本文、轉發並點讚,希望得到您的持續關注,謝謝!

相關焦點

  • 基礎 | C 語言中的 if 選擇語句
    if 語句是指程式語言(包括 c 語言、C#、VB、java、彙編語言等)中用來判定所給定的條件是否滿足,根據判定的結果(真或假)決定執行給出的兩種操作之一。對於雙分支if - else 語句、if 分支或者 else 分支中又包含 if 或 if - else 語句,這稱為 if 語句的嵌套。
  • C語言if else語句
    if-else語句在C語言中,使用if語句進行判斷,請先看下面的代碼:#include <stdio.h>int main(){int age;printf("請輸入你的年齡:");scanf("%d", &age);if(age>=18){
  • 單片機C語言教程-基礎語句
    c語言提供了多種語句來實現這些程序結構。本文將介紹這些基本語句及其應用,使讀者對c程序有一個初步的認識,為以後的學習打下基矗  c程序的語句  c程序的執行部分是由語句組成的。程序的功能也是由執行語句實現的。
  • 單片機c語言教程:C51複合語句和條件語句
    在 VB 等一些語言中同一個()號會有不一樣的 作用,它能用於組合若干條語句形成功能塊,能用做數組的下標等,而在 C 中括號的分 工較為明顯,{}號是用於將若干條語句組合在一起形成一種功能塊,這種由若干條語句組合 而成的語句就叫複合語句。
  • C語言while語句
    在C語言中,共有三大常用的程序結構:前面講解了順序結構和選擇結構,本節開始講解循環結構。
  • 物聯網開發筆記——嵌入式開發之Linux系統中C語言分支判斷語句
    本節介紹《Linux系統中C語言控制語句之分支語句》。1、C語言的語句概述1)C 語言提供了以下類型的分支判斷語句。1)C 語言中 if 語句的語法:if(boolean_expression){/* 如果布爾表達式為真將執行的語句 */}如果布爾表達式為 true,則 if
  • C語言程序控制語句——if
    如以下示例程序if( a > 20 )printf("a 大於 20 \r\n" );如以下示例程序,操作包括多條語句,注意要把它們放在{}中。if( 30> a > 20 ){printf("a 大於 20 \r\n");printf("a 小於 30 \r\n");}關係運算符C語言中提供了6種關係運算符,用於關係表達式:①<(小於)②<=(小於或等於)③&
  • 單片機c語言教程:C51循環語句
    在 C 語言中構成循環控制的語句有 while,do-while,for 和 goto 語句。同樣都是起到循環作用,但具體的作用和使用方法又大不一 樣。我們具體來看看。goto 語句這個語句在很多高級語言中都會有,記得小時候用 BASIC 時就很喜歡用這個語句。
  • C語言程序語句、格式輸出/輸入函數
    一、c程序語句C語言程序主要有以下幾種語句1
  • 高級語言中的語句在彙編中是如何實現的
    我們都知道對於c語言來說,它是需要先轉換成彙編語言,然後再生成機器語言的。那麼在c語言中,各種條件語句,各種表達式的計算,在彙編中是何如實現的呢?今天我們就來講解一下。彙編語言彙編語言是由包含用助記符如 ADD、MOV、SUB 和 CALL 書寫的語句。彙編語言與機器語言是一對一(one-to-one)的關係:每一條彙編語言指令對應一條機器語言指令。
  • 如何學好C語言判斷語句?攻略if語句是第一步
    C語言,是全球使用最多的程式語言。上次我們談到了switch語句,但在C語言中,if條件構成的選擇結構程序很重要。在實際問題中,往往需要對不同變量進行比較,然後分別執行不同的語句。如何使用if語句呢?小編在這裡談一談if語句基本用法與使用技巧。
  • C語言中循環語句的程序設計
    今天,小編我將為大家講述C語言中的循環語句,那什麼是循環語句那,在我們了解這個問題前,我們先要知道,為什麼我們需要循環控制語句。那是因為在日常生活中或是在程序處理的問題中常常遇到需要重複處理的問題。例如,統計群眾的平均年齡等。
  • C語言中的分支語句,就是這麼簡單
    default:printf("%d",0);}return 0;}當輸入1或2,時分別輸出1或2,除此之外任何輸入任何值,輸出結果都為0;注意switch 語句中的在一個 switch 中可以有任意數量的 case 語句。每個 case 後跟一個要比較的值和一個冒號。case 的 constant-expression 必須與 switch 中的變量具有相同的數據類型,且必須是一個常量或字面量。
  • R語言中的next語句和break語句的具體用法
    在循環結構中我們有時想終止某一次循環,即不再執行這次循環,但還要執行下次循環;還有時我們需要提前結束整個循環,即不再執行循環體中的任何內容了。我們知道在像C語言,C#語言,Java語言中可以分別使用continue語句和break語句來實現,那麼在R語言中也是這樣的嗎?
  • C語言編譯過程中的錯誤分析
    C編譯的程序對語法檢查並不象其它高級語言那麼嚴格,這就給編程人員留下「靈活的餘地」,但還是由於這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經常會出一些連自己都不知道錯在哪裡的錯誤。看著有錯的程序,不知該如何改起,本人通過對C的學習,積累了一些C編程時常犯的錯誤,寫給各位學員以供參考。
  • 【C語言】02.第一個C語言程序
    像第3行這種寫在函數中的代碼可以稱為一條「語句」。寫完一條語句後,要在尾部加上一個分號「;」,代表語句結束了 4> 編寫輸出語句接下來在main函數中添加代碼。至於為什麼這條語句要這樣寫?為什麼這條語句能讓計算機輸出東西?這些疑問都先擱著,以後會詳細解釋。
  • c語言——基本語法
    c語言由Dennis MacAlistair Ritchie創始,是普適性最強的一種電腦程式編輯語言,它不僅可以發揮出高級程式語言的功用,還具有彙編語言的優點。本期將簡潔地介紹c的基本語法。c,表示單個字符s,表示字符串,以'\0'結束f,表示實數,含6位小數。
  • C語言switch語句用法總結
    請看下文C語言中選擇結構分為if語句和switch語句兩種,兩種語句均可以依據條件不同而選擇執行不同的語句塊,但switch語句更多地應用於多分支結構。1、 switch語句基本用法C語言中,switch語句是一種多分支選擇語句,在實際應用中,要在多種情況中選擇一種情況,執行某一部分語句。
  • 關於C語言Switch語句,先學這些技巧夠不夠?
    一.C語言中switch的用法1、switch後面括弧內的【表達式】,ANSI標準允許它為任何類型;2、當表達式的值與某一個case後面的常量表達式的值相等時,就執行此case後面的語句,否則,就執行default後面的語句。
  • 基於linux平臺的c語言語言教學針與數組
    所以c語言書寫的程序都非常短,c語言表達能力是非常強的,其他語言難以表達的運算表達式使用c語言可以很容易地實現。這是內於c語言的運算符非常的豐富,共有34種運算符,包含的範圍可以說是非常的廣。在c語言中,括號,賦值符號,強制類型轉換都是被視為運算符,直接來一些乾貨吧c語言源碼實例#include<stdio.h>int main(){printf