![](/img/trans.png)
[英]How to return true or false without using the relational operators in c?
[英]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')這是故意的嗎? 這就是它打印“標簽”的原因。
在您的第一個代碼塊中,有幾個問題:
x
未初始化(你沒有給它一個值)1 < x < 10
無效 C我認為這就是你想要的:
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.