char a, b;
printf("%d", sizeof(a+b));
Run Code Online (Sandbox Code Playgroud)
printf写入屏幕的内容是什么?
我认为因为sizeof(char)= 1,sizeof(a + b)也将是1,但结果是4.我不明白这一点,如果我们添加两个字符,为什么写4?
我需要使用递归函数创建一个计算无符号数的二进制表示中的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.我无法弄清楚为什么.
有人可以向我解释如何
printf("%d", -2<2u?1:-1);
Run Code Online (Sandbox Code Playgroud)
打印出'-1'.我假设有某种隐式转换正在进行,但我似乎无法掌握它.
所以我有一个我需要回答的棘手问题:
在内存中哪个段是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)分配.那我在哪里弄错了?