|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
看完小甲鱼的S1E6数据类型课程后做课后练习 最后一个动动手,需要声明4个变量 sum temp weight i 我的方法是:
unsigned long long int sum;
unsigned long int temp;
unsigned long long int weight;
int i;
结果编译过不了,因为没有初始化sum变量, 我觉得是程序里没有给这个变量赋值,我也看不懂小甲鱼下面透出的程序,所以看了下答案.
小甲鱼的方案是:
unsigned long long int sum = 0;
unsigned long long int temp;
unsigned long long int weight;
int i;
for (i = 0; i < 64; i++);
{
temp = pow(2, i);
sum = sum + temp;
}
到这里我有了2个问题:
一. 为什么要给sum赋值0呢 (如果只是单纯的0我觉得都不需要这个变量)
二.我在调试时发现我使用 long int 会溢出 结果是0,我用sizeof指令查看发现 long int 和int 大小是一样的都是4,这又是为什么呢?
望大佬解答下 谢谢
一、若sum不赋初值的话,在for循环内,sum=sum+temp,会报错,没有赋值就进行运算是不对的。初值为0,加多少就是多少,这才能进行求和运算啊。
二、int的宽度与系统和编译器有关。有的系统是4字节,与long int 一样;有的系统是2字节,与short int 一样。所以不确定的时候最好用long int 或short int ,因为它们的范围是固定的。
|
|