爲什麼這兩個數字比較相等,以及如何進行比較x和y? #include <stdio.h>
int main()
{
unsigned int x = -1;
int y = ~0; //type promotion from int to unsigned int
if (x == y)
printf("same");
else
有沒有一種標準方法來獲取變量類型的大小,並將其作爲可變參數傳遞時將被提升爲? auto x = ...;
auto y = sizeof(promoted(x));
結果應該是: char -> sizeof(int)
int -> sizeof(int)
float -> sizeof(double)
...
我見過OCA問題這個問題,需要知道爲什麼它輸出90和不100. 下面是代碼: int x = 9;
long y = x * (long) (++x);
System.out.println(y);
所以,我認爲這會做的是,首先,增加x (因爲這是發生在第一個正確的?),然後它會做類型提升,並採取左邊的X是10,把它變長,並乘以這兩個多頭。對?