100分求解简单C语言题,该如何处理
100分求解简单C语言题
1)为什么net只创建一个空窗体就占用10M内存呢?那其他软件,为什么只占那么少的内存呢?他们怎么实现的呢?
2)include 命令包含头文件时,会不会因为包含的头文件过多,而导致程序编译后占用更多空间?
3)
#include <stdio.h>
int main(void)
{
//为什么结果为-2147483648, 会的人讲解下原理
printf( "%d ", 2 < < 30);
return 0;
}
4)编一函数用来实现左右循环移位. move(value, n), n < 0表示为左移, n > 0为右移, 要能在VC6编译通过
------解决方案--------------------
应该是:
3)
2: 0x00000002
左移30位后
0x10000000
就是-2147483648
------解决方案--------------------
int move(int value, int n)
{
if (n> =0)
{
return value> > n | value < <(sizeof(int)*8 - n);
}
else
{
return value < <(-n) | value> > (sizeof(int)*8 -(-n));
}
}
------解决方案--------------------
1) believefym(feng)
2) 会。但是没有想像那么多,只是在链接时将用到的调用或数据编进。
3) 左移后,2的31次方刚好导致其最高位(符号位)为1,即-2147483648。
4) believefym(feng)
------解决方案--------------------
不会因为包含的文件多而使目标代码过长,因为#命令是在预处理是进行的。
1)为什么net只创建一个空窗体就占用10M内存呢?那其他软件,为什么只占那么少的内存呢?他们怎么实现的呢?
2)include 命令包含头文件时,会不会因为包含的头文件过多,而导致程序编译后占用更多空间?
3)
#include <stdio.h>
int main(void)
{
//为什么结果为-2147483648, 会的人讲解下原理
printf( "%d ", 2 < < 30);
return 0;
}
4)编一函数用来实现左右循环移位. move(value, n), n < 0表示为左移, n > 0为右移, 要能在VC6编译通过
------解决方案--------------------
应该是:
3)
2: 0x00000002
左移30位后
0x10000000
就是-2147483648
------解决方案--------------------
int move(int value, int n)
{
if (n> =0)
{
return value> > n | value < <(sizeof(int)*8 - n);
}
else
{
return value < <(-n) | value> > (sizeof(int)*8 -(-n));
}
}
------解决方案--------------------
1) believefym(feng)
2) 会。但是没有想像那么多,只是在链接时将用到的调用或数据编进。
3) 左移后,2的31次方刚好导致其最高位(符号位)为1,即-2147483648。
4) believefym(feng)
------解决方案--------------------
不会因为包含的文件多而使目标代码过长,因为#命令是在预处理是进行的。