在"C的完整参考"一书中,提到char默认情况下是无符号的.
但我试图用GCC和Visual Studio验证这一点.它默认签名.
哪一个是正确的?
可能重复:
计算32位整数中设置位数的最佳算法?
找出没有.变量中的位集更容易.但是我们怎么能用最快的方法执行相同的操作呢?
#include <stdio.h>
FILE *openfile()
{
FILE *fp1;
fp1 = fopen("test.c","r");
return fp1;
}
int main()
{
char c;
FILE *fp;
int a = 10;
int b = 1000 - a;
printf("Hello\n");
fp = openfile();
fscanf(fp, "%c", &c);
fclose(fp);
printf("%c", c);
}
Run Code Online (Sandbox Code Playgroud)
在上面的程序中,我在一个函数中打开一个文件描述符并传递给其他函数.这工作正常.
fp1在函数openfile()的本地声明.因为我们传递地址,从主函数我能够使用文件指针结构.
我的问题是FILE结构存储在哪里?结构的范围是什么?
使用的代码
#include<stdio.h>
struct st
{
char a;
short c;
int b;
};
struct st s1;
int main()
{
printf("%p %p \n",(&s1.b)-1, &s1);
}
Run Code Online (Sandbox Code Playgroud)
如果我打印&s1.b它的地址打印0x804a01c并&s1.b-2打印0x804a018
为什么它打印相同的地址,0x804a01c如果我选择&s1.b-1?