簡體   English   中英

用運算符判斷真假

[英]True and False with Operators

又是我...很抱歉問了一些愚蠢的問題,但我是初學者,我真的很想學習編碼..所以我有一個問題要意識到為什么這些總是正確的? 它與操作員有關,或者 C 行為未定義。 ?

   int x;
   int b;
   b = 1 < x < 10;
   printf("%d%d",b);
    char c = 'z';
    (c==' ') || (c='\t') || (c=='\n');
    printf("%c",c);

為什么那些總是正確的? 是因為ASCII碼還是什么?

常數 10 與 boolean 表達式的比較結果始終為真

您可以在此處查看 C 運算符優先級的表格,可以這樣閱讀:

b = ((1 < x) < 10);

因為在 C 等語言中,關系運算符返回整數 0 或 1,其中 0 代表假,任何非零值都代表真。

所以存儲在 b 中的值為 1(真)

還:

你沒有初始化x ,它應該有垃圾信息(可能!= false)

在你的第二個代碼中,你是在分配而不是比較, (c='\t')這是故意的嗎? 這就是它打印“標簽”的原因。

在您的第一個代碼塊中,有幾個問題:

  1. x未初始化(你沒有給它一個值)
  2. 1 < x < 10無效 C
  3. 您的 printf 語句需要 2 個 integer 值伴隨“%d%d”,但您只傳遞 1

我認為這就是你想要的:

int x = <some valid value>;
int b;
b = ((1 < x) && (x < 10)); // expression is true if x is between [2..9]
printf("%d",b);

這條線

(c==' ') || (c='\t') || (c=='\n');

應該

(c==' ') || (c=='\t') || (c=='\n');

\t (制表符)進行比較時,請注意雙等號。 否則,您最終會為c分配一個制表符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM