獲得輸入後用一個恆定的值,所以在這裏,我有我的代碼的一部分,我定義宏基於用戶輸入的標識MIN_BIT
設置的值:如何在功能從用戶
#define MIN_BITS(n) 1*n
int MIN_BIT = MIN_BITS(n);
然後我在主函數中爲用戶輸入'n'的值。
現在,我有一個功能,以便MSB是在左側到採取LSB,在陣列安排它,並打印以相反的順序排列:
void print_binary(unsigned number)
{
unsigned bits [ MIN_BIT ] ; // <-- error here
int count = 0 ;
while(number>0 || count < MIN_BIT)
{
bits [count] = number % 2;
number >>= 1;
count++;
}
for(int i = count -1; i >=0; i--)
cout << bits[i];
}
然而,上線在標記爲1的上面的代碼,我得到一個錯誤「表達式必須有一個常量值」。變量MIN_BIT的值不能用作常量。
請爲此問題提出解決方法,或以不同方式實施此方法。
C++默認情況下不會進行惰性評估。一旦創建了'MIN_BIT',當你改變'n'的值時,它的值不會改變。 – YSC
yikes !!這裏有很多需要改變的地方 – AngryDuck
然後,你得到的錯誤是不言自明的。如果您需要一個連續的數組,其大小取決於運行時值,請使用'std :: vector'。 – YSC