我有以下代碼:功能無法寫入整數
int vals = 0b000000000000000000;
void setBit(int num, int x, int n) {
num ^= (-x^num) & (1 << n);
}
int main() {
setBit(vals, 0, 1);
printf("%i\n", vals);
}
但是,在setBit()
功能不寫入vals
! printf()
打印0,但它應打印1(vals
是0b000000000000000001
)。爲什麼?
你永遠不會改變的值。給函數賦予vals的副本,然後改變它。 – Carcigenicate
'0b000 ...'是無效的語法 – pmg
,因爲您按值傳遞值。 C中的每一件事都是按價值傳遞的。 – EsmaeelE