C零基礎課程-13-關係運算符與關係表達式


視頻地址: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語言範圍內的知識,在進階類的課程中才會介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章