Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C “的结果是什么?”;i%0xff“吗;?_C - Fatal编程技术网

C “的结果是什么?”;i%0xff“吗;?

C “的结果是什么?”;i%0xff“吗;?,c,C,所以我在一些蓝牙代码中发现了这个,我想知道它的作用 for (int i = 0; i < sizeof(notify_data); ++i) { notify_data[i] = i%0xff; } for(int i=0;i8位。@Bathsheba:}手机拼写检查啊,太好了!你回答了我的问题!我没意识到是操作员+1给你!(但有人投了反对票,所以我不能+1)@Kovalkova先生,我刚刚投了你的赞成票;你是>=15快上车@你想编辑你的答案让我接受吗?因为这没有错!“它只保留

所以我在一些蓝牙代码中发现了这个,我想知道它的作用

for (int i = 0; i < sizeof(notify_data); ++i) {
    notify_data[i] = i%0xff;
}
for(int i=0;i

结果是0x{00 01 02 03 04…},但如何以及为什么?

此代码实际上可能是错误的

可能作者的意思是
i&0xff
i%0x100
,因为i%0xff`在这个范围内没有太多意义

他只想保存最低的8位数据

模块
%
操作返回整数除法的余数

假设
x
y
是整数

x % y = x - y * (x / y) 
编辑
  • 错误的
    %
    使用

  • 用0到0xff的值填充数组。如果数组大于0xff元素,则从0重新开始。
    将类似于:{0,1,…,254,0,1,…,254,0,1,…}等等。

    因为%是从整数除法返回余数的运算符。 这意味着这个代码是正确的! 并使数组数据等于i,直到“8位最大值”,然后重复该循环。 这只是为了不溢出8位值的保护


    谢谢大家;)

    i%0xFF
    将生成从
    0
    254
    的值
    0xFF
    255
    的十六进制
    %
    是模数运算符。请小心,因为从internet获取的代码质量通常很低。不要从互联网示例中学习该语言。它可能只是一个bug,应该是
    i%0x100
    。虽然如果你不知道
    %
    在C语言中的作用,现在是读一本书的时候了。我想知道这是否就是为什么我的iPhone4不能在我妻子的保时捷中工作的原因?@mrkovalkova:在%.2f上下文中,%不是作为操作员,而是在一个带引号的字符串中。这只不过是printf类型函数使用的一种约定。8字节->8位。@Bathsheba:}手机拼写检查啊,太好了!你回答了我的问题!我没意识到是操作员+1给你!(但有人投了反对票,所以我不能+1)@Kovalkova先生,我刚刚投了你的赞成票;你是>=15快上车@你想编辑你的答案让我接受吗?因为这没有错!“它只保留i的最后一个字节。”如果它变为255而不是254(正如另一个答案已经指出的那样,这可能是它的意图,但不是代码实际所做的)。按原样,它将把255(最后一个字节是255)变成0,256(最后一个字节是0)变成1,等等。关闭1“i最多255”应该是“i最多254”。此外,这并不是“为了不溢出16位值而进行的保护”。它可能是一个“为了不溢出8位值而进行的保护”,但它在这方面的工作有问题。
    i%0xff
    int%int
    )的结果是-254到254,具体取决于
    i
    。从不255。不溢出16位值的保护应正确写入
    value&0xFFFF
    。其他一切都是模糊的。“0xff(254)”不清楚。0xff是255。0xfe是254。@sepp2k注意:
    某些内部%0x100
    范围是
    [-255…255]
    。负值不可能是
    int i=0的问题;i
    for (int i = 0; i < sizeof(notify_data); ++i) {
        notify_data[i] = i%0xff;
    }
    
    char x[100];
    char y[200];
    
    void printsizes(char x[])
    {
         printf("sizeof(x) = %zu, sizeof(y) = %zu\n", sizeof(x), sizeof(y));
    }
    
    
    int main(void)
    {
         printsizes(x);
    }