簡體   English   中英

有關運算符“&”的問題

[英]questions about operator “&”

標題可能有誤,但我不知道如何形容。

int x=0x4a;
h=!(0x80000000000&(0x39+(~x+1)));

結果是h = 0。 問題是x具有32位,而0x80000000000具有32位以上。 如果我將變量i設置為0x80000000000並將其打印為十六進制格式,它將顯示0。那么在那種情況下,為什么h的結果不是1,因為0x80000000000變為0?

我使用的語言是C

0x8000000000是一個long long int常數。 因此,C編譯器將算術表達式中的類型提升為表達式中出現的最高精度。

相反,如果您寫道:

  int x=0x4a;
  int h1=(0x80000000000&(0x39+(~x+1)));
  int h = !h1;

h變為1。也許會發出關於精度損失的警告。

暫無
暫無

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

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