JianHaoDaDa 发表于 2020-6-10 16:26:43

萌新求问:关于数据类型尺寸的问题 大佬有兴趣解答下好嘛谢谢

看完小甲鱼的S1E6数据类型课程后做课后练习 最后一个动动手,需要声明4个变量 sum temp weighti 我的方法是:

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,这又是为什么呢?

望大佬解答下 谢谢{:5_104:}

JianHaoDaDa 发表于 2020-6-10 16:28:53

使用的平台是 vs2019 c

JianHaoDaDa 发表于 2020-6-10 16:29:50

这个提问悬赏在哪里选? 我找了半天,也不能总白嫖大佬 哈哈{:5_109:}

qiuyouzhi 发表于 2020-6-10 16:30:21

1,你用变量都不初始化的吗?直接拿个随机值加?
2,或许是编译器问题?

JianHaoDaDa 发表于 2020-6-10 16:37:44

大佬们好快..我看不懂小甲鱼下面的for程序什么意思,而且我也不太明白初始化变量是什么意思.容我百度下,无果再来问问大佬们 再次感谢{:5_104:}

sunrise085 发表于 2020-6-10 16:39:04

一、若sum不赋初值的话,在for循环内,sum=sum+temp,会报错,没有赋值就进行运算是不对的。初值为0,加多少就是多少,这才能进行求和运算啊。
二、int的宽度与系统和编译器有关。有的系统是4字节,与long int 一样;有的系统是2字节,与short int 一样。所以不确定的时候最好用long int 或short int ,因为它们的范围是固定的。

JianHaoDaDa 发表于 2020-6-10 16:51:25

感谢大佬们解答 ,有种茅塞顿开的感觉 ,额我尝试理解下 :

一, for指令内是循环求和,类似子程序
二, 变量参与运算需要先赋值, 而赋值的过程称为初始化变量
三,尺寸长度与电脑和编译器有关,并不是固定的,只是大小顺序关系是一定的.

OKOK小本本记下来 过几天学到for指令肯定能理解的更透彻了 再次感谢大佬们 I love Fishc C!
页: [1]
查看完整版本: 萌新求问:关于数据类型尺寸的问题 大佬有兴趣解答下好嘛谢谢