小编Rav*_*avi的帖子

程序检查给定的整数是否具有替代模式

我对C非常陌生,尤其是位操作程序.我正在练习一些并遇到一个问题 - "C程序来检查给定的整数是否具有替代模式".以下是解决方案,我无法准确理解这段代码的作用和问题.替代模式意味着什么?

#include <stdio.h>

void main() {
    int num, x, y, count = 0;

    printf("enter the number:");
    scanf("%d", &num);
    x = num << 1;
    y = x ^ num;
    y = y + 1;

    while ((y / 2) != 0) {
        if (y % 2 != 0) {
            count++;
            break;
        } else {
            y = y / 2;
        }
    }
    if (count) {
        printf("false");
    } else {
        printf("true");
    }
}
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation

1
推荐指数
1
解决办法
3250
查看次数

值类型转换时地址值不同

嗨,我正在学习 C 中的结构和指针。在这里,当我打印 &tmp.z - 8 时,该值与我对其进行类型转换并打印 (char *)&tmp.z - 8 时的值不同。我浏览了几篇关于类型转换和指针的文章,但找不到一个很好的理由,任何人都可以帮助我吗?

    struct xyz
    {
        int x;
        char y;
        double z;
    }tmp;

    int main()
    {
        printf("%p\n",&tmp.z - 8);
        printf("%p\n",(char *)&tmp.z - 8);
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c pointers

-1
推荐指数
1
解决办法
33
查看次数

标签 统计

c ×2

bit-manipulation ×1

pointers ×1