gpt4 book ai didi

c - 如何在 C 中对 unsigned long 进行位移位?

转载 作者:行者123 更新时间:2023-11-30 16:26:23 24 4
gpt4 key购买 nike

我已经尝试了一切方法来解决这个问题,但我不明白我做错了什么。转换为有符号使所有内容都超过十六进制数字值,我知道如果我有一个整数,我可以直接使用“ULL”将其转换并移走,但我无法弄清楚

基本上

void   tick(unsigned long* tmp) { //input as a parameter
signed long temp = tmp;

printf("%x\n", temp >> 16 & 0xff);

tmp = (signed) temp;

return;
}

编辑:所以我很愚蠢,我应该使用 %lu 而不是 %x,现在我可以看到我的结果,但我没有看到时钟发生任何变化,即使对温度进行了位移位

最佳答案

  • 函数参数是一个指针,因此您需要取消引用它才能访问它的值。
  • 如果要存储变量,则需要将移位后的值分配给变量。
  • 如果想要改变指针下的值,则需要将新值赋给解除引用的指针
  • 您还需要使用长格式选项才能正确显示。 (这里,lux -> 长无符号十六进制)

这是修改后的版本:

#include <stdio.h>

void tick(unsigned long* input)
{
unsigned long temp;

temp = ((*input) >> 16) & 0xff;
printf("%lux\n", temp);

*input = temp;
}

int main()
{
long test = 1;
tick(&test);
test = 0b100000000000000000;
tick(&test);
test = 0b111111111111111111;
tick(&test);
}

关于c - 如何在 C 中对 unsigned long 进行位移位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com