2
A
回答
10
C指定不同類型的標準轉換。規則有點複雜,但基本上「較小」的類型會臨時轉換爲較大的類型,所以如果您將int與一個char進行比較,則只會將該char轉換爲一個int值。
1
根據C99標準,下面的操作數都是允許的任何關係運算符:
- 兩個操作數與真正的算術類型
- 兩個指針到同一類型的對象
在前一種情況,不同類型將根據usual arithmetic conversions進行轉換。
0
像賈森在其中一個評論中說的,你必須小心無符號類型。例如下面的代碼打印出破:
#include <stdio.h>
int main() {
int a = -1;
unsigned int b = 1 << 31;
if (a < b) {
fprintf(stderr, "CORRECT\n");
} else {
fprintf(stderr, "BROKEN\n");
}
return 0;
}
相關問題
- 1. 混合類型的無合併操作符
- 2. 操作<<在抽象類中,C++
- 3. C++ <<與相同類型的操作符重載
- 4. 在php中遇到小於(<)的操作符preg_match_all
- 5. 您能否解釋一下 - 「涉及混合類型操作數的規則不適用於移位操作符」
- 6. 德爾福IS操作符 - 操作符不適用於此操作數類型
- 7. C#操作符'*'不能應用於'double'和'decimal'類型的操作數
- 8. 枚舉類型的操作在C++中是合法的嗎?
- 9. 操作「/」不能應用於類型「小數」的操作數和「雙師型」 - NCalc
- 10. 是>?或<?任何C++方言的合法操作符?
- 11. C#中的合併操作符?
- 12. 操作者<<過載在C++中
- 13. 「<<」 操作符在Java中
- 14. C#,數據類型操作
- 15. 錯誤傳遞工會作爲參數的操作符<<
- 16. Windows上混合Julia和C項目的最小工作示例
- 17. 比較在C#:操作者「<」不能被應用於類型的操作數「T」和「T」
- 18. 如何用一般類的不同泛型類型的操作數重載泛型類的操作符
- 19. 如何重載<<操作符以打印類成員?
- 20. 小學C++類型混淆
- 21. 重載類的操作符[]在C++
- 22. C++重載操作符工作
- 23. ==操作符不工作用C
- 24. C++ - >>操作符是如何工作的?
- 25. C++ new操作符是如何工作的內部
- 26. 靜態類型語言中的合併操作符
- 27. C++ - 如何||操作員工作?
- 28. C++/ASM - 「操作數大小衝突」,「不正確的操作數類型」
- 29. 混合模式(雙向)如何工作?
- 30. 泛型類型推斷如何在C#中工作?
的行話,這是「通常的算術轉換」,你可以在* C編程語言索引找到*由Kernighan和Ritchie。令人驚訝的是,有時一個帶符號的操作數被提升爲一個無符號類型,因爲另一個操作數是無符號的,所以一個大的正數'unsigned int'可能被認爲小於一個負數'int'。 – 2010-01-13 15:59:08
另一個規則是算術(包括比較)在類型小於'int'的情況下是不會被執行的,所以如果你比較一個'char'和一個'char',它們都會被提升爲'int' 。 – caf 2010-01-14 04:03:31