目录
1、数据类型
2、short 和 long
3. sizeof 运算符
4. signed 和 unsigned
5、课后习题(编程题)
1、数据类型
在 C 语言里,所谓的数据类型就是坑的大小。我们说变量就是在内存里边挖一个坑,然后给这个坑命名。那么数据类型指的就是这个坑的尺寸。C 语言允许使用的类型如下:
2、short 和 long
我们可以为这些基本数据类型加上一些限定符,比如表示长度的 short 和 long。比如 int 经过限定符修饰之后,可以是 short int,long int,还可以是 long long int(这个是 C99 新增加的)。
这里需要说的是,这里 C 语言并没有限制 int 的坑具体要挖多大,short int 或 long int 的坑又要挖多大。标准只是要求:short int <= int <= long int <= long long int。
3. sizeof 运算符
sizeof 用于获得数据类型或表达式的长度,它有三种使用方式:
-
sizeof(type_name); //sizeof(类型);
-
sizeof(object); //sizeof(对象);
-
sizeof object; //sizeof 对象;
4. signed 和 unsigned
还有一对类型限定符是 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]
5、课后习题(编程题)
第一题
求 1^2 + 2^3 + 3^4 + 4^5 + 5^6 的值?
代码
#include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(1,2)+pow(2,3)+pow(3,4)+pow(4,5)+pow(5,6);
printf("结果是:%d\n",result);
return 0;
}
结果
第二题
相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着 8 * 8 共 64 格的象棋说:“陛下,请您赏给我一些麦子吧。就在棋盘的第 1 格放 1 粒,第 2 格放 2 粒,第三格放 4 粒,以后每一格都比前一格增加一倍,依此放完棋盘 64 格,我就感激不尽了。”。舍罕王听了达依尔这个“小小”的要求,想都没想就满口答应下来。
结果在给达依尔麦子时舍罕惊奇地发现要给的麦子比自己想象的要多得多,于是他进行了计算,结果令他大惊失色。请问,舍罕王要兑现他的许诺共要多少粒麦子赏赐他的宰相?如果每25000粒麦子重1kg,那么舍罕王应该给予达依尔多少公斤麦子?
代码
#include <stdio.h>
#include <math.h>
int main()
{
int i;
unsigned long long int temp;
unsigned long long int weight;
unsigned long long int sum = 0;
for(i=0; i<64; i++)
{
temp = pow(2,i);
sum = sum + temp;
}
weight = sum /25000;
printf("舍罕王应该给予达依尔%llu粒麦子!\n",sum);
printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n",weight);
return 0;
}
结果