鱼C论坛

 找回密码
 立即注册
查看: 1063|回复: 9

[已解决]为啥小甲鱼的课后作业都是上课没讲的

[复制链接]
发表于 2022-3-10 19:53:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
unsigned long long sum = 0;
unsigned long long temp;
unsigned long long weight;
这些完全都看不懂啊

uTools_1646913151743.png

最佳答案
2022-3-10 21:54:28
在第 6 讲数据类型中,整一节课都在讲这个,为什么说没讲过呢?

我重新翻看一下视频,下面内容是视频中涉及到该知识点的讲解:

我们可以为这些基本数据类型加上一些限定符,比如表示长度的 short 和 long。

比如 int 经过限定符修饰之后,可以是 short int,long int,还可以是 long long int,其中的 long long int 是 C99 新增加的。

这里需要说的是,这里 C 语言并没有限制 int 的坑具体要挖多大,short int 或l ong int 的坑又要挖多大。标准只是要求:short int <= int <= long int <= long long int。

这样约定的好处就是使得 C 语言可以永垂不朽,这么说其实一点都不夸张。

我们现在的 CPU 是 64 位为主流,也可以预测到不久的将来会推出 128 位甚至 256 位的 CPU。

但是在 C 语言刚刚发明的时候,那时候 CPU 还是 8 位和 16 位为主。如果那时候就将整型写死为 8 位或 16 位,那么肯定现在我们就不会来学习 C 语言了。

虽然你现在还不了解 8 位和 64 位对于一个程序来说意味着什么,但光听这数字的差距,都觉得 8 为很 LOW 了,对不对?!

那既然没有规定一个坑要挖多大,那我怎么知道这个坑到底有多大?C 语言为此提供了一个特殊的运算符:sizeof 运算符。
#include <stdio.h>

int main()
{
        printf("int = %d\n", sizeof(int));
        printf("short int = %d\n", sizeof(short));
        printf("long int = %d\n", sizeof(long));
        printf("long long int = %d\n", sizeof(long long));
        printf("char = %d\n", sizeof(char));
        printf("_Bool = %d\n", sizeof(_Bool));
        printf("float = %d\n", sizeof(float));
        printf("double = %d\n", sizeof(double));
        printf("long double = %d\n", sizeof(long double));

        return 0;
}

[fishc@localhost s1e6]$ gcc test2.c && ./a.out
int = 4
short int = 2
long int = 4
long long int = 8
char = 1
_Bool = 1
float = 4
double = 8
long double = 12

还有一对类型限定符是 signed 和 unsigned,它们用于限定 char 类型和任何整型变量的取值范围。

signed 表示该变量是带符号位的,而 unsigned 表示该变量是不带符号位的。

带符号位的变量可以表示负数,而不带符号位的变量只能表示正数,它的存储空间也就相应扩大一倍。

默认所有的整型变量都是 signed 的,也就是带符号位的。

因此加上 signed 和 unsigned 限定符,四种整型就变成了八种:

  • [signed] short [int]
  • unsigned short [int]
  • [signed] int
  • unsigned int
  • [signed] long [int]
  • unsigned long [int]
  • [signed] long long [int]
  • unsigned long long [int]


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 20:24:26 | 显示全部楼层
64位无符整型
unsigned long long 取值范围:0~18446744073709551615
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-10 21:54:28 | 显示全部楼层    本楼为最佳答案   
在第 6 讲数据类型中,整一节课都在讲这个,为什么说没讲过呢?

我重新翻看一下视频,下面内容是视频中涉及到该知识点的讲解:

我们可以为这些基本数据类型加上一些限定符,比如表示长度的 short 和 long。

比如 int 经过限定符修饰之后,可以是 short int,long int,还可以是 long long int,其中的 long long int 是 C99 新增加的。

这里需要说的是,这里 C 语言并没有限制 int 的坑具体要挖多大,short int 或l ong int 的坑又要挖多大。标准只是要求:short int <= int <= long int <= long long int。

这样约定的好处就是使得 C 语言可以永垂不朽,这么说其实一点都不夸张。

我们现在的 CPU 是 64 位为主流,也可以预测到不久的将来会推出 128 位甚至 256 位的 CPU。

但是在 C 语言刚刚发明的时候,那时候 CPU 还是 8 位和 16 位为主。如果那时候就将整型写死为 8 位或 16 位,那么肯定现在我们就不会来学习 C 语言了。

虽然你现在还不了解 8 位和 64 位对于一个程序来说意味着什么,但光听这数字的差距,都觉得 8 为很 LOW 了,对不对?!

那既然没有规定一个坑要挖多大,那我怎么知道这个坑到底有多大?C 语言为此提供了一个特殊的运算符:sizeof 运算符。
#include <stdio.h>

int main()
{
        printf("int = %d\n", sizeof(int));
        printf("short int = %d\n", sizeof(short));
        printf("long int = %d\n", sizeof(long));
        printf("long long int = %d\n", sizeof(long long));
        printf("char = %d\n", sizeof(char));
        printf("_Bool = %d\n", sizeof(_Bool));
        printf("float = %d\n", sizeof(float));
        printf("double = %d\n", sizeof(double));
        printf("long double = %d\n", sizeof(long double));

        return 0;
}

[fishc@localhost s1e6]$ gcc test2.c && ./a.out
int = 4
short int = 2
long int = 4
long long int = 8
char = 1
_Bool = 1
float = 4
double = 8
long double = 12

还有一对类型限定符是 signed 和 unsigned,它们用于限定 char 类型和任何整型变量的取值范围。

signed 表示该变量是带符号位的,而 unsigned 表示该变量是不带符号位的。

带符号位的变量可以表示负数,而不带符号位的变量只能表示正数,它的存储空间也就相应扩大一倍。

默认所有的整型变量都是 signed 的,也就是带符号位的。

因此加上 signed 和 unsigned 限定符,四种整型就变成了八种:

  • [signed] short [int]
  • unsigned short [int]
  • [signed] int
  • unsigned int
  • [signed] long [int]
  • unsigned long [int]
  • [signed] long long [int]
  • unsigned long long [int]


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-11 17:42:31 | 显示全部楼层
小甲鱼 发表于 2022-3-10 21:54
在第 6 讲数据类型中,整一节课都在讲这个,为什么说没讲过呢?

我重新翻看一下视频,下面内容是视频中 ...

哇,我是真的没有想到小甲鱼本人居然亲自回我了,可是我还是不是很懂,关于short还有long、long long这些限定符我在课上是有做笔记的,还有关于signed和unsigned限定符这个我也是知道的,因为课上确实讲了,我不懂的是,比如unsigned long long sum = 0;这个一整天连起来是什么意思,不是很懂sum是什么意思,还有什么for(i=0; i<64 ,i ++)这些,因为我确实是纯萌新,甚至电脑都没怎么用,课后作业除了这最后一题其他的都完美做出来了,我也是刚学完第六课,数据类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-12 20:09:05 | 显示全部楼层
小甲鱼 发表于 2022-3-10 21:54
在第 6 讲数据类型中,整一节课都在讲这个,为什么说没讲过呢?

我重新翻看一下视频,下面内容是视频中 ...

我今天又回去看了一遍,现在除了for(i=0; i<64 ,i ++)这个看不懂以外,其他都看懂啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-13 04:38:53 | 显示全部楼层
1613551 发表于 2022-3-11 17:42
哇,我是真的没有想到小甲鱼本人居然亲自回我了,可是我还是不是很懂,关于short还有long、long long这些 ...

是这样的,类似于 int sum = 0; int 是挖个 int 尺寸的坑,sum 是变量名,也就是这个坑的名字,sum = 0 就是将 0 这个数字扔到坑里面。

那么同样的道理呀,unsigned long long sum = 0; 就是挖了一个 unsigned long long 尺寸的坑……

for(i=0; i < 64; i++) 在后面讲解循环的时候才会讲到,这个并不是题目的考核点呀,因为还没有讲过,所以这道题才以挖空填空的方式出题。

解题的方式就是:根据提示,用所学的知识去填空,推理得到正确的答案。

换个角度考虑,你是出题者,截至第六讲就教了一个打印语句和几个类型,如果想要出难题又不超纲,你会怎么做才使得题目有意思?让大家做起来更有成就感?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-13 16:16:27 | 显示全部楼层
小甲鱼 发表于 2022-3-13 04:38
是这样的,类似于 int sum = 0; int 是挖个 int 尺寸的坑,sum 是变量名,也就是这个坑的名字,sum = 0  ...

对不起,是我冤枉你了,我题目没有看完,我只看了题目,没有看到后面提供的大部分代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-13 16:22:50 | 显示全部楼层
小甲鱼 发表于 2022-3-13 04:38
是这样的,类似于 int sum = 0; int 是挖个 int 尺寸的坑,sum 是变量名,也就是这个坑的名字,sum = 0  ...


ó﹏ò已经这么多人看了,他们不会质疑小甲鱼吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-13 19:52:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-3 17:20:59 | 显示全部楼层
小甲鱼 发表于 2022-3-13 04:38
是这样的,类似于 int sum = 0; int 是挖个 int 尺寸的坑,sum 是变量名,也就是这个坑的名字,sum = 0  ...

呜呜呜,小甲鱼为啥我发不了帖子了,我连续发了三个都给吞了,因为我问题太多,然后还特别低级吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 16:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表