1. 程式人生 > >小朋友學C語言(15):“變數==常量”與“常量==變數”的區別

小朋友學C語言(15):“變數==常量”與“常量==變數”的區別

(一)編寫程式

#include <stdio.h>

int main()
{
    int x = 10;
    if(x == 10)
    {
        printf("x equals 10\n");
    }

    return 0;
}

執行結果:

x equals 10

(二)將x == 10改為10 == x

#include <stdio.h>

int main()
{
    int x = 10;
    if(10 == x)
    {
        printf("x equals 10\n");
    }

    return
0; }

執行結果:

x equals 10

結論:
C語言中,x == 10與10 == x的結果是一樣的,都是判斷x和10是不是相等。相等為真,不相等為假。

(三)假如在編寫第一個程式的時候,if中的等號少寫了一個,程式變成:

#include <stdio.h>

int main()
{
    int x = 10;
    if(x = 10)
    {
        printf("x equals 10\n");
    }

    return 0;
}

執行結果:

x equals 10

雖然執行結果是對的,但是邏輯上已經不一樣了。這裡是兩次把10賦值給x,然後再判斷x是否為真。

(四)如果第2個程式中漏打了一個等號,程式變為

#include <stdio.h>

int main()
{
    int x = 10;
    if(10 = x)
    {
        printf("x equals 10");
    }

    return 0;
}

編譯出錯 ,這是因為,C語言中,只允許把常量賦值給變數,不允許把變數賦值給常量。常量不能被賦值。

結論:建議寫成10 == x,不要寫成x == 10。這樣一旦漏打了一個等號,編譯器報錯,程式設計師可以立馬修改。

(五)看看x = 0的情景

#include <stdio.h>
int main() { int x = 0; if(x == 0) { printf("x equals 0\n"); } else { printf("x not equals 0\n"); } return 0; }

執行結果:

x equals 0

(六)假如第5個程式中,程式設計師因粗心漏打了一個等號,程式變為

#include <stdio.h>

int main()
{
    int x = 0;
    if(x = 0)
    {
        printf("x equals 0");
    }
    else
    {
        printf("x not equals 0");
    }

    return 0;
}

執行結果

x not equals 0

分析:原本x與0是相等的,但是因為這裡少打了一個等號,導致兩次都是賦值操作,x為0,if裡的判斷條件為假,得出了x不等於0的錯誤結論。

結論:
當少打一個等號的時候,寫成“常量 == 變數”編譯不成功,這樣程式設計師可以立馬發現少打了一個等號。;
尤其是在變數為0的情況下,可以避免寫成if(變數 = 0)而得到相反的結論。

建議:
寫程式時一律寫成if(“常量 == 變數”),比如if(10 == x)
不要寫成if(“變數 == 常量”),比如if(x == 10)

(七)作業
默寫上面程式中的任何一個。

更多內容請關注微信公眾號
wchat_official.jpg