小朋友學C語言(15):“變數==常量”與“常量==變數”的區別
阿新 • • 發佈:2019-01-24
(一)編寫程式
#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)
(七)作業
默寫上面程式中的任何一個。
更多內容請關注微信公眾號