我对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 中的结构和指针。在这里,当我打印 &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)