視頻地址:https://www.bilibili.com/video/av73897727
C語言中的關係運算符
C語言中的關係運算符有等於、不等於、大於、小於、小於等於、大於等於。他們可以直接用於整型、浮點基本數據類型及指針類型變量的比較。
“==”與“!=”
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
if (nValue == 100)
{
printf("你輸入的數字與100相等\r\n");
}
if (nValue != 100)
{
printf("你輸入的數字與100不相等\r\n");
}
return 0;
}
“>”與“<”
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
if (nValue > 100)
{
printf("你輸入的數字大於100\r\n");
}
if (nValue < 100)
{
printf("你輸入的數字小於100\r\n");
}
return 0;
}
“>=”與“<=”
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
if (nValue >= 100)
{
printf("你輸入的數字大於或者等於100\r\n");
}
if (nValue <= 100)
{
printf("你輸入的數字小於或者等於100\r\n");
}
return 0;
}
關係表達式的值
關係表達式求值的結果:
- 如果爲真,則結果爲1
- 如果爲假,則結果爲0
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
printf("%d\r\n", nValue > 100);
printf("%d\r\n", nValue < 100);
if (nValue >= 100)
{
printf("你輸入的數字大於或者等於100\r\n");
}
if (nValue <= 100)
{
printf("你輸入的數字小於或者等於100\r\n");
}
return 0;
}
實際上,對於選擇語句if…else(以及我們之後要學的邏輯運算符),C語言中:
- 將0看作假條件
- 將非0看作真條件
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
if (nValue)
{
printf("你輸入的數字爲非0,C語言認爲爲真條件\r\n");
}
else
{
printf("你輸入的數字爲0,C語言認爲爲假條件\r\n");
}
return 0;
}
初學者常見bug:錯寫“==”爲“=”
因爲在C語言中,“=”爲賦值語句,“==”纔是比較是否相等的語句。所以如果錯將“==”寫成“=”,則會造成bug。
比如:
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
if(nValue = 5)
{
printf("你輸入的數字與5相等\r\n");
}
return 0;
}
#不要對浮點運算符直接使用“==”或者“!=”
“==”不能直接用於浮點數的比較,否則可能出現bug:
#include <stdio.h>
int main(int argc, char* argv[])
{
float fltValue1 = 3.14f;
float fltValue2 = 3.0f;
fltValue2 += 0.1f;
fltValue2 += 0.04f;
if (fltValue1 == fltValue2)
{
printf("C語言認爲兩個數字相等\r\n");
}
else
{
printf("C語言認爲兩個數字不相等\r\n");
}
return 0;
}
如果需要比較兩個浮點數,應該比較它們的差值,並保證差值在一定的誤差區間內:
#include <stdio.h>
int main(int argc, char* argv[])
{
float fltValue1 = 3.14f;
float fltValue2 = 3.0f;
fltValue2 += 0.1f;
fltValue2 += 0.04f;
if (fltValue1 - fltValue2 > -0.0001
&& fltValue1 - fltValue2 < 0.0001)
{
printf("在誤差範圍內可以認爲兩個數字相等\r\n");
}
else
{
printf("在誤差範圍內應該認爲兩個數字不相等\r\n");
}
return 0;
}
其原因與浮點數在內存中的存放格式有關,不僅僅是C語言範圍內的知識,在進階類的課程中才會介紹。