小编Neb*_*ski的帖子

为什么sizeof(char + char)返回4?

char  a, b;     
printf("%d", sizeof(a+b));
Run Code Online (Sandbox Code Playgroud)

printf写入屏幕的内容是什么?

我认为因为sizeof(char)= 1,sizeof(a + b)也将是1,但结果是4.我不明白这一点,如果我们添加两个字符,为什么写4?

c sizeof char

9
推荐指数
2
解决办法
485
查看次数

二进制数中的1的数量

我需要使用递归函数创建一个计算无符号数的二进制表示中的1的数量的程序,所以这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int one(unsigned n);

int main()
{
    unsigned n;
    printf("n= "); scanf("%u", &n);
    printf("%d", one(n));

    printf("\n");
    return 0;
}

int one(unsigned n)
{
    if(n==1 || n==0)
        return n;
    else
        return (n&1+one(n>>1));
}
Run Code Online (Sandbox Code Playgroud)

事实是,我的代码适用于数字7,例如,如果我输入数字2,它将打印出其中有数字2.因为4它返回0,我认为对于所有2的指数,它最终返回0.我无法弄清楚为什么.

c recursion bit-manipulation

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

C隐式转换?

有人可以向我解释如何

printf("%d", -2<2u?1:-1);
Run Code Online (Sandbox Code Playgroud)

打印出'-1'.我假设有某种隐式转换正在进行,但我似乎无法掌握它.

c unsigned implicit-conversion

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

C malloc函数大小

所以我有一个我需要回答的棘手问题:

在内存中哪个段是c + 9指向函数是否:

void f() 
 { 
  int *c=(int*)malloc(10); 
 }
Run Code Online (Sandbox Code Playgroud)

我想我知道malloc是如何工作的,我查找了其他问题,所以这应该分配10个字节的内存并返回第一个的地址,加上它会将它转换为int.

因为sizeof(int)是4个字节,我认为没有足够的空间用于9个整数,并且c + 9指向超出分配内存范围的一些内存并且它将返回错误,但是不,程序正常工作很好,好像有10*sizeof(int)分配.那我在哪里弄错了?

c malloc memory-management casting sizeof

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