2013-05-30 100 views
0

我已經在Qt中編寫了下面的代碼,當我將值放入它時,它會停止工作。如何設置結構中位域設置變量的值?

struct aim 
{ 
    int i : 1; 
    int j : 1; 
}; 

    int main() 
    { 
     aim missed; 
     printf("Enter value of i :: "); 
     scanf("%u",missed.i); 

     printf("Enter value of j :: "); 
     scanf("%u",missed.j); 
    } 

任何人都可以幫我解決這個問題嗎?

回答

1

由於C/C++標準不允許通過指針訪問位域的成員,並且必須傳遞scanf指針。

+0

那麼我應該用什麼來代替scanf –

+0

要將變量讀入ac位域我認爲您必須將其保存在一個臨時變量中,您可以獲取一個指針並將其複製到位域(並檢查值對它有效 – urzeit

+0

thanx它的工作 –

1

有你的代碼的幾個問題:

  1. 的1位的有符號整數並不是非常有用,它只能保存的值-1和0
  2. 你不能有一個指向位字段的指針,這不是指針的意思。
  3. 此外,%d說明符中沒有任何內容告訴scanf()函數目標值是位域(也沒有任何其他%說明符可以執行此操作,請參見2)。

解決的辦法是將scanf()轉換爲臨時變量,範圍檢查收到的值,然後將其存儲在位域中。

+0

補充說明:一個指向位域成員的指針根本不可能完成,因爲指針保存的是字節地址,位域成員可能有「小數字節」地址。 – urzeit